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!                " 使当前文档生效