在我最初使用Vim时,有些功能并不知道,等发现后真后悔自己干了那么久的体力活。
1. * (super star)
向下查找光标下(或附近)的。向上找用#。g*查找则不限制whole word。
2. C-R (magic insert)
在insert模式下,C-R (register) 插入register里的内容,一个有趣的reg是"=".
假设你想输入123K的具体字节数,不用打开计算器,试试这个“=1024*123”,
“125952”就出来了!
另外在命令行里C-R C-W和C-R C-A是必用的技巧,它们将光标下的和
考到命令行里,省了你无数的typing。
3. C-X (auto complete)
在insert模式下,C-X C-P/N/L/F等自动完成前面的词、行、文件名等,是编程时必用的
命令。其中C-P和C-N可以不用C-X。
4. [p & ]p (smart paste)
paste同时自动根据目标行的缩进调整来源行的缩进。在copy代码段的时候非常有用。
5. C-O (fast out, fast in)
在insert模式下,用C-O后可以执行一个normal命令,然后立即返回insert模式,省去了
用ESC的麻烦。
6. [I (fast grep )
[I显示文件中包含光标下的所有行。我常用来浏览某个id在程序中的引用情况。
还有很多相关的命令::h include-search
7. object-select
iw, aw, ib, i], i} ... 都非常有用!看help吧
:h object-select
再说说我马上能够想起来的。
1.
fx
x 表示任何一个字符。
这是最快的在一行种移动的方法了。然后用
; (分号)
继续移动。
反向移动好像是 t ,但是我记性不好,
总是记不住,于是
0fx
用 0 先回到行首,在 f
2.
任何一个操作命令在加一个移动命令。实现对某个范围的操作。
例如
dfx
表示删除到下一个出现 x 的地方, x 可以使任意字符。
操作命令有 d (cut), y(copy) , p(paste), v (select)
移动命令有 hjkl, f, /, gg, G
3.
任何命令组合都可以先按一些 数字健 表示重复操作。
如:
d123j
删除下面123行。
4. 宏纪录的功能
例如,把文件中所有奇数行和偶数行合并。按如下序列
gg
J
q
100000000@q
5. C-p
在 insert mode 下
写程序的时候,任何超长的变量名字都不成问题。
如果有一个this_is_very_long_variable_name
可以
this
90%的可能性自动就把名字补全了。
于是,我写程序的时候,变量的名字其的越来越长,输入越来越快。:)
6. C-x C-p
在写程序 abc.h 的时候
写道 #include "abc.h" 的时候
其实可以
#include "a"
90% 的情况,可以自动补全文件名称。
6.从外部命令输入
:r !ls
可以读取当前目录的文件列表。
如果你对 bash 很熟悉的话,这个功能非常好用
例如
输入
case 1
case 2
....
case 1000:
的方法是
:r !for ((i=0;i<100>
7. 利用外部命令处理文字。
我在 ~/.vimrc 中写了一行。
map = ggVG:!indent -nut -st -kr 2>/dev/nullG
我按一个 = ,就可以利用外部命令 indent 美化 我的 c 程序。
我认为,
还可以用外部命令排序
例如
用 v 选定要排序的区域
然后按一个叹号。
:'<,'>!sort <br /> <br /> 8<br /> 我在 ~/.vimrc 中写了<br /> map <Left> :bp<CR><br /> map <Right> :bn<CR><br /> map <F4> :bd<CR><br /> <br /> 就可以用 左右方向健来切换 buffer<br /> F4 关闭 buffer 了。<br /> <br /> 9<br /> 我在 ~/.vimrc 中写了<br /> runtime ftplugin/man.vim<br /> <br /> 就可以在把光标停在一个函数上,然后用 <br /> \k
查看在线帮助了。
用
:Man getuid
查看 getuid 函数的手册了。
10.
:make
可以用外部命令 make 编译工程。
:cw
查看出错信息,
:cn
:cp
在出错信息之间跳转。
11.
]] , [[ , [] , ][ 命令可以在函数之间移动。