我经常使用的VIM的功能

- 行内移动

fx

x 表示任何一个字符。

这是最快的在一行种移动的方法了。然后用 ; (分 号)继续移动。

反向移动好像是 t ,但是我记性不好, 总是记不住,于是

0fx

用 0 先回到行首,在 f

- 任何一个操作命令在加一个移动命令。实现对某个范围的操作。 例如 :

dfx

表示删除到下一个出现 x 的地方, x 可以使任意字符。

操作命令有 d (cut), y(copy) , p(paste), v (select) 移动命令有 hjkl, f, /, gg, G

- 任何命令组合都可以先按一些 数字健 表示重复操作。 如:

d123j
删除下面123行。

- 宏纪录的功能

例如,把文件中所有奇数行和偶数行合并。 按如下序列 ggqqJj1000000@q

gg             回到文件头
qq             记录宏,在q寄存器中
J              合并两行
j              下一行
q              结束记录宏
100000000@q    执行宏

- C-p

在 insert mode 下写程序的时候,任何超长的变量 名字都不成问题。如果有一个 this_is_very_long_variable_name 可以

    this<C-P> 

90%的可能性自动就把名字补全了。还可以用 C-n 和 C-p 在几种可能之间选择。

于是,我写程序的时候,变量的名字其的越来越长, 输入越来越快。:)

- C-x C-p

在写程序 abc.h 的时候 写道 #include "abc.h" 的时候 其实可以

#include "a<C-x><C-p>"

90% 的情况, 可以自动补全文件名称。

- 从外部命令输入

:r !ls

可以读取当前目录的文件列表。 如果你对 bash 很熟悉的话,这个功能非常好用, 例如, 输入下面内容的方法是

case 1
case 2
....
case 1000:
:r !for ((i=0;i<100;i++));do echo "case $i" ; done
- 利用外部命令处理文字。

我在 ~/.vimrc 中写了一行。

map = ggVG:!indent -nut -st -kr 2>/dev/null<CR>G

我按一个 = ,就可以利用外部命令 indent 美化 我的 c 程序。

还可以用外部命令排序,例如 用 v 选定要排序的区域 然后按一个叹号。

:'<,'>!sort

- 我在 ~/.vimrc 中写了

map <Left> :bp<CR>
map <Right> :bn<CR>
map <F4> :bd<CR>

就可以用 左右方向健来切换 buffer F4 关闭 buffer 了。

- 我在 ~/.vimrc 中写了

runtime ftplugin/man.vim

就可以在把光标停在一个函数上, 然后用

\k

查看在线帮助了。 用

:Man getuid

查看 getuid 函数的手册了。

- Make 工具

:make

可以用外部命令 make 编译工程。

:cw

查看出错 信息,

:cn
:cp

在出错信息 之间跳转。

- 命令可以在函数之间移动。

]] , [[ , [] , ][