Friday, April 19, 2013

VIM杀手秘技


该文内容来自: http://stackoverflow.com/questions/726894/what-are-the-dark-corners-of-vim-your-mom-never-told-you-about 并没有列出所有的,只是选择了投票比较多的。的确都是一些很实用的技巧

:w !sudo tee %
在Linux系统下面辛苦编辑了一个配置文件,要保存的时候发现要root权限,怎么办?这个命令就是让你不用以root权限来运行VIM但是可以编辑系统文件的命令。

:earlier 15m
把当前文件恢复到15分钟前的状态, 这个时间参数除了分钟,还有很多别的格式。

删除指定范围 diwdi(di"
diw 删除当前词
di( 或者 di) 删除当前括号内的内容,光标要在括号上,或者括号内
di" 删除引号内的内容
相同的命令还有ciw , ci( , ci" 还有dt, dt), dt",ct, ct), ct"

:! [command] :.! [command]
前一个是执行外部命令,后面一个只是在:后面加了一个"." 好处是把命令的输出直接放在当前行。比如你要在文档里面插入当前日期,就可以用 :.! date

:%!xxd  把VIM变成Hex Editor
:%!xxd -r 从Hex Editor变回去

:g/rgba/y A
把所有包含rgba的行复制到a寄存器里面,然后可以用 "ap粘帖,这里用大写A是取为了把找打的行追加在寄存器里面,否则就只有最后一行被放在了寄存器里面了

:verbose set xxxxxx?
有时候.vimrc的一些配置会被一些插件或者autocommand重新设置,要找出哪些地方设置了这个,就用这个命令, xxxxxx这里泛指VIM的设置项,比如 :verbose set cindent? 就找出来哪些地方设置了cindent

q:
查看命令历史,这个我们应该经常不小心就掉出来了

gv
重新选择上次的选择

gf, gF
gf把光标移到文件名上,比如c文件里面include的头文件,按gf就会打开这个文件
gF跟gf已经,这个命令认识“文件名:行号”的格式,可以直接跳转到指定行

No comments: