个人整理的vim常用关捷健操作
移动光标 #
ctrl + a:快速移动到 shell 的行头
ctrl + e:快速移动到 shell 的行尾
alt + b(esc + b):往左移动一个单词
alt + f(esc + f):往后移动一个单词
编辑命令 #
ctrl + w:由光标开始,往左删除单词。往行首删
alt + d:由光标位置开始,往右删除单词。往行尾删
esc + d:由光标位置开始,删除单词,直到该单词结束
ctrl + k:由光标所在位置开始,删除右方所有的字符,直到该行结束
ctrl + u:由光标所在位置开始,删除左方所有的字符,直到该行开始
ctrl + _:撤销操作
vim #
多文件操作 #
vim file1 file2:打开多个文件
:ls:列出所有 vim 打开的文件
:b{文件序号}:显示第几个序号的文件
:bn:进行上一个文件的切换
:bp:进行下一个文件的切换
分屏操作 #
vim -On file1 file2 ...:左右分屏
vim -on file1 file2 ...:上下分屏
:sp file:上下分屏展示当前文件和新的 file
:vsp file:左右分屏展示当前文件和新的 file
分屏后移动光标
ctrl + w h:移动光标到左屏
ctrl + w l:移动光标到右屏
ctrl + w j:移动光标到下屏
ctrl + w k:移动光标到上屏
ctrl + w c:关闭当前分屏
vim 退出 #
:qa!:退出所有的文件,对所有的文件修改都不做保存。
ZZ:当你对文件进行了修改,需要保存退出,快速操作
输入 #
i:在光标所在的字符之前插入需要录入的文本。
I :在光标所在行的行首插入需要录入的文本。
a :在光标所在的字符之后插入需要录入的文本。
A :在光标所在行的行尾插入需要录入的文本。
o :光标所在行的下一行行首插入需要录入的文本。
O :光标所在行的上一行行首插入需要录入的文本。
s :删除光标所在处的字符然后插入需要录入的文本。
S :删除光标所在行,在当前行的行首开始插入需要录入的文本。
cw:删除从光标处开始到该单词结束的所有字符,然后插入需要录入的文本
caw:删除当前的单词,然后插入需要录入的文本
命令模式下set指令 #
:set ic:用来不区分大小写的查询
:set noic:用来区分大小写的查询
:set ff?:检查文件编码
:set ff=unix:统一设置编码
:set hls:设置匹配高亮模式
:set nohls:设置匹配不高亮
:nohl:临时关闭高亮
文本处理 #
删除 #
:1,2d:删除第 1 行到第 2 行
:'<,'>g/^$/d:进入可视模式后,输入 : vim 会自动补全为 :'<,'>,这个是可视范围下的操作范围,然后删除所有空行
替换 #
:{作用范围}s/{目标}/{替换}/{替换的标志}
:s/zempty/handsome/g:将会把当前光标所在行的 zempty 替换成 handsome
:%s/zempty/handsome/g:将会把全文中的 zempty 替换成 handsome
:n1,n2s/zempty/handsome/g:这里的 n1 和 n2 值得是行号,将会替换掉 n1 到 n2 的所有 zempty 为 handsome.
:'<,'>s/zempty/handsome/g:进入可视模式后,输入 : vim 会自动补全为 :'<,'>,这个是可视范围下的操作范围
替换标志
g:全局替换
:空替换标志,只替换目标的第一次出现
i:大小写不敏感的替换
I:大小写敏感
gi: 全局不区分大小写替换
c:表示需要确认,vim 会弹出确认框
别名 #
:ab email xxx@gmail.com:后续编辑模式下输入 email,将自动替换为 xxx@gmail.com
选中 #
aw:选中整个单词
va{字符}:选中字符包含的整段
执行指令 #
:!command:vim 中执行 linux 命令
:r !command:将命令的执行结果,添加到文本中
移动光标 #
h:左
l:右
k:上
j:下
gj:去往视觉意义的下一行(有些情况某些行只是展示成了多行,实际还是一行)
gk:去往视觉意义的上一行
{n}k:向上移动 n 行
{n}h:向左移动 n 个单词
ctrl + u:向上翻页
ctrl + d:向下翻页
w:跳转到下一个单词的开头
e:跳转到下一个单词的末尾
W:跳转到下一个单词的开头,只以空格作为分隔符
E:跳转到下一个单词的末尾,只以空格作为分隔符
b:跳转到上一个单词
B:跳转到上一个单词,只以空格作为分隔符
0:移动到开头
$:移动到末尾
^:移动到本行的第一个不是 blank 字符
A:跳转到这一行的末尾插入
I:跳转到这一样的开头插入
g_:移动到本行最后一个不是 blank 字符
f{字符}:移动到本行的目标字符上
{n}f{字符}:移动到本行光标处开始的第 n 个 字符为 a 的地方(n 是 1,2,3,4 … 数字)
F{字符}:同 f{字符} 一样,光标反方向移动
{n}F{字符}:同 {n}f{字符} 类似,光标移动方向同 {n}f{字符} 相反
t{字符}:移动到本行的目标字符的前一个字符
T{字符}:移动到本行的目标字符的下一个字符
;:重复上一条移动的命令
}:跳转到下一个段落
{:跳转到上一个段落
%:跳转到{对应的下一个括号
m{字符}:标记某一处位置
'{字符}:跳转到某一处位置
gi:快速跳转到上一次输入的地方
