在用Vim快捷键但是不太上手,看到一份很好的整理Vim命令合集
校正了部分笔误并测试后整理如下,挂在网上方便查阅。
(原文没有版权申明,如果搬运不当,我表示歉意并将马上删除。)
Esc
正常模式
i
插入模式
(除了键入字符,其他命令都需要在正常模式下才能运行)
v
可视模式, 字符选择,会将光标经过的地方反白选择
V
行选择, 会将光标经过的行反白选择
以:
和/
开头的命令都有历史记录,可以键入:
或/
然后按上下键来获得
%
括号匹配
i
在当前位置前插入(正常模式下选中的范围前)
I
在当前行的行首插入
a
在当前位置后插入(正常模式下选中的范围后)
A
在当前行的行尾插入
o
在当前行后插入新的一行
O
或Shift+o
在当前行前插入新的一行
/text
查找text,回车后出现查找结果,按n键跳转下一个,按N键跳转上一个
?text
查找text,回车后出现查找结果,反向查找,按n键跳转上一个,按N键跳转下一个
:set ignorecase
忽略大小写
:set noignorecase
不忽略大小写
:set hlsearch
高亮显示全部搜索结果
:set nohlsearch
关闭高亮搜索显示
:nohlsearch
关闭当前的高亮搜索显示,但如果再次搜索或按下n/N键,会再次高亮
:set incsearch
逐步搜索模式,对每次输入的结果立刻进行搜索
:set wrapscan
重新搜索
r
切换到替换模式,继续输入即可替换当前字符
:s/old/new/
用new替换当前行中第一个匹配的old
:s/old/new/g
用new替换当前行中所有匹配的old
:%s/old/new/
用new替换所有行中第一个匹配的old
:%s/old/new/g
用new替换所有行中所有匹配的old
:r1,r2, s/old/new/
对于r1-r2行进行替换(其他类似)
例子::10,20, s/^/ /g
在10-20行每行前加两个tab空格缩进
ddp
交换光标所在行和其下紧邻的下一行(剪切粘贴原理)
xp
交换当前字符和其后一个字符
h
左移一个字符
l
右移一个字符
k
上移一行
j
下移一行
(可以在前面加上数字使用,比如10j
就是下移10行)
w
右移一个符号/字符串,光标停在单词词首
b
左移一个符号/字符串,光标停在单词词首
e
右移一个符号/字符串,但光标停在单词词尾
ge
左移一个符号/字符串,但光标停在单词词尾
^
移动到当前行第一个非空白字符
0
或home
移动到当前行行首
$
移动到当前行行尾
3$
移动到下面3行的行尾
gg
移动到文件头
G
移动到文件尾
fx
将移动到光标后第一个x的位置 3fx
将移动到第三个x的位置
Fx
反向查找,移动到光标前第一个x的位置
:r1
或r1+G
跳到第r1行第一个非空白字符处
Ctrl+e
向下滚动一行
Ctrl+y
向上滚动一行
Ctrl+d
向下滚动半屏
Ctrl+u
向上滚动半屏
Ctrl+f
向下滚动一屏
Ctrl+b
向上滚动 一屏
u
撤销(undo)
Ctrl+r
重做(redo)
x
或dl
删除当前字符
3x
删除当前光标开始向后三个字符
X
或dh
删除当前字符的前一个字符
dd
删除当前行
dj
删除当前行以及上一行
dk
删除当前行以及下一行
D
或d$
删除当前字符至行尾
kdgg
删除当前行之前的所有行
jdG
删除当前行之后的所有行
:r1, r2d
删除r1到r2行
:r1, $d
删除r1到最后一行
J
或shift+j
删除两行间的空行
yy
拷贝当前行
p
在当前光标后粘贴,如果之前用了yy
复制,那么在当前行的下一行粘贴
nyy
拷贝当前行到下n-1行,即包括当前行一共复制n行
Shift+p
在当前行之前粘贴
:r1, r2 co r3
将r1-r2行内容复制后粘贴到r3的下一行
:1, $ co \$
将整个文件内容复制后粘贴到文件尾部
ddp
交换当前行和下一行
xp
交换当前字符和其后一个字符
dd
剪切当前行
ndd
类似nyy
,剪切当前行到下n-1行
:r1, r2d
剪切,p
即可粘贴(所以删除其实就是剪切)
:r1, r2 m r3
将r1-r2行移动到r3的下一行
:wq
或ZZ
保存并退出
:q!
强制退出并忽略更改
:e!
放弃修改,并打开原文件
:split
或:new
打开新窗口,光标停在顶层的窗口上
:split file
或:new file
新窗口打开文件
使用:vsplit
可以纵向打开窗口
Ctrl+ww
移动到下一个窗口
Ctrl+wj
移动到下方的窗口
Ctrl+wk
移动到上方的窗口
:close
关闭窗口
:q
退出
:only
只保留当前窗口,关闭其他窗口
(利用替换命令)
:r1, r2 s/^/#/g
注释r1-r2行(将每行行首替换为#)
:r1, r2 s/^#//g
取消注释
:1, $ s/^/#/g
注释整个文档
:%s/^/#/g
注释整个文档