hengrjgc 2011-02-03
读本文之前请注意:
1、本文的目标是提供一些vim的使用技巧,利用这些技巧可以提高vim的操作效率。部分技巧在vi上也可以使用,但是现在基本上都是用vim了。
2、本文是整理和总结使用技巧,而非讲解vim入门,因此不会涉及最基本的使用,例如如何上移或下移光标,对此类操作请参阅任何一本vim或者vi教程。
3、本文阅读对象是了解了vim的基本操作,而希望高效地利用vim进行工作的人。熟练使用vim的人自然不必细读,如果能留下您的宝贵意见,本人将感激不尽。
4、本文由本人搜集整理,转载请注明出处。
本文一般情况下用<C-字母>(里边的字母一般大小写无所谓,除非特别注明)表示按住ctrl同时按下相关字母,命令前加一个i表示在插入模式下用这个命令。
1. 选定文字/拷贝粘贴
v 为可视模式,可以选定多行。选定多行之后,可以用yy或者dd等等进行拷贝和剪切。
p 是粘贴。
y/d 可以直接拷贝或者剪切选定的内容。
yw 是拷贝一个单词。
如果要复制整行的最简单办法就是V->y->p就行了。
v是可以选定一行任意个字符的,V是行选定的,一次一整行,然后通过向下或向上移动光标而选定多行。
对于v选定的,拷贝后就是这么多,选多少就拷贝多少,而V选定的,粘贴的话会自动换到下一行。
<C-V>命令模式下,也是块选定,不过是列块选定。
2. 折叠代码
可以zf进行折叠,用zo打开折叠,也可以方向键向右打开折叠,zc关闭折叠(只要在被折叠的块中的任一个语句就行)
3. 缩进代码
<是左缩进,>是右缩进。
按v选定后按=就是自动格式化代码,自动缩进,内部的递归的缩进都做到了。
行左移<<,行右移>>,该命令用于调整源码缩进格式简便快速。
4. 移动光标
%是从大括号的开始移动到大括号的结束位置。
:后边加行号就是跳到这一行。
<C-O> 光标返回到以前的位置,相当于光标移动的“撤销”。
<C-I> 光标返回到后来的位置,相当于光标移动的“恢复”。
5. 多文件编辑/缓冲区命令
vim下每一个打开的文件对应一个缓冲区(buffer)。
多文件编辑会有两种情形,一种是在进入vim前所用的参数就是多个文件(这种情形称为argument list),另一种情形是进入vim后另外再开其它的文件(称为buffer list),不过都可以统称为buffer。
5.1 打开文件
vi flname1 flname2… flnameN
将多个文件调入缓冲,是argument list。
:e filename
这是在进入vim后,在不离开vim的情形下再开其它文件,只要您要编辑的档案是在目前目录,Tab补全键还是可以使用。是buffer list。
注意::e或者:new或者:split后边可以跟目录,这样就可以在目录下慢慢找要打开的文件了。
5.2 缓冲区跳转
:n 编辑下一个文件。
:2n 编辑下二个文件。
:N 编辑前一个文件。注意,这种用法只能用于argument list的情形。
:rew 回到首文件
:args 查看当前编辑缓冲文件状态
:e#或Ctrl-^ 编辑前一个档案,用于两文件互相编辑时相当好用。这种用法不管是argument list或buffer list档案间皆可使用。使用Ctrl+^命令更便捷,但如终端类型不正确该功能将无效。
用:ls来显示缓冲区中的文件,编号后边有#的代表是前一个文件,可以通过:e#来进入,有%a的代表是当前文件,什么也没有的可以通过:bn来进入,这里的n代表文件编号。
:b<文件名或编号> 移至该文件。
在:ls中就会出示各文件的编号,这个编号在未离开vim前是不会变的。这个指令elvis也是可以使用。当然“:e#编号”也是可以的,这样的用法则是所有vi clone都通用了。
在buffers中,减号(-)表示这个buffer并未载入,不过,不必担心,载入相当快速的;加号(+)表示这个buffer已经修改过了。
:bn 下一个buffer(这里的n代表字母n)。
:bl 上一个buffer。
以上两个指令elvis不适用。
如果您是使用vim的GUI,那就在菜单上就会有Buffers这个选项,可以很容易的知道及移动各buffer间。
5.3 移除缓冲区
:bd(elete) buffer在未离开vim前是不会移除的,可使用这个指令移除。其实移除它干什么呢?vim是您在叫用时才会载入的,因此这些buffers并不是像cache一般要占内存的。
5.4 重新编辑
放弃一修改过的文件,重新编辑。
(1)使用命令 :q!强行退出后再vi flname重新进入。
(2)使用命令 :e!强行重编辑更便捷。这样也是会打开文件,但会放弃目前编辑文件的改变,否则如果文件已有变动,vim预设是不让您随便离开的。:e!后不接什么的话,代表舍弃一切修改,重新载入编辑中文件。
5.5 其他命令
:files或:buffers或:ls 会列出目前buffer中的所有文件。
在elvis中可使用:b来叫出buffers。
:f或ctrl-g 显示目前编辑的文件名、是否经过修改及目前光标所在之位置。
:f文件名 改变编辑中的文件名。(file)
:r文件名 在光标所在处插入一个文件的内容。(read)
:35 r 文件名 将文件插入至 35 行之后。
gf 这是vim的特殊打开文件的方法,会打开光标所在处的word为名的文件,当然,这个文件要在当前目录内,否则会创建新文件。
" \ \ / /_ | / | _ \ / | / / _ | \ | | | / |. " \ \ / / | || |/| | |) | | | | | | | | | | | | | | _.