UP | HOME

Vim

Table of Contents

VIM乃一大神器也。

1 VIM基本使用

该页面主要介绍我经常需要用到的关于vim操作的一些笔记。

1.1 基本移动

  • 0 — 到行头
  • ^ — 本行第一个非blank字符
  • $ — 行尾
  • fa — 到下一个为a的字符处
  • ta — 到下一个为a的字符前
  • F,T — 同上,方向相反

1.2 区域选择

在visual 模式下,这些命令很强大,其命令格式为

<action>a<object> 和 <action>i<object>

action可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择)。

object 可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:"、 ‘、 )、 }、 ]。

假设你有一个字符串 (map (+) (“foo”)).而光标键在第一个 o 的位置。

  • vi” → 会选择 foo.
  • va” → 会选择 “foo”.
  • vi) → 会选择 “foo”.
  • va) → 会选择(“foo”).
  • v2a) → 会选择 (map (+) (“foo”))

1.3 块操作

块操作,典型的操作: 0 <C-v> <C-d> I– [ESC]

  • ^ → 到行头
  • <C-v> → 开始块操作
  • <C-d> → 向下移动 (你也可以使用hjkl来移动光标,或是使用%,或是别的)
  • I– [ESC] → I是插入,插入“–”,按ESC键来为每一行生效。
  • $ A – [ESC] -> 行后加字符串–

1.4 分割窗口

1.4.1 命令

  • :split —将一个文件分成上下两个窗口,可用来看一个文件的不同部分
  • :close —关闭窗口
  • :only -—关闭其他所有窗口
  • :split two.c —用另一个文件分割窗口
  • :new -— 新窗口编辑新文件
  • :nsplit -— 设置窗口高度,n为数值
  • :vsplit -—在左边打开新窗口
  • :vnew

1.4.2 窗口间跳转

  • CTRL-W w —窗口间轮流跳转
  • CTRL-w h —跳左
  • CTRL-W j —跳下
  • CTRL-W k —跳上
  • CTRL-W l —跳右

1.4.3 窗口移动

  • CTRL-W K —当前窗口移到最上
  • #其他三个相似

1.4.4 所有窗口指令

  • :wall —保存 所有
  • :qall —全部退出
  • vim -o one.txt two.txt three.txt —o参数为每个文件打开个窗口

1.5 标签页

1.5.1 命令

  • :tabedit one.c —新标签打开一个文件
  • gt — 窗口间跳转
  • :tab 命令 -— 新标签执行命令
  • :tabonly -—你猜~

1.6 复制粘贴

Vim有12个粘贴版,分别是0,1,…,9,a,”,+,用:reg可查看各剪贴板里的内容,其中"粘贴板是最常用的,y和p命令都是操作的这个粘贴版。另一个特殊的粘贴板是+粘贴板,这是系统粘贴板。

使用方法:

  • 复制:`"Ny`(N为粘贴板符号)
  • 粘贴: `"Np`

2 VIM插件

2.1 vim插件nerdtree

NERDTree是文件浏览器边栏,在处理大项目,有很多文件时,该插件的功能会比较舒服。

2.1.1 常用的快捷键

  • o: 打开文件/预览节点
  • t:在新标签中打开
  • T:在新标签中打开(不自动跳转过去)
  • (g)i: (预览)水平分割打开
  • s:垂直分割打开
  • x:关闭父节点
  • X:关闭所有子节点
  • e:探索该目录
  • D:删除该书签
  • P:跳到根节点
  • p:跳到父节点
  • <C-j>:跳到下一个兄弟节点
  • <C-k>:跳到上一个兄弟节点
  • C:改变根节点为当前目录
  • u:向上移动根节点一层
  • R:刷新当前根节点
  • I:显示/隐藏隐藏文件
  • B:关闭/显示书签
  • q:关闭NERDTree窗户
  • A:最大化NERDTree窗口
  • :Bookmark <name>:添加书签
  • :ClearBookmark <name>:删除书签
  • :ClearAllBookmarks: 删除所有书签

2.1.2 我的配置

"NERD Tree
let NERDChristmasTree=1
let NERDTreeAutoCenter=1
let NERDTreeMouseMode=2
let NERDTreeBookmarksFile='/home/li/.vim/Data/NerdTreeBookmarks.txt'
let NERDTreeShowBookmarks=1
let NERDTreeShowFiles=1
let NERDTreeShowHidden=0
let NERDTreeShowLineNumbers=1
let NERDTreeWinPos='left'
let NERDTreeWinSize=31
nnoremap f :NERDTreeToggle<cr>

3 vim-config

3.1 我的配置文件

3.2 快捷键设置

  • 显示/隐藏NERDTree:f
  • Vimwiki:
    • 进入wiki index:<Leader>ww
    • 新建日记:<Leader>w<Leader>w
    • 更新日记目录:<Leader>w<Leader>i
    • 标记已完成:<Leader>tt
  • 显示日历:<F8>
  • 插入日期:<F10>
  • 全选:<C-A>

Author: Jonathan

Created: 2017-02-22 周三 10:37

Emacs 24.3.50.3 (Org mode 8.0.3)

Validate