Vim Tips.
General
操作 |
说明 |
i |
光标前 |
a |
光标后 |
I |
行首 |
A |
行尾 |
x |
删除光标所在字符 |
D |
删除从当前光标到本行末尾的字符 |
r |
替换光标处的字符 |
U |
取消当前行中所有的改动 |
= |
自动缩进 |
. |
(点)会重做最后一个命令 |
V |
按行选择 |
Jump
操作 |
说明 |
0 |
跳到第一列 |
^ |
跳到本行第一个非空字符 |
$ |
跳到本行末尾 |
g_ |
跳到本行最后一个非空字符 |
w |
跳到下一个单词的开头 |
e |
跳到这个单词的末尾 |
W |
跳到下一个由空格分隔的单词的开头 |
E |
跳到这个由空格分隔的单词的末尾 |
| 跳到当前光标的上一个相同单词的地方
`. | 返回最后一次编辑位置
[[ | 到函数头
[{ | 到块开始位置
]} | 到块结束位置
gf | 打开以光标所在字符串为文件名的文件
gd | 跳转到局部变量的定义处
gD | 跳转到全局变量的定义处,从当前文件开头开始搜索
g] | 展示匹配tags的文件
E | INSERT 模式下移动光标到行尾
B | INSERT 模式下光标左移一位
ctrl+w-f | 同gf,不过会水平分割一个窗口
ctrl-^ | 跳转到上一个编辑的文件
Pattern
操作 |
说明 |
:/ pattern |
单词前加空格,精确匹配 |
:/^pattern |
搜索仅在行首出现 |
:/pattern$ |
搜索仅在行末出现 |
Buffer
操作 |
说明 |
:5,10bd |
删除编号5到10的buffer |
:ba |
把所有缓冲区在当前页中 |
:sb 3 |
分屏打开编号为3的buffer |
:vertical sb 3 |
同上,垂直分屏 |
File
操作 |
说明 |
:1,10 w outfile |
1到10行内容写到outfile |
:1,10 w » outfile |
1到10行内容追加到outfile |
:r infile |
插入文件内容 |
:23r infile |
插入文件23行的内容 |
:e#或ctrl+^ |
回到刚才编辑的文件9(貌似只有:e#有效) |
:f或ctrl+g |
显示文件是否被修改 |
:f filename |
改变编辑的文件名 |
:e! |
强制回到文件原始状态 |
Object
操作 |
说明 |
dip |
删除所有临近的空白行 |
cab |
等同于ca) |
yiB |
等同于yi} |
cw |
替换从光标到单词结束 |
dib |
删除括号内的内容 |
Modify
操作 |
说明 |
c[n]l |
改写光标后n个字母 |
c[n]h |
改写光标前n个字母 |
[n]cc |
修改当前n行 |
Replace
操作 |
说明 |
:s/old/new |
用new替换行中首次出现的old |
:s/old/new/g |
用new替换行中所有出现的old |
:#,# s/old/new/g |
用new替换从第#行到第#行中出现的old |
:% s/old/new/g |
用new替换整篇中出现的old |
- 如果替换的范围较大时,在所有的命令尾加一个c命令,强制每个替换需要用户进行确认,例如:s/old/new/c 或s/old/new/gc
相对屏幕移动
- 通过c-f向下翻页,c-b向上翻页;c-e逐行下滚,c-y逐行上滚。这在几乎所有Unix软件中都是好使的,比如man和less。 H可以移动到屏幕的首行,L到屏幕尾行,M到屏幕中间。
Others
- 30i+ — 插入30个+组成的分割线
- ctrl+v 下移 I // Esc
- zt可以置顶当前行,通常用来查看完整的下文,比如函数、类的定义。 zz将当前行移到屏幕中部,zb移到底部。
- :packadd termdebug,然后Termdebug 可执行程序名字可在vim里启用GDB。
-------他日江湖相逢 再当杯酒言欢-------