Vim 简单操作
按键英文表述
动词
按键 | 描述 |
---|---|
d |
delete,删除 |
r |
replace,替换 |
c |
change,修改 |
y |
yank,复制 |
v |
visual select,选取 |
名称
按键 | 描述 |
---|---|
w |
word,单词 |
s |
sentence,句子 |
p |
paragraph,段落 |
t |
tag,标签 |
介词
按键 | 描述 |
---|---|
i |
inside,在…之内 |
a |
around,环绕… |
t |
to,到…位置之前 |
f |
forward,到…位置上 |
例子
按键 | 描述 |
---|---|
dip |
delete inside paragraph,删除段落 |
vis |
visual select inside sentence,选取一个句子 |
ciw |
change inside word,修改单词 |
caw |
change around word,修改单词 |
dtz |
delete to z,删除文本至字符z(不包含z) |
dfz |
delete forward z,删除文本至字符z(包含z) |
c3w |
change 3 words,修改三个单词 |
d2w |
delete 2 words,删除两个单词 |
2dw |
twice delete word,两次删除单词,即删除两个单词 |
3x |
three times delete character,删除三个字符 |
按键操作
移动跳转
按键 | 描述 |
---|---|
fx |
当前行移动光标到下一个字母 x 处 |
Fx |
同上,反向 |
w |
光标向后移动一个单词 |
b |
光标向前移动一个单词 |
e |
移动到单词结尾 |
0 |
跳转到行首 |
$ |
跳转到行尾 |
^ |
跳转至当前行第一个非空处 |
C-f |
向下卷动一屏 |
C-b |
向上卷动一屏 |
C-d |
向下半屏 |
C-u |
向上半屏 |
zt |
将光标所在行卷动到屏幕顶端 |
zz |
将光标所在行卷动到屏幕中间 |
zb |
将光标所在行卷动到屏幕底端 |
gg |
跳转到第一行 |
G |
跳转到最后一行 |
:n |
跳转到n行 |
保存
按键 | 描述 |
---|---|
:w |
保存当前编辑的文件 |
:wa |
保存全部文件 |
:wq | ZZ |
保存并退出 |
:q! |
不保存而强制退出 |
:saveas <filename> |
文件另存为 |
进入 insert 模式
按键 | 描述 |
---|---|
i |
当前字符前插入 |
a |
当前字符后插入 |
I |
行首插入 |
A |
行尾插入 |
o |
下一行插入 |
O |
上一行插入 |
删除复制相关
按键 | 描述 |
---|---|
x |
删除光标处的单个字符 |
dd |
剪切光标所在的行 |
dw |
剪切当前字符到单词尾包括空格的所有字符 |
diw |
删除光标所处的单词 |
daw |
删除光标所在单词 |
dis |
删除当前句子 |
cw |
改写光标开始处至单词尾,并进入插入模式 |
ciw |
改写光标所处的单词 |
caw |
改写光标所在单词,包括之后空格,并进入插入模式 |
cis |
改写当前句子 |
yy |
复制当前整行的内容到vi缓冲区 |
yw |
复制当前光标所在位置到单词尾字符的内容到vi缓存区 |
yaw |
复制当前光标所在单词 |
y$ |
复制光标所在位置到行尾内容到缓存区 |
p |
在光标位置后粘贴 |
P |
在光标位置前粘贴 |
viwp |
将缓存区内容覆盖光标所在单词 |
J |
当前行与下一行合并 |
:g/^\s*$/d |
删除所有不包含字符的空行(空格也不包含) |
:%s/^\(.*\)\n\1/\1$/ |
删除两行以上的空行 |
:g/1/d |
删除包含1的所有行 |
:v/1/d |
删除不包含1的行 |
:v/1\|2\|3\|4/d |
删除不包含1或2或3或4的行 |
:%s/^M$//g | :%s/\r//g |
删除^M |
搜索替换
按键 | 描述 |
---|---|
y^ |
复制光标所在位置到行首内容到缓存区 |
/ |
搜索,敲n向下搜索 |
? |
搜索,敲n向上搜索 |
:s/1/2 |
当前行第一个1替换成2 |
:s/1/2/g |
当前行将所有的1替换成2 |
:%s/1/2/g |
全文搜索1并替换成2 |
窗口操作
按键 | 描述 |
---|---|
:split | :sp |
上面打开新窗口 |
:new |
上面打开窗口编辑新文件 |
:close |
关闭当前窗口 |
:only |
关闭除当前的所有窗口 |
:vsplit | vs |
左边打开新窗口 |
:vnew |
左边打开窗口编辑新文件 |
:diffsplit | diffs diff |
模式打开分屏 |
C-w w |
窗口间切换 |
C-w h |
跳转到左边窗口 |
C-w j |
跳转到下面窗口 |
C-w k |
跳转到上面窗口 |
C-w l |
跳转到右边窗口 |
C-w t |
跳转到最顶上窗口 |
C-w b |
跳转到最底下窗口 |
C-w = |
平均窗口尺寸 |
C-w + |
增大当前窗口高度 |
C-w - |
缩小当前窗口高度 |
C-w _ |
最大当前窗口高度 |
C-w > |
增大当前窗口宽度 |
C-w < |
缩小当前窗口宽度 |
C-w | |
最大当前窗口宽度 |
标签相关
按键 | 描述 |
---|---|
:tabnew |
新开标签页 |
:gt | :tabnext | tabn |
切换下一个标签 |
:gT | :tabprevious | :tabp |
切换上一个标签 |
:tabrewind | :tabr | :tabfirst | :tabfir |
切换到第一个标签 |
:tablast | tabl |
切换到最后一个标签 |
:tabclose | :tabc |
关闭当前标签页 |
:-tabc |
关闭上一个标签页 |
:+tab |
关闭下一个标签页 |
:tabonly | :tabo |
关闭其他标签页 |
其他
按键 | 描述 |
---|---|
:set bomb |
设置bom格式 |
:set nobomb |
设置无bom格式 |
u |
撤销上一步的操作 |
C-r |
恢复上一步被撤销的操作 |
e! |
撤销所有操作,恢复原来的文件 |
== |
自动排版当前行 |
gg=G |
自动排版当前编辑文件 |
>> |
向右缩紧当前行 |
<< |
向左缩紧当前行 |
将 tab 转换成 space
:set tabstop=4 " 匹配当前文档
:set expandtab " 使用空格
:retab “ 使当前文档生效
将 space 转换成 tab
:set tabstop=4 " 匹配当前文档
:set noexpandtab " 使用 tab
:%retab! " 使当前文档生效