vim 和 emacs 一个号称编辑器之神,一个被称为神的编辑器。打开 vim 执行命令:vimtutor 则可以查看官方说明教程,vimtutor是vim使用入门教程。老实说,自从接触vim到现在也有好多年了,但一直没有强迫自己使用,以及它的难定制性,让我至今都还无法像那些大神一样,完全脱离鼠标和IDE,本文只对 vim 最基础和常用的部分进行详细讲解,不涉及定制和插件等部分内容。
普通模式的操作: [数字] command motion,数字代表了后面实际操作执行的次数;command 是执行命令,如:复制,粘贴,剪切等;motion 是操作符,代表了执行命令的操作范围就是定位命令如:i,j,k,l,G等等。
普通模式是任何模式的中继,虽然普通模式下你只能通过一些命令进行简单的操作,但如果你想从某个模式进入另外一个模式都必须要先进入普通模式,如:从插入模式进入可视模式,必须先按 esc 进入普通模式,然后按 v 进入可视模式。
移动
在普通模式下,可以用键盘实现光标的移动,h j k l 分别代表光标的 左 下 上 右 的移动。请按 esc 键(这是为了确保您处在正常模式)。
- h 的键位于左边,每次按下就会向左移动。
- l 的键位于右边,每次按下就会向右移动。
- j 键看起来很象一支尖端方向朝下的箭头。
- k 朝上移动。
- gg 跳到首行
- G 跳到末行
退出
在命令模式下,在普通模式中,输入冒号则进入命令行模式:
- 输入 w 则保存
- 输入 q 则退出该软件
- 输入 wq 保存并退出
- 输入 q! 强制退出。
删除
在普通模式下,删除单一字符可以使用 x 命令,如果删除更多字符则可以使用 d 命令:d motion
。
motion 表示操作范围的指令,一下内容再次出现的 motion 都参见这边的表格:
按键 | 定义 |
---|---|
0 | 将光标定位到行首位置 |
$ | 光标定位到行尾位置 |
b | 将光标定位到光标所在单词的起始处 |
e | 将光标定位到光标所在单词的结尾处 |
w | 将光标定位到下一个单词的起始处 |
gg | 将光标定位到文件开头 |
G | 将光标定位到文件结尾 |
如果删除更多字符则可以使用 c 命令:c motion
,和 d 命令类似,区别是删除后,进入插入模式。
vim 中所有的删除都相当于剪切,并不是真正意义上的删除,所以一旦粘贴的话往往会是你所删除的那些内容。
复制
在普通模式下,可以使用 y 命令:y [数字] motion
。复制的操作和删除类似,学习 vim 时尤其需要注意这些共性。
vim有12个粘贴板,分别是 0、1、2、...、9、a、"、+
用 :reg 命令可以查看各个粘贴板里的内容。下面讲一下vim的粘贴板的基础知识:
- +号粘贴板是系统粘贴板,用 "+y 将内容复制到该粘贴板后可以使用 Ctrl+V 将其粘贴到其他文档(如firefox、gedit)中,同理,要把在其他地方用 Ctrl+C 或右键复制的内容复制到 vim 中,需要在正常模式下按 "+p 。
- " 号粘贴板(临时粘贴板)比较特殊,直接按 y 就复制到这个粘贴板中了,直接按 p 就粘贴这个粘贴板中的内容;
- 要将vim某个粘贴板里的内容粘贴进来,需要退出编辑模式,在正常模式按"Np,其中N为粘贴板号,如上所述,可以按"5p将5号粘贴板里的内容粘贴进来,也可以按"+p将系统全局粘贴板里的内容粘贴进来。
粘贴
p 将最后一次剪切或者复制的内容,粘贴到光标之后;P 将最后一次剪切或者复制的内容,粘贴到光标之前。
撤销
在普通模式下,u 表示撤销最后一次修改,U 撤销整行的修改,ctrl+r 恢复撤销的内容。
插入
在普通模式下进入插入模式,可以使用以下指令:
- i:光标前插入
- I :行首插入
- a:光标后插入
- A:行尾插入
可视
出了插入,普通,命令模式外,还有可视模式,通过 v 和 V 进入该模式。
跳转
跳转到指定行:
- 普通模式下输入:行号+G
- 进入命令行模式:
:行号
搜索
查找光标所指向的单词,直接 shift+*
即可高亮。
输入/内容,则会匹配所有相关内容,按 n 搜索下一个匹配, 按 N 搜索上一个匹配。
搜索诸如:. * [ ] ^ % / ? ~ $
等,需要在前面加上 \ 转义字符。
取消搜索的高亮,则可以输入:nohl
(nohighlight的缩写)。
替换
- :s/原内容/替换 : 光标后找到第一匹配内容并替换
- :%s/原内容/替换 : 请示替换内容
- :1,10s/原内容/替换/g : 1-10 行的所有内容进行替换
多窗口
打开 vim 时,输入 vim -o a b c 可以并排打开三个文件,使用 ctrl + w + w 切换到下个窗口,也可以使用 ctrl + w + 方向按键进行切换。