Vim 编辑常用快捷键
快捷键 |
说明 |
, |
Leader Key |
函数跳转 |
|
<leader>n |
打开/关闭代码资源管理器 |
<leader>t |
打开/关闭函数列表 |
<leader>a |
.h .cpp 文件切换 |
<leader>u |
转到函数声明 |
<leader>U |
转到函数实现 |
g] |
声明/定义跳转 |
<leader>o |
打开include文件 |
<leader>y |
拷贝函数声明 |
<leader>p |
生成函数实现 |
<c-p> |
切换到上一个buffer |
<c-n> |
切换到下一个buffer |
:e <filename> |
新建buffer打开文件 |
Ctrl + ] |
找到光标所在位置的标签定义的地方 |
Ctrl + t |
回到跳转之前的标签处 |
Ctrl + o |
退回原来的地方 |
辅助操作 |
|
gcc |
注释代码 |
gcap |
注释段落 |
za |
打开或关闭当前折叠 |
zM |
关闭所有折叠 |
zR |
打开所有折叠 |
<c-w>h |
跳到左边的窗口 |
<c-w>j |
跳到下边的窗口 |
<c-w>k |
跳到上边的窗口 |
<c-w>l |
跳到右边的窗口 |
<c-w>c |
关闭当前窗口 |
<c-w>o |
关闭其他窗口 |
:only |
关闭其他窗口 |
快捷键 |
说明 |
<leader>f |
搜索~目录下的文件 |
<leader>F |
搜索当前目录下的文本 |
<leader>g |
显示git仓库提交记录 |
<leader>G |
显示当前文件提交记录 |
<leader>gg |
显示当前文件在某个commit下的完整内容 |
<leader>d |
删除当前buffer |
<leader>D |
删除当前buffer外的所有buffer |
Ya |
复制行文本到字母a |
Da |
剪切行文本到字母a |
Ca |
改写行文本到字母a |
rr |
替换文本 |
<leader>r |
全局替换,目前只支持单个文件 |
vif |
选中函数内容 |
dif |
删除函数内容 |
cif |
改写函数内容 |
vaf |
选中函数内容(包括函数名 花括号) |
daf |
删除函数内容(包括函数名 花括号) |
caf |
改写函数内容(包括函数名 花括号) |
:sp <filename> |
横向切分窗口并打开文件 |
:vsp <filename> |
竖向切分窗口并打开文件 |
gg=G |
缩进整个文件 |
=a{ |
缩进光标所在代码块 |
=i{ |
缩进光标所在代码块,不缩进”{“ |
<< |
减少缩进 |
>> |
增加缩进 |
== |
自动缩进 |
ctrl+f |
下翻一屏 |
ctrl+b |
上翻一屏 |
ctrl+d |
下翻半屏 |
ctrl+u |
上翻半屏 |
s |
替换字符(删除光标处字符,并进入插入模式,前可接数量) |
S |
替换行(删除当前行,并进入插入模式,前可接数量) |
cc |
改写当前行(删除当前行并进入插入模式),同 S |
cw |
改写光标开始处的当前单词 |
ciw |
改写光标所处的单词 |
caw |
改写光标所处的单词,并且包括前后空格(如果有的话) |
ct, |
改写到逗号 |
c0 |
改写到行首 |
c^ |
改写到行首(第一个非零字符) |
c$ |
改写到行末 |
C |
改写到行末(同 c$) |
ci" |
改写双引号中的内容 |
ci' |
改写单引号中的内容 |
ci) |
改写小括号中的内容 |
ci] |
改写中括号中内容 |
ci} |
改写大括号中内容 |
cit |
改写 xml tag 中的内容 |
cis |
改写当前句子 |
ciB |
改写’{}’中的内容 |
c2w |
改写下两个单词 |
ct( |
改写到小括号前 |
x |
删除当前字符,前面可以接数字,3x代表删除三个字符 |
X |
向前删除字符 |
dd |
删除当前行 |
d0 |
删除到行首 |
d^ |
删除到行首(第一个非零字符) |
d$ |
删除到行末 |
D |
删除到行末(同 d$) |
dw |
删除当前单词 |
dt, |
删除到逗号 |
diw |
删除光标所处的单词 |
daw |
删除光标所处的单词,并包含前后空格(如果有的话) |
di" |
删除双引号中的内容 |
di' |
删除单引号中的内容 |
di) |
删除小括号中的内容 |
di] |
删除中括号中内容 |
di} |
删除大括号中内容 |
diB |
删除’{}’中的内容 |
dit |
删除 xml tag 中的内容 |
dis |
删除当前句子 |
d2w |
删除下两个单词 |
dt( |
删除到小括号前 |
dgg |
删除到文件头部 |
dG |
删除到文件尾部 |
d} |
删除下一段 |
d{ |
删除上一段 |
u |
撤销 |
U |
撤销整行操作 |
CTRL-R |
撤销上一次 u 命令 |
J |
连接若干行 |
gJ |
连接若干行,删除空白字符 |
. |
重复上一次操作 |
~ |
交换大小写 |
g~iw |
替换当前单词的大小写 |
gUiw |
将单词转成大写 |
guiw |
将当前单词转成小写 |
guu |
全行转为小写 |
gUU |
全行转为大写 |
gg=G |
缩进整个文件 |
=a{ |
缩进光标所在代码块 |
=i{ |
缩进光标所在代码块,不缩进”{“ |
<< |
减少缩进 |
>> |
增加缩进 |
== |
自动缩进 |
CTRL-A |
增加数字 |
CTRL-X |
减少数字 |
p |
粘贴到光标后 |
P |
粘贴到光标前 |
v |
开始标记 |
y |
复制标记内容 |
V |
开始按行标记 |
CTRL-V |
开始列标记 |
y$ |
复制当前位置到本行结束的内容 |
yy |
复制当前行 |
Y |
复制当前行,同 yy |
yt, |
复制到逗号 |
yiw |
复制当前单词 |
3yy |
复制光标下三行内容 |
v0 |
选中当前位置到行首 |
v$ |
选中当前位置到行末 |
vt, |
选中到逗号 |
viw |
选中当前单词 |
vi) |
选中小括号内的东西 |
vi] |
选中中括号内的东西 |
viB |
选中’{}’中的内容 |
vis |
选中句子中的东西 |
gv |
重新选择上一次选中的文字 |
:set paste |
允许粘贴模式(避免粘贴时自动缩进影响格式) |
:set nopaste |
禁止粘贴模式 |
"?yy |
复制当前行到寄存器 ? ,问号代表 0-9 的寄存器名称 |
"?p |
将寄存器 ? 的内容粘贴到光标后 |
"?P |
将寄存器 ? 的内容粘贴到光标前 |
:registers |
显示所有寄存器内容 |
:[range]y |
复制范围,比如 :20,30y 是复制20到30行,:10y 是复制第十行 |
:[range]d |
删除范围,比如 :20,30d 是删除20到30行,:10d 是删除第十行 |
ddp |
交换两行内容:先删除当前行复制到寄存器,并粘贴 |
/pattern |
从光标处向文件尾搜索 pattern |
?pattern |
从光标处向文件头搜索 pattern |
n |
向同一方向执行上一次搜索 |
N |
向相反方向执行上一次搜索 |
* |
向前搜索光标下的单词 |
# |
向后搜索光标下的单词 |
:s/p1/p2/g |
替换当前行的p1为p2 |
:%s/p1/p2/g |
替换当前文件中的p1为p2 |
:%s/<p1>/p2/g |
替换当前文件中的p1单词为p2 |
:%s/p1/p2/gc |
替换当前文件中的p1为p2,并且每处询问你是否替换 |
:10,20s/p1/p2/g |
将第10到20行中所有p1替换为p2 |
:%s/1\\2\/3/123/g |
将“1\2/3” 替换为 “123”(特殊字符使用反斜杠标注) |
:%s/\r//g |
删除 DOS 换行符 ^M |
:g/^\s*$/d |
删除空行 |
:g/test/d |
删除所有包含 test 的行 |
:v/test/d |
删除所有不包含 test 的行 |
:%s/^/test/ |
在行首加入特定字符(也可以用宏录制来添加) |
:%s/$/test/ |
在行尾加入特定字符(也可以用宏录制来添加) |
:sort |
排序 |
:g/^\(.\+\)$\n\1/d |
去除重复行(先排序) |
:%s/^.\{10\}// |
删除每行前10个字符 |
:%s/.\{10\}$// |
删除每行尾10个字符 |
------------- 💖 🌞 本 文 结 束 😚 感 谢 您 的 阅 读 🌞 💖 -------------