Vim key-map

  我个人对Vim的强大其实并不是太熟悉,只是勉强会用一些基本的操作(甚至都算不上基本)。但是Mac上最方便的编辑器大概就是Vim了,所以还是决定记录一下常用的Vim命令,多用总会慢慢熟练的。

退出命令

  • :wq 保存并退出
  • ZZ 保存并退出
  • :q! 强制退出并忽略所有更改
  • :e! 放弃所有修改,并打开原来文件。

插入命令

  • i 在当前位置生前插入
  • I 在当前行首插入
  • a 在当前位置后插入
  • A 在当前行尾插入
  • o 在当前行之后插入一行
  • O 在当前行之前插入一行

光标移动

  • h j k l :左 下 上 右
  • w:光标以单词向后移动
  • nw:光标向前后动n个单词 光标到单词的第一个字母上
  • b:与w相反,以单词向前移动
  • $:移动光标到行尾
  • n$:移动到第n行的行尾
  • 0(数字):移动光标到行首
  • %:移动到与制匹配的括号上去(),{},[],<>等
  • nG:移动到第n行上
  • G:移动到最后一行
  • gg:移动到文件开头

查找命令

  • /word  查找word,按n健查找下一个,按N健查找前一个。
  • ?word  查找word,反向查找,按n健查找下一个,按N健查找前一个。
  • 查找很长的词,如果一个词很长,键入麻烦,可以将光标移动到该词上,按*#键即可以该单词进行搜索,相当于/搜索。而#命令相当于?搜索。

替换命令

  • ra 将当前字符替换为a,当期字符即光标所在字符。
  • :s/old/new/ 用old替换new,替换当前行的第一个匹配
  • :s/old/new/g 用old替换new,替换当前行的所有匹配
  • :%s/old/new/ 用old替换new,替换所有行的第一个匹配
  • :%s/old/new/g 用old替换new,替换整个文件的所有匹配
  • :10,20 s/^/ /g 在第10行知第20行每行前面加四个空格,用于缩进。
  • ddp 交换光标所在行和其下紧邻的一行。

撤消和重做

  • u 撤销(Undo)
  • U 撤销对整行的操作
  • Ctrl + r 重做(Redo),即撤销的撤销。

删除命令

  • dl 删除当前字符, dl=x
  • dh 删除前一个字符
  • dd 删除当前行
  • dj 删除上一行
  • dk 删除下一行
  • 10d 删除当前行开始的10行。
  • D 删除当前字符至行尾。D=d$
  • d$ 删除当前字符之后的所有字符(本行)
  • kdgg 删除当前行之前所有行(不包括当前行)
  • jdG(jd shift + g) 删除当前行之后所有行(不包括当前行)
  • :1,10d 删除1-10行
  • :11,$d 删除11行及以后所有的行
  • :1,$d 删除所有行

复制和粘贴

  • yy 拷贝当前行
  • nyy 拷贝当前后开始的n行,比如2yy拷贝当前行及其下一行。
  • p 在当前光标后粘贴,如果之前使用了yy命令来复制一行,那么就在当前行的下一行粘贴。
  • shift+p 在当前行前粘贴
  • :1,10 co 20 将1-10行插入到第20行之后。
  • :1,$ co $ 将整个文件复制一份并添加到文件尾部。
  • 正常模式下按v(逐字)或V(逐行)进入可视模式,然后用jklh命令移动即可选择某些行或字符,再按y即可复制
  • ddp 交换当前行和其下一行
  • xp 交换当前字符和其后一个字符

剪切命令

  • 正常模式下按v(逐字)或V(逐行)进入可视模式,然后用jklh命令移动即可选择某些行或字符,再按d即可剪切
  • ndd 剪切当前行之后的n行。利用p命令可以对剪切的内容进行粘贴
  • :1,10d 将1-10行剪切。利用p命令可将剪切后的内容进行粘贴。
  • :1, 10 m 20 将第1-10行移动到第20行之后。