工作中VIM最常集合
打开文件:(默认为编辑模式)
vim [+ linenum] file 打开文件后光标在到指定行
例:# vim +10 /etc/inittab 注:vim打开inittab文件后光标定位到第10行
vim + file 打开文件后光标至尾部
例:# vim + /etc/inittab 注:vim打开后光标在文件尾行
vim +/pattern 打开文件后,定位至第一次被模式匹配到的行首
例:# vim +/set /etc/inittab 注:vim打开后光标定位在set第一次出现的位置,/后面可以是正则表达式
关闭文件:
底行模式下:
w 保存
q 退出
! 不保存
w! 强行保存(root)
wq --> x一样
编辑模式下:
ZZ 保存退出
移动光标:(编辑模式)
1 逐字符移动
h 左
l 右
j 下
k 上
#h 移动#个字符
2 以单词为单位移动
w 移动到下一个单词首
e 跳至当前或下一个单词的词尾
b 跳至当前或前一下单词的词首
#w 同上
3 行业移动
0 行首
^ 字符串首
$ 行尾
4 行间移动
#G 跳转至#行
G 最后一个
底行模式: 直接给出行号
翻屏(编辑):
Ctrl+f 向下翻一屏
Ctrl+b 向上翻一屏
Ctrl+d 向下翻半屏
Ctrl+u 向上翻半屏
删除单个字符:
x 删除光标所在处单个字符
#x 删除光标所在及后的#字符
删除命令
d 和 跳转命令组合使用
#d跳范围(例:#dw #de)
dd 删除光标所在行
#dd 删除光标所在行内的#行
底行模式:
StartADD,EndADD
. 表示当前行
$ 最后一行(-n 相对操作 倒数第n行)
+# 下行的#行
粘贴命令
p 当前行之下
p 当前行之上
复制命令
用法同d
替换:
R 替换模式
撤消编辑
u 撤消前一次的编辑
连续u命令可以撤消此前n次编辑操作
#u 直接撤消最近#次操作
可视化模式
v 按字符选取
V 按矩形选取
查找:
/pattern
?pattern
n
N
查找并替换:
在底行模式下使用s命令
ADDR1,ADDR2s@pattern@string @可以使用其它符号
% 表示全文
例:%s:pattern:string:g
vim编辑多个文件
vim file1 file2 ...
:next 切换到下一个文件
:prev 切换至前一个文件
:last 切换至最后一个文件
:first 切换至第一个文件
退出
:qa 全部退出
分屏显示
Ctrl+w,s 水平拆分
Ctrl+w,v 垂直拆分
窗口间切换光标:
Ctrl+w, kjhl
分窗口编辑多个文件
vim -o 水平
vim -O 垂直
将当前文件中的部分内容另存为
底行模式下
:w
:ADDR1,ADDR2w /path/to/file
将另一个文件读入当前文件
:r /path/to/file
vim中直接使用shell命令方式
:! command
高级话题
set nu 显示行号
set nonu 取消行号
忽略大小写
:set ic 忽略大小写
:set noic 取消忽略大小写
设定自动缩进
:set ai 开启缩进
:set noai 取消缩进
查找到的文件高亮显示与取消
:set hlsearch
:set nohlsearch
语法高亮:
:syntax on 开
:syntax off 关
配置文件
全局: /etc/vimrc
用户: ~/.vimrc
vim模式:
编辑模式(命令模式)
输入模式
底行模式
模式转换:
编辑 --> 输入:
i: 在当前光标所在字符前,转为输入模式
a: 在当前光标所在字符后,转为输入模式
o: 在当前光标所在行的下方,新建一行,转为输入模式
I: 在当前光标所在行的行首
A: 在当前光标所在行的行尾
O: 在当前光标所在行的上方,新建一行