1.Mac,安装MacVim
安装:brew install macvim
说明:MacVim 是图形程序,将 VIM 无坚不摧的底层近乎完美的呈现在 Mac 平台,同时整合多标签、背景透明、颜色主题等现代功能,是程序员、开发者、折腾帝、专业码字者、Vi 信仰控在 Mac 平台上的不二之选。
2.进入Vi/Vim
vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑
3.常用命令(命令行模式,非插入状态)
VIM 的强大之处在于他的命令行模式!
冒号+命令+回车:使用命令
在非插入状态下,直接输入命令
VIM 则提供了很多强大的命令来满足你控制光标的欲望。当光标从一点移动到另外一点,在这两点之间的文本(包括这两个点)称作被“跨过”,这里的命令也被称作是 motion。
撤销、恢复、后退、前进
u 撤销上一步的操作 Ctrl+r 恢复上一步被撤销的操作 Ctrl+O 后退 Ctrl+I 前进
移动光标 (motion)
h j k l 左、下、上、右箭头的功能 space 右移一位 Backspace 左移一位 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾 ) :光标移至句尾 移动光标到下一个句子 ( :光标移至句首 移动光标到上一个句子 }:光标移至段落开头 {:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 n$:光标移至第n行尾 H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 ^:移动光标到当前行的第一个字母位置。 fx:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。 tx:和上面的命令类似,但是是移动到 x 的左边一个位置。(这真的很有用) Fx:和 fx 类似,不过是往回找。 G:到文件尾 gg:到文件首 *:读取光标处的字符串,并且移动光标到它再次出现的地方。 #:和上面的类似,但是是往反方向寻找。 ma:在当前光标的位置标记一个书签,名字为 a。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了 `a:到书签 a 处。注意这个不是单引号,它一般位于大部分键盘的 1 的左边。 `.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。
屏幕翻滚
Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
插入文本
i=insert、a=append、r=replace
c=change、d=delete
i:在光标前 I:在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符 R:替换当前字符及其后的字符,直至按ESC键 s:从当前光标位置处开始,以输入的文本替代指定数目的字符 S:删除指定数目的行,并以所输入文本代替之 ncw或nCW:修改指定数目的字 nCC:修改指定数目的行 c{motion}:删除 motion 命令跨过的字符,并且进入插入模式。比如:c$,这将会删除从光标位置到行尾的字符并且进入插入模式。ct!,这会删除从光标位置到下一个叹号(但不包括),然后进入插入模式。被删除的字符被存在了剪贴板里面,并且可以再粘贴出来。 d{motion}:和上面差不多,但是不进入插入模式。
删除
ndw或ndW:删除光标处开始及其后的n-1个字 do:删至行首 d$:删至行尾 ndd:删除当前行及其后n-1行 x或X:删除一个字符,x删除光标后的,而X删除光标前的 Ctrl+u:(在插入状态)删除输入方式下所输入的文本
搜索替换
/text:从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话,按 n。 ?text:和上面类似,但是是反方向。 n:在同一方向重复上一次搜索命令 N:在反方向上重复上一次搜索命令 :s/p1/p2/g:将当前行中所有p1均用p2替代 :n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代 :g/p1/s//p2/g:将文件中所有p1均用p2替换
最后行方式
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下 :n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下 :n1,n2 d :将n1行到n2行之间的内容删除 :w :保存当前文件 :e filename:打开文件filename进行编辑 :x:保存当前文件并退出 :q:退出vi :q!:不保存文件并退出vi :!command:执行shell命令command :n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入 :r!command:将命令command的输出结果放到当前行
4.高效输入
使用关键词自动完成
Ctrl+n或Ctrl+p: 先输入开始几个字母(比如 iAmAL),然后按 <Ctrl+n>(按住 Ctrl,再按 n)或者 <Ctrl+P>。 如果 VIM 没有给出你想要的词,继续按,直到你满意为止,VIM 会一直循环它找到的匹配的字符串。
有效的移动大段的文本
使用可视选择(visual selections)和合适的选择模式
这里有三种可视选择模式:
v:按字符选择。经常使用的模式,所以亲自尝试一下它。 V:按行选择。这在你想拷贝或者移动很多行的文本的时候特别有用。 <C-V>:按块选择。非常强大,只在很少的编辑器中才有这样的功能。你可以选择一个矩形块,并且在这个矩形里面的文本会被高亮。
在选择模式的时候使用上面所述的方向键和命令(motion)。比如,vwww,会高亮光标前面的三个词。Vjj 将会高亮当前行以及下面两行。
在可视选择模式下剪切和拷贝
d:剪贴选择的内容到剪贴板。 y:拷贝选择的内容到剪贴板。 c:剪贴选择的内容到剪贴板并且进入插入模式。
在非可视选择模式下剪切和拷贝
d{motion}:剪切 motion 命令跨过的字符到剪贴板。比如,dw 会剪切一个词而 dfS 会将从当前光标到下一个 S 之间的字符剪切至剪贴板。 y{motion}:和上面类似,不过是拷贝。 c{motion}:和 d{motion} 类似,不过最后进入插入模式。 dd:剪切当前行。 yy:拷贝当前行。 cc:剪切当前行并且进入插入模式。 D:剪切从光标位置到行尾到剪贴板。 Y:拷贝当前行。 C:和 D 类似,最后进入插入模式。 x:剪切当前字符到剪贴板。 s:和x类似,不过最后进入插入模式。
粘贴
p: 粘贴
使用多重剪贴板
很多编辑器都只提供了一个剪贴板。VIM 有很多。剪贴板在 VIM 里面被称为寄存器(Registers)。你可以列出当前定义的所有寄存器名和它们的内容,命令为“:reg”。最好使用小写字母来作为寄存器的名称,因为大写的有些被 VIM 占用了。
使用寄存器的命令为双引号 “。
比如:我们要拷贝当前行到寄存器 k。你应该按 “kyy。(你也可以使用 V”ky。为什么这样也可以呢?)现在当前行应该已经存在了寄存器 k 里面直到你又拷贝了一些东西进入寄存器 k。现在你可以使用命令 “kp 来粘贴寄存器 k 里面的内容到你想要的位置。
"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字 "?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字 "?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字 "?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字 ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。
避免重复
令人惊奇的 . 命令
在 VI 里面,输入 . (小数点符号),将会重复你输入的上一个命令。比如,你上个命令为“dw”(删除一个词),VI 将会接着再删除一个词。
使用数字
使用数字也是 VIM 强大的而且很节省时间的重要特性之一。在很多 VIM 的命令之前都可以使用一个数字,这个数字将会告诉 VIM 这个命令需要执行几次。比如:
3j 将会把光标向下移动三行。
10dd 将会删除十行。
y3″ 将会拷贝从当前光标到第三个出现的引号之间的内容到剪贴板。
数字是扩展 motion 命令作用域非常有效的方法。