退出vim
按键 |
功能 |
:wq |
保存退出 |
:w filename |
保存到指定文件 |
:q |
退出,如果文件修改但没有保存,会提示无法退出 |
:q! |
退出,不保存 |
进入插入模式
按键 |
功能 |
a |
光标位置右边插入文字 |
i |
光标位置当前处插入文字 |
o |
光标位置下方开启新行 |
O |
光标位置上方开启新行 |
I |
光标所在行首插入文字 |
A |
光标所在行尾插入文字 |
进入可视化模式
按键 |
功能 |
Ctrl+v |
进入可视化编辑模式 |
其它
按键 |
功能 |
:set expandtab |
tab展开为空格 |
cc/S |
清除整行,进入插入模式 |
d$/C |
删除光标右边文字/删除光标右边文字进入插入状态 |
di) |
删除括号内的文本 |
:set undodir=”xxxx” :set undofile
|
设置持久性撤销和临时保存的文件位置 |
:ls |
显示当前缓冲区文件信息 |
:e |
打开新文件,其他文件放入缓冲区 |
:b 缓冲区编号或者文件名 |
切换到指定的缓冲区文件处 |
:bd/:bd3 |
删除当前的缓冲区/指定缓冲区窗口 |
“byw |
将当前光标到单词结尾处的内容放入寄存器”b中(无”b则放入匿名寄存器””中) |
“bdw |
将当前光标处到单词结尾的内容剪切到寄存器”b中 |
“bp |
将”b中的内容粘贴 |
“1p/”2p/”3p |
将自动存放的历史删除内容分别粘贴出来,其中”1,”2,”3为寄存器 |
ctrl +n/p |
代码补全,向下查找/向上查找 |
ctrl+x+i |
使用当前工程文件的中的参数进行补全 |
ctrl+x+f |
使用当前工程文件和文件夹名补全 |
ctrl+x+j |
补全标签 |
查找功能
按键 |
功能 |
shift+* |
向下查找当前光标所在的相同单词并高亮显示 |
shift+# |
向上查找当前光标所在的相同单词并高亮显示 |
gd |
从头查找当前光标所在的相同单词并高亮显示 |
:noh |
取消高亮显示 |
n |
定位到查找内容的下一个 |
N |
定位到查找内容的上一个 |
:/String |
查找以String组成的正则表达式 |
/^字符串 |
查找以字符串开始的行 |
/字符串$ |
查找以字符串结尾的行 |
替换功能
按键 |
功能 |
. |
任意字符,不包括换行 |
\_. |
任意字符,包括换行 |
^$ |
行开头和结尾 |
\<\> |
单词开头和结尾 |
\s |
一个tab或空格 |
\d |
一个数字 |
\a |
一个字母 |
\w |
一个数字或字母 |
\l |
一个小写字母 |
\u |
一个大写字母 |
\x |
一个十六进制数 |
\X |
一个非十六进制数 |
\D |
一个非数字 |
\W |
一个非字母 |
\S |
一个非空白字符 |
A\|B |
匹配A或B |
\(X\) \(A\|B\)C |
将X作为一个组 匹配AC或BC |
* |
重复前一个字符0到多次 |
\+ |
重复前一个字符1到多次 |
\? \= |
重复前一个字符0到1次 |
\{m,n} |
重复前一个字符m到n次 |
\{-m,n} |
重复前一个字符m到n次,尽可能少的字符数进行匹配 |
按键 |
功能 |
r |
替换当前光标字符 |
:r 文件名 |
在光标当前位置下一行载入另一个文件 |
:%s/p1/p2/g |
将文件中所有p1均用p2替代,p1和p2可以为正则表达式 |
:n1,n2s/p1/p2/g |
将n1到n2行所有p1均用p2替代 |
:%s/p1/p2/gciIe |
替换时、全局替换,替换确认,忽略大小写,区分大小写,没有匹配时不显示错误 |
:106;/endstring/s/p1/p2/g |
在106行到endstring行的p1内容替换为p2 |
光标定位
行间定位
按键 |
功能 |
gg |
到文件第一行行首 |
G |
到文件最后一行行首,G必须为大写 |
:n |
到指定行,n为目标行数 |
[n]G |
到指定行,n为目标行数 |
行内定位
按键 |
功能 |
w/W |
后移一个字(狭义)/后移一个字(广义) |
b/e,B/E |
光标移动到当前字首/字尾(广义,狭义) |
$ |
光标移动到行末尾 |
0 |
光标移动到行开头 |
fx |
x为一个字符,光标向右移动到字符x处 |
cw/ce/cb/c4l |
删除当前光标处经过的字符量,单个单词不删除空格,进入插入模式 |
c2w/c2aw |
删除光标后的两个单词,进入插入模式 |
dw/d3e/db/d4l |
删除当前光标处经过的字符量,并删除空格 |
定位切换
按键 |
功能 |
Ctrl + o(O) |
回到上次编辑的光标位置 |
ctrl + i(I) |
回到下次编辑的光标位置 |
文本编辑
删除和修改功能
按键 |
功能 |
[n]x |
删除光标后 n 个字符4x |
[n]X |
删除光标前 n 个字符 |
D |
剪切光标所在开始到此行尾的字符 |
[n]dd |
删除从当前行开始的 n 行(准确来讲,是剪切,剪切不粘贴即为删除) |
[n]yy |
复制从当前行开始的 n 行 |
p |
把粘贴板上的内容插入到当前行 |
dG |
删除光标所在行开始到文件尾的所有字符 |
J |
合并两行 |
. |
执行上一次操作 |
u |
撤销前一个命令 |
ctrl+r |
恢复对使用u命令的操作 |
多窗口操作
按键 |
功能 |
:sp file |
横向新增窗口,file为窗口名 |
:vs file |
纵向新增窗口 |
vim -o file1, file2… |
横向窗口打开文件 |
vim -O file1, file2… |
纵向窗口打开多个文件 |
:qa |
退出所有窗口 |
:res(ize) num |
显示行数调整为num行 |
:res+num/:res-num |
显示行数增加num行/显示行数降低num行 |
:vertical res num |
纵向调整显示行数 |
:n / :N / :n file |
当前窗口显示为下一个窗口内容/上一个窗口内容/指定文件内容 |
:e# |
回到刚才编辑的文件 |
ctrl+w+上下左右 ctrl+w+hjlk ctrl+w+HJLK |
切换到上/下/左/右的一个窗口 切换到←↓↑→的一个窗口 移动窗口位置到←↓↑→ |
ctrl+w+w |
切换到下一个窗口 |
ctrl+w+o |
删除当前外的其它窗口 |
ctrl+w+= |
设置所有窗口大小相等 |
:resize +N -N N |
设置窗口高度,加,减,等于 |
:vertical res +N -N N |
设置窗口宽度,加,减,等于 |
:tabnew + filename |
创建新标签页 |
gt/gT |
切换到下一个/上一个标签页 |
辅助命令
按键 |
功能 |
:m N |
将本行移动到第N行下方 |
:g/^/m 0 |
倒序文件行,g为全局查找,^为文件行 |
: +1d |
删除当前行的下一行 |
:g/^/+1d :%norm jdd |
删除偶数行 |
:%norm jkdd |
删除奇数行 |
:%s/^\(.*\)\(\n\1\)\+$/\1/g |
多行重复行压缩为1行 |
:%s/^\(.*\)\n\1$/\1/g |
两个重复行压缩为1行 |
set命令
按键 |
功能 |
:set list |
显示以“$”表示的换行符和以“^I”表示的制表符等特殊符号 |
:set nolist |
取消特殊符号显示 |
:set ic |
搜寻时不区分大小写 |
:set noic |
搜寻时区分大小写 |
:set nu |
显示行号 |
:set nonu |
不显示行号 |
:set foldmethod=indent |
折叠当前的所有代码,折叠方式为缩进 |
zi |
把折叠状态的所有代码展开和关闭 |
zo |
展开当前位置的折叠代码 |
zc |
折叠当前位置的展开代码 |
za |
切换当前位置的代码展开和折叠状态 |
:vimgrep string **/*.py |
跨文件查找字符串string。 |
:cn/:cp |
跨文件查找字符串的下一个/上一个 |
其它命令
按键 |
功能 |
:!cmd |
临时执行外部shell命令 |
ctrl+u/ctrl+d |
屏幕向前/向后翻页半个屏幕 |
pageup/pagedown |
屏幕向前/向后翻页一个屏幕 |
:terminal |
打开终端窗口 |
:map newcmd existcmd |
设置命令映射,newcmd如;asdf |
:help existcmd |
查看已经存在的命令 |
:set hlsearch/nohlsearch |
设置/取消高亮查找 |
:arg **/*.py :args :argdo cmd |
匹配跨文件操作文件 查看跨文件操作文件 执行跨文件操作文件内容的命令cmd |
qx @x qxq |
录制宏到x寄存器中 播放x中录制的宏 清空寄存器x中的内容 |
:set wrapscan/nowrapscan |
设置循环查找/非循环查找 |