VIM 奇技淫巧
常用技巧
1. 如果想不退出vi而查看UNIX系统的有关信息,输入“:shell ”即可进入vi以前的shell环境,“exit”退回到vi编辑状态。 2. shift+ZZ 保存后自动退 和 :wq 是一样的 3. 直接运行命令,不退出VI :! 命令 Demo::! ls 4. 将其他文件内容导入当前编辑文件中,:r 文件名 Demo::r /etc/hosts 结合第3条可以这样插入日期 Demo::r !date 5. 像UltraEdit一样的列选功能,在VI也能用,按Ctrl + V,用向下或向上键选择行,再按Shift+I,然后输入要输入的符号,最后ESC。(Gvim下用Ctrl+Q,不然变成黏贴了) 我们常用这个方式加注释,还有更简单的方法 :起始行,终止行s/要替换字符/替换为新字符/g Demo::1,20s/^/#/g 6. 重复上次操作,有的时候我们经常做重复操作,先在第一行上操作例如删除第一个字母,然后到你要重复的行,然后 . (就是有>号的键) 7. 如果想把一个字母进行大小写变换,可以在字母上按SHIFT+~.
8. :global可以简写为:g :g! :vg
:g/^/m 0 #倒序文件行 :g/^$/d #vi中删除空行 :g/^/+1 d #删除偶数行 也可以用normal命令 :%norm jdd :g/^/d|m. #删除奇数行屏幕翻滚类命令 Ctrl+u:向文件首翻半屏Ctrl+d:向文件尾翻半屏Ctrl+f:向文件尾翻一屏Ctrl+b;向文件首翻一屏nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部(这里要敲回车) 插入文本类命令 i:在光标前I:在当前行首a:光标后A:在当前行尾o:在当前行之下新开一行O:在当前行之上新开一行r:替换当前字符R:替换当前字符及其后的字符,直至按ESC键s:从当前光标位置处开始,以输入的文本替代指定数目的字符S:删除指定数目的行,并以所输入文本代替之ncw或nCW:修改指定数目的字nCC:修改指定数目的行 删除命令 ndw或ndW:删除光标处开始及其后的n-1个字do:删至行首d$:删至行尾ndd:删除当前行及其后n-1行x或X:删除一个字符,x删除光标后的,而X删除光标前的Ctrl+u:删除输入方式下所输入的文本 搜索及替换命令 /pattern:从光标开始处向文件尾搜索pattern?pattern:从光标开始处向文件首搜索patternn:在同一方向重复上一次搜索命令N:在反方向上重复上一次搜索命令:s/p1/p2/g 将当前行中所有p1均用p2替代:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代:g/p1/s//p2/g:将文件中所有p1均用p2替换:%s/p1/p2/g 将在全文中把所有p1无用p2替代如果你是在写程序,你可能只想替换那些出现在注释中的"four",代 码中的留下。这可有点为难,"c"标志可以让每个目标被替换之前询问你的意见:Demo:%s/\<four\>/4/gc
文本相关操作
J表示,其功能是把光标所在行与下面一行合并为一行nJ表示,其功能是把光标所在行与下面n行合并为一行:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下:n1,n2 d:将n1行到n2行之间的内容删除