命令模式
光标移动
hjkl:左下右上w:移到下一词首b:移到上一词首e:移到下一词尾
以上支持前加数字组合操作- 5w:向后移5个单词
gg:移到首行G:移到尾行^:移到行首非空字符0:移到行首$:移到行尾nG:移到第n行H:移到当前屏首行M:移到当前屏中间行L:移到当前屏尾行%:匹配光标所在单词,移动到下一个相同单词#:匹配光标所在单词,移动到上一个相同单词
翻屏
ctrl+f:向后翻一屏ctrl+b:向前翻一屏ctrl+d:向后翻半屏ctrl+u:向前翻半屏
删除剪切
x:删除光标所在单个字符dd:删除光标所在行dw:删除光标所在的词,不包括光标处及之前
以上支持加数字组合- 5dw:向后删5个词
da{: 删除当前光标所在的最近一对大括号(包括括号)的内容ya[: 复制当前光标所在的最近一对中括号(包括括号)的内容
- 大括号,中括号和小括号都适用
d$:删除光标到行尾dgg:删除光标所在行至首行dG:删除光标所在行至尾行c:改变命令,作用等同于d再切换插入模式
cc:删除当前行并切换插入模式c$:删到行尾并切换插入模式c0,c^,cw,cb….
复制粘贴
yy:复制光标所在行,5yy复制5行p:在光标下行粘贴P:在光标上行粘贴
撤销
u:撤销上一次操作,3u撤销3次ctrl+r:反撤销一次
查找
/STR:向下查找STR字符/\CSTR:不区分大小写向下查,下同?STR:向前查找STR字符
n:下一个查找结果,?STR时向前查找N:上一个查找结果,?STR时向后查找
切换插入模式
i:光标前a:光标后o:下一行I:行首A:行尾O:上一行
切换可视化模式
进入可视化模式后通过上下左右选择内容后,可进行复制,剪切等操作
v:按字符选择V:按行选择ctrl+v:按块选择
批量操作
- 在首行批量加#注释:
v=>选择行=>ctrl+v=>I=>#+ESC+ESC - 取消首行#操作:
ctrl+v=>选择行=>d
寄存器
相当于剪切板,linux上有a-z及一个未命名共27个寄存器
3
"ayy:复制3行存放开a寄存器"ap:粘贴寄存器上的内容
小技巧
~:大小写转换.:重复上次操作r:进入替换状态,再按替换当前字符R:切换替换模式,再输入替换多个字符ZZ:保存退出,同:wq20iSTR+ESC:输入20个STR
末行模式
末行模式下输入完后按ENTER执行,在末行模式中
.:当前行$:最后一行+n:向下n行%:全文
地址定界
:.,$:当前行到尾行:%:全文,等同:1,$
查找替换
有关正则表达式内容见grep用法篇
:m,ns/old/new/gic:m,ns@old@new@gicm,n:第m行到n行
s:替换
g:全文
i:忽略大小写
c:替换时一个一个确认
1 | :1,10s/old/new/g # 替换1到10行的old为new |
配置
:set nu:显示行号,:set nonu:set ic:忽略大小写,:set noic:set hlsearch:搜索高亮,:set nohlsearch:set ai:按回车自动缩进,:set ai:syntax on:语法颜色开,:syntax on:set ts=4:设定TAB为4空格:set list:显示制表符和换行符
- 以上设置只对当前窗口生效,如需一直生效,则将设置写入
~/.vimrc,此文件需手工创建
保存退出
:q:不保存退出:q!:强制不保存退出:w:保存不退出:w!:强制保存:wq:保存退出 ,等同x:wq!:强制保存退出:e!:恢复原样
小技巧
:w filename:另存为filename:r filename:将filename文件内容粘到光标下一行:!<命令>:在不退出情况下执行<命令>操作:r!<命令>:将<命令>执行结果插入到光标下一行
多文件多窗口
vim -[o|O] file1 file2...可实现开多个文件多窗口模式
- -o:水平叠放
- -O:垂直
:next:下一文件:prev:上一文件:first:第一个文件:last:最后一个文件:qall:退出所有不保存:wall:保存所有:wqall:保存退出所有
- 单文件也可以打开多窗口
ctrl+w,s:水平ctrl+w,v:垂直ctrl+w,hjkl:切换
其它
~/.viminfo:记录vim操作历史./.filename.swp:当前目录下,记录当前vim操作,如果正常退出则自动删除,不正常退出时需手动删除才能正常打开原文件
以上为vim常用的技巧,但vim的功能远不止此,有兴趣可自行google,也可vimtutor打开官方提供的练习
