blog
blog copied to clipboard
vim 常用操作总结

Vim 配置:https://github.com/chenxiaochun/editor-preferences/blob/master/.vimrc
指令列表
移动光标操作
-
^,移动到当前行的第一个字符位置 -
$,移动到当前行的最后一个字符位置 -
0,移动到当前行首 -
gg,移动到文件开头 -
shift+g,移动到文件末尾 -
ctrl+o,回到上一次光标的位置 -
j,往下移动一行 -
k,往上移动一行 -
l,往后移动一个字符 -
h,往前移动一个字符 -
w,向后移动一个单词,光标停留在单词首部 -
W,向后移动,忽略标点符号 -
e,向后移动一个单词,光标停留在单词尾部 -
E,向后移动,忽略标点符号 -
b,向前移动一个单词,光标停留在单词首部 -
B,向前移动,忽略标点符号 -
ge,向前移动一个单词,光标停留在单词尾部 -
:n,移动到第 n 行 -
nG,移动到第 n 行的行首。例如:10G,移动到第 10 行的行首 -
n$,移动到相对于当前行的第 n 行的行尾。例如:1$是移动到第当前行的行尾;2$是移动到下一行的行尾 -
{和},以函数级上下移动 -
zz,将当前行置于屏幕中间 -
zt,将当前行置于屏幕顶端 -
zb,将当前行置于屏幕底端
翻页滚动操作
-
ctrl+b,往上翻一页 -
ctrl+f,往下翻一页 -
ctrl+d,往下滚动半屏 -
ctrl+u,往上滚动半屏 -
ctrl+e,往下滚动一行 -
ctrl+y,往上滚动一行
选择操作
-
v,进入 visual 模式,使用j/k/h/l进行文本选择 -
ctrl+v,进入 visual block 模式,使用j/k可选中一行或者多行。此时按shift+i可进入多行编辑模式,完成之后按esc -
v+e,选择一个单词 -
vip,选中一个上下以空行分隔的段落,p是段落的意思 -
vit,用来在类 html 代码中选中标签包裹的内容,不包含标签本身,t是 tag 标签的意思 -
vat,用于在类 html 代码中选中标签本身以及它所包裹的内容 -
V,使用j/k选择多行 -
VG,选择从当前光标到文末的所有内容,并高亮显示
说明:vi命令后面可以接任意你想选择的包裹字符,比如:vi<:选中尖括号之间的内容;vi":选中双引号之间的内容,等等。可以自己探索尝试
复制粘贴操作
同一文件:
-
yw,复制光标所在位置的单词 -
yy或者Y,复制当前行 -
yG,复制从当前光标到文末的所有内容 -
y,复制文本 -
yi',复制'之间的字符 -
d,剪切文本 -
di',剪切'之间的字符 -
p,粘贴在光标后面 -
P,粘贴在光标前面
跨文件:
-
"+y,复制文本 -
"+p,粘贴文本
插入操作
-
O,在当前行的前面追加一行 -
o,在当前行的后面追加一行 -
i,在光标之前插入字符 -
I,在行首插入字符 -
a,在光标之后插入字符 -
A,在行尾插入字符
删除操作
normal 模式:
-
x,删除光标所在的字符 -
X,删除光标左边的字符 -
dd,删除当前行 -
dG,删除从光标到文末的所有内容 -
D,删除从光标到本行末尾的字符 -
s,删除光标所在的字符并开始插入 -
S或者cc,删除光标所在行并开始插入 -
:1,10d,删除指定行内容,例如删除第 1 至 10 行的内容 -
J,删除两行之间的换行符
说明:在 vim 中,.表示当前行,所以1,.表示从第 1 行到当前行,按d表示删除
insert 模式:
-
ctrl+w,删除从当前光标到单词开始位置的所有字符
修改字符操作
normal 模式:
-
r,修改光标所在位置的字符 -
R,修改光标所在位置的字符,可以一直修改,直到按下ESC键 -
ci',修改'之间的字符 -
ciw,修改光标所在位置的单词
visual 模式:
-
c,删除当前选择的字符并进入插入状态
查找操作
-
/,从上往下查找 -
?,从下往上查找 -
#,向上查找光标所在的单词 -
*,向下查找光标所在的单词 -
n,查找下一个 -
N,查找上一个 - 在当前路径下全局查找字符,例如“foo”:
:vim foo src/** | copen
查找替换操作
-
:%s/foo/bar,将找到的第一个 foo 替换为 bar -
:%s/foo/bar/g,全局替换 foo 为bar -
:%s/foo/bar/gi,全局替换,i表示大小写不敏感 -
:%s/foo/bar/gI,全局替换,I表示大小写敏感 -
:%s/foo/bar/gc,全局替换,c表示需要对每一次替换进行确认
批量缩进
在选中相应的文本后:
-
>>,往里缩进 -
<<,往外缩进
代码折叠/展开操作
-
zf,折叠代码 -
zM,折叠所有代码 -
zo,展开代码 -
zR,展开所有折叠
文件保存操作
-
ZZ,保存并退出
撤消操作
-
u,撤消命令 -
ctrl+r,恢复撤消 -
.,重复上一次的操作
分屏操作
:sp,水平分屏
:vs,垂直分屏
ctrl+w+w,在分屏之间切换
ctrl+w+c或者:q,关闭当前分屏
ctrl+w+r,交换两个左右分屏的位置
文件路径补全操作
-
ctrl+x, ctrl+f,文件路径补全
shell 操作
ctrl+z,唤起一个临时 shell
fg,退出当前临时shell
其它命令操作
-
:new filename,新建文件 -
:!mkdir name,新建文件夹
异常解决
在安装某些 vim 插件时,如果碰到了以下提示:
requires Vim compiled with Python (2.6+ or 3.3+) support
可以尝试配置一下此参数:
let g:python3_host_prog = '/usr/local/bin/python3'
插件技巧
vim-surround
-
cst<p>,将光标所在位置的标签修改为 p 标签,同时会删除原来标签上的所有属性 -
cst<p,将光标所在位置的标签修改为 p 标签,并保留原来标签上的属性