- <C-h> 删除前一个字符
- <C-w> 删除前一个单词
- <C-u> 删除至行首
- <C-[> 切换至普通模式
- <C-o> 从插入模式切换至“插入-普通”模式
- zz 重绘屏幕,让当前行处于屏幕中央
- daw 删除一个单词
- dl 删除光标所在字符
- dap 删除一个段落
- * 高亮单词
- n/N 向后/前进
- ;/, 向后/前进
- f{char} 在当前行查找字符
- g~ 大小写转换
- gU/gu 转换大/小写
- <C-r>{register} 将寄存器中的文本插入到光标当前所在位置
- <C-r><C-p>{register} 同上,但可以修正缩进
- <C-a> 普通模式下数值+1
- <C-x> 普通模式下数值-1
- <C-r>= 插入模式下使用表达式寄存器计算加减乘除
- R 从普通模式进入替换模式,退出替换模式
- gR 从普通模式进入虚拟替换模式,会把Tab当空格
- c 普通模式下进入修改文本
- v 进入面向字符的可视模式
- V 进入面向行的可视模式
- <C-v> 进入面向列的可视模式
- gv 重选上次的高亮选区
- o 可视模式下可切换活动端
- >> 向右缩进
- <C-v>jj$ A; 在每一行末尾添加“;”
- : 进入命令模式(Ex)
- :2,5p 打印第2至5行('<,'>表示已高亮的选区)
- : $ 光标跳转到文件末尾
- :% 当前文件所有行
- :6copy. 将第六行复制到光标当前所在行位置(copy可以简写为t或co)
- 普通模式下快速跳回光标原来位置
- @: 重复上次执行过的命令
- :'<,'>normal . 对已高亮选区执行普通模式下的.操作
- <C-r><C-w> 命令行下,将光标处的单词复制到命令行中
- q/ 打开查找命令历史的命令行窗口
- q: 打开Ex命令历史的命令行窗口
- <C-f> 从命令行模式切换到命令行窗口
- :!python % 调用shell的python命令执行当前文件
- :read !{cmd} 将shell命令的标准输出重定向到当前缓冲区
- :write !{cmd} 将当前缓冲区内容作为标准输入传给shell命令
- :ls 列出所有缓冲区
- :bnext 切换到下一个缓冲区(bnext!表示强制切换)
- :bprev 切换到上一个缓冲区
- :bfirst 切换到第一个缓冲区
- :blast 切换到最后一个缓冲区
- :buffer N 跳转到第N个缓冲区
- :buffer {buffname} 跳转到buffname缓冲区
- :bdelete N1 N2 N3 删除N1、N2、N3缓冲区
- :N,M bdelete 删除编号为N到M的缓冲区
- :args 显示当前参数列表(缓冲区文件列表)
- :args {arglist} 设置参数列表(文件列表)
- :argdo {cmd}在每个缓冲区上执行同一条命令
- :edit! 强制用文件内容覆盖缓冲区
- :qa/qall! 强制放弃所有修改
- <C-w>s 水平切分窗口
- <C-w>v 垂直切分窗口
- <C-w>w 在窗口间循环切换
- <C-w>h/j/k/l 切换到左边/下边/上班/右边的窗口
- :close 关闭活动窗口(<C-w>c)
- :only 关闭除活动窗口外的其他窗口(<C-w>o)
- <C-w>= 使所有窗口等宽、等高
- <C-w>_ 最大化活动窗口的高度
- <C-w>| 最大化活动窗口的宽度
- [N]<C-w>_ 把活动窗口的高度设置为[N]行
- [N]<C-w>| 把活动窗口的宽度设置为[N]列
- 窗口重排命令
- :lcd {path} 为当前窗口设置本地工作目录
- :windo lcd {path} 为一个标签下的所有窗口设置本地工作目录
- :tabedit {filename} 在新标签页中打开{filename}
- <C-w>T 把当前窗口移动到一个新标签页
- :tabclose 关闭当前标签页及其中的所有窗口
- :tabonly 关闭除活动标签页之外的所有其他标签页
- :tabnext {N} 切换到编号为{N}的标签页(或普通模式下{N}gt)
- :tabnext 切换到下一标签页(或普通模式下gt)
- :tabprevious 切换到上一标签页(或普通模式下gT)
- :tabmove [N] 重排标签页
- :edit %:h<Tab>{/filename} 打开当前缓冲区所在文件夹下的其他文件
- :set path+={path} 为{:find}命令增加搜索路径
- :edit . 在文件管理器打开当前文件夹
- :Explore 显示活动缓冲区所在的目录
- <C-^> 从文件管理器切换回刚刚正在编辑的文件
- <C-g> 显示当前文件的文件名和状态
- :w !sudo tee % > /dev/null 权限不够的情况下保存文件
- gj/k 根据屏幕行向下/上移动
- g0 移动到屏幕行的行首
- g^ 移动到屏幕行的第一个非空白字符
- g$ 移动到屏幕行行尾
- w 正向移动到下一单词的开头
- b 反向移动到当前单词/上一单词的开头
- e 正向移动到当前单词/下一单词的结尾
- ge 反向移动到上一单词的结尾
- W/B/E/gE 面向字符的移动
- t{char} 正向移动到下一个{char}所在的前一个字符
- T{char} 反向移动到上一个{char}所在的后一个字符
- d/{pattern}<CR> 删除光标当前所在位置到{pattern}所匹配位置第一个字母之前的所有文本
- vi}/>/t/]/'/"/)/` 在可视模式下选取大括号/尖括号/标签/方括号/单引号/双引号/圆括号/反引号中的文本
- va}/>/t/]/'/"/)/` 在可视模式下选取大括号/尖括号/标签/方括号/单引号/双引号/圆括号/反引号中的文本(包含符号本身)
- 文本对象
-
iw 当前单词
-
aw 当前单词及一个空格
-
iW 当前字串
-
aW 当前字串及一个空格
-
is 当前句子
-
as 当前句子及一个空格
-
ip 当前段落
-
ap 当前段落及一个空行
-
m{a-zA-Z} 对光标所在位置进行标记,小写字母在当前缓冲区可见,大写字母全局可见
-
`{mark} 跳转到标记所在行
-
`` 当前文件中跳转之前的位置
-
`. 上次修改的地方
-
`^ 上次插入的地方
-
`[ 上次修改或复制的起始位置
-
`] 上次修改或复制的结束位置
-
`< 上次高亮选区的起始位置
-
`> 上次高亮选区的结束位置
-
dt{char} 删除光标所在位置到{char}所在位置(不包含)的文本
-
% 可以在开/闭的括号之间跳转
-
<C-o> 普通模式下跳转回光标上一次所在位置
-
<C-i> 普通模式下光标前进到跳转之前的位置(与<C-o>对应)
-
:changes 查看改变列表
-
gi 回到上次插入的位置并进入插入模式
-
gf 文件跳转
-
:set suffixesadd+=.py 指定跳转时搜寻的文件扩展名
-
:set path? 查看path的值
-
:vimgrep /{pattern}/ ** 查找代码中所有出现{pattern}的地方
-
"a-"z 有名寄存器
-
"" 无名寄存器
-
"0 复制专用寄存器
-
"_ 黑洞寄存器(不缓存)
-
"add 删除行的文本缓存到"a寄存器
-
:reg "0 查看寄存器内容
-
"+ 剪贴板
-
"* 剪贴板(在X11中表示用鼠标中键粘贴)
-
vep 在可视模式下,p会替换高亮选区的文本
-
gp 光标的位置移到被粘贴出来的文本结尾
-
:set pastetoggle=<f5> 设置用<F5>来切换paste选项
-
q{register}{operations}q 普通模式下开始和结束录制宏
-
@{register} 普通模式下调用宏
-
@@ 重复上次调用过的宏
-
:'<, '>normal @{register} 在高亮选区中并行的方式执行宏
-
qA{operations}q 将在寄存器a后面增加录制
-
:edit! 放弃对当前缓冲区的修改
-
:argdo normal @{register} 在参数列表的所有缓冲区内执行宏
-
/\c{pattern} 忽略大小写查找
-
/\C{pattern} 强制区分大小写查找
-
/\v#(regexp) 开启very magic搜索模式用正则表达式搜索文本
-
/\V{pattern} 按原义查找
-
/\v<(\w+)_s+\1> 匹配连续的重复单词(\1~\9表示对()分组的引用,\0代表整个匹配内容, <>为单词界定符号, _s为空格或换行符)
-
{pattern1}\zs{pattern2}\ze{pattern3} 从匹配结果中选择一部分(匹配边界)
-
<C-r> 自动补全查找单词
-
:/{pattern}//gn 统计某个模式匹配的行数(如果不填pattern,则使用上次搜索时的pattern)
-
/{pattern}/e 搜索pattern,并将光标置于匹配结果的末尾
-
gU//e 将光标所在位置的搜索匹配结果转为大写
-
// 重复上次的搜索,包括光标定位到匹配结果的末尾
-
:%s/\v'(([^']|'\w)+)'/“\1”/g 将单引号替换为双引号
-
incsearch 搜索结果高亮配置选项
-
:[range]s[ubstitute]/{pattern}/{string}/[flags] 替换命令
-
:%s/{pattern}/{string}/gc 控制每一处匹配结果是否进行替换(y替换此处匹配,n忽略此处匹配,q退出替换过程,l替换此处匹配后退出,a替换此处与之后所有的匹配,向上滚动屏幕,向下滚动屏幕)
-
:%s//=@0/g 使用复制专用寄存器中的内容替换上次搜索匹配的结果
-
g& 在整个文件范围内重复上次的替换操作
-
:&& 对当前行重新执行上次的替换操作
-
:%&& 对整个文件范围内重复上次的替换操作
-
:%s/\v^([^,]),([^,]),([^,]*)$/\3,\2,\1 交换CSV中的列
-
:[range] global[!] /{pattern}/ [cmd] 默认在当前文档范围内执行cmd命令(!表示对所有不匹配的区域进行cmd操作,缺省cmd为print)
-
:g/{pattern}/d 删除匹配项
-
:v/{pattern}/d 删除非匹配项
-
:g/{start}/ .,{finish} [cmd] 广义的global命令
- quickfix列表命令
- :cnext 跳转到下一项
- :cprev 跳转到上一项
- :cfirst 跳转到第一项
- :clast 跳转到最后一项
- :cnfile 跳转到下一个文件中的第一项
- :cpfile 跳转到上一个文件中的最后一项
- :cc N 跳转到第n项
- :copen 打开quickfix窗口
- :cclose 关闭quickfix窗口
- :grep {string} * 在vim中使用grep跨文件查找(cnext, cprev用于跳转)
- <C-p> or <C-n> 插入模式下自动补全
- <C-y> 确认使用当前选中的匹配选项
- <C-e> 还原最早输入的文本
- <C-h> 从当前匹配项中删除一个字符
- <C-l> 从当前匹配项中增加一个字符
- {char} 中止自动补全并插入字符{char}
- <C-x><C-k> 使用字典中的单词进行自动补全
- <C-x><C-l> 自动补全整行文本
- <C-x><C-f> 自动补全文件名
- <C-x><C-o> 根据上下文自动补全