说明

摘录vim编辑器的常用按键

网上参考


vim教程

:help tutor@cn

常用按键

d                              ###< 剪切
y                              ###< 复制
s                              ###< 剪切并进入insert模式
p                              ###< 粘帖

自动编排格式

可视模式选中代码行后按’=’

重复操作

.                               ###< 重复上次的命令
10dd                            ###< 在按键前加数字(重复次数)
100iinsert[ESC]                 ###< 插入100个insert

缩进代码

>>
<<

移动、跳转

    k
h       l
    j
w                              ###< 光标往前移动一个词
b                              ###< 光标往后移动一个词
0                              ###< 移动光标到当前行首
^                              ###< 移动光标到当前行的第一个字母位置
$                              ###< 移动光标到行尾
)                              ###< 移动光标到下一个句子
(                              ###< 移动光标到上一个句子
H                              ###< 移动光标到屏幕上面
M                              ###< 移动光标到屏幕中间
L                              ###< 移动光标到屏幕下面

b, w                           ###< 移动到上,下一个词
gg, G                          ###< 跳到文档开头,结尾
100G                           ###< 跳到第100行

%                              ###< 跳到括号匹配处
*                              ###< 匹配当前单词,移动到下一个匹配单词
#                              ###< 匹配当前单词,移动到上一个匹配单词

书签

ma                             ###< 在当前光标的位置标记一个书签,名字为a(书签名只能是小写字母)
`a                             ###< 到书签a处
`.                             ###< 到你上次编辑文件的地方

插入

i                              ###< 在当前字符的左边插入
I                              ###< 在当前行首插入
a                              ###< 在当前字符的右边插入
A                              ###< 在当前行尾插入
o                              ###< 在当前行下面插入一个新行
O                              ###< 在当前行上面插入一个新行
c{motion}                      ###< 删除motion命令跨过的字符并进入insert模式
d{motion}                      ###< 删除motion命令跨过的字符

退出:

:q!                            ###< 不保存退出
:wq                            ###< 保存退出
ZZ                             ###< 保存并退出

undo & redo

u                              ###< undo
<C+r>                          ###< redo

复制粘帖剪切:

p                              ###< 粘帖
]p                             ###< 粘帖 自动调整被粘贴的文本的缩进去适应当前代码的位置
dd                             ###< 剪切整行
S                              ###< 剪切整行后进入insert模式
dw                             ###< 剪切一个单词
cw                             ###< 剪切一个单词后进入insert模式
s                              ###< 剪切一个字符
x                              ###< 剪切一个字符后进入insert模式
D                              ###< 剪切至行尾
xp                             ###< 交换两个字符
ddp                            ###< 交换两行
yy,Y                          ###< 复制一行

可视模式即选择模式 配合y(复制),p(粘帖)

v                              ###< 进入基于字符的可视模式
V                              ###< 进入基于行的可视模式
y                              ###< 复制选择的部分
d                              ###< 剪切选择的部分

翻页

<C+f>, <C+b>                   ###< 向下,上翻页
<C+d>, <C+u>                   ###< 向下,上半翻页

跳到第23行

23gg,23G,:23

查找替换

<C-w> f                        ###< 查找词
gf                             ###< 查找词
/text                          ###< 从当前光标处开始搜索字符串text
?text                          ###< 和上面类似,但是是反方向
#                              ###< 从光标向后查找整个关键词
*                              ###< 从光标向前查找整个关键词
:s/if/else                     ###< 查找替换下一个if
:%s/if/else                    ###< 查找替换所有if
:s/if/else/g                   ###< 只对当前行有效
:1,3 s/if/else/g               ###< 只对1,3行有效
正则表达区别:词头锚定用\而不是^
:grep /\<main\>/ src/*.c       ###<
:vimgrep /\<main\>/ src/*.c    ###<

窗口

:split/vsplit                  ###< 分隔一个窗口
:new/vnew                      ###< 创建一个新的窗口
:sf xxx                        ###< 在新窗口中打开xxx文件
:close                         ###< 关闭当前窗口
:only                          ###< 关闭除当前窗口外所有窗口
<C-w> v                        ###< 分割
<C-w> h                        ###< 到左面的窗口
<C-w> j                        ###< 到下面的窗口
<C-w> k                        ###< 到上面的窗口
<C-w> l                        ###< 到右面的窗口
<C-w> t                        ###< 到顶部的窗口
<C-w> b                        ###< 到底部的窗口
<C-w> w                        ###< 切换窗口
<C-w> >                        ###< 调整窗口大小
<C-w> <                        ###< 调整窗口大小

跳转

[[ 向前跳到顶格的第一个"{"
[] 向前跳到顶格的第一个"}"
][ 向后跳到顶格的第一个"{"
]] 向后跳到顶格的第一个"}"
[{ 跳到本代码块(由{}界定)的开头
[} 跳到本代码块的结尾

NERD Commenter注释代码

,c Space                       ###< 注释代码
,c u                           ###< 取消注释
,c c                           ###< 注释当前行

vim快捷键图示