vim操作小结

vim操作小结,供复习使用

vim

命令模式

光标移动

h j k l:左下右上
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$:删到行尾并切换插入模式
  • c0c^cwcb….

复制粘贴

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:按块选择

批量操作

  1. 在首行批量加#注释:v => 选择行 => ctrl+v => I => #+ESC+ESC
  2. 取消首行#操作:ctrl+v=> 选择行 => d

寄存器

相当于剪切板,linux上有a-z及一个未命名共27个寄存器

3"ayy:复制3行存放开a寄存器
"ap:粘贴寄存器上的内容

小技巧

~:大小写转换
.:重复上次操作
r:进入替换状态,再按替换当前字符
R:切换替换模式,再输入替换多个字符
ZZ:保存退出,同:wq
20iSTR+ESC:输入20个STR

末行模式

末行模式下输入完后按ENTER执行,在末行模式中

.:当前行
$:最后一行
+n:向下n行
%:全文

地址定界

:.,$:当前行到尾行
:%:全文,等同:1,$

查找替换

有关正则表达式内容见grep用法篇

:m,ns/old/new/gic
:m,ns@old@new@gic

m,n:第m行到n行
s:替换
g:全文
i:忽略大小写
c:替换时一个一个确认

1
2
3
4
5
:1,10s/old/new/g                # 替换110行的old为new  
:2,7s/^/#/g # 注释27
:6,11s@^#@@g # 删除611行的开头#
:.,$s@^@//@g # 当前行到尾行开头添加//(如用`/`时,内容出现`/`需要用`\`转义) 即::.,$s/^/\/\//g
:%s@^t\([[:alpha:]]\+\)@T\1@g # 全文以t开头单词换成T开头,支持正则表达式相关规则,也可以用`&`表示前面括号匹配到的内容

配置

: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打开官方提供的练习