vim是vi的增强版,linux的重要哲学思想之一就是一切皆文件,而在系统上配置文件绝大多数都是使用文本文件保存的,所以掌握一个功能强大,方便易用的文本编辑器对于linux的系统管理是非常有必要的。
vim的使用:
1.使用vim打开文件
vim [options] file
如果文件存在,则vim会打开该文件
如果文件不存在,则vim会创建该文件
在使用vim打开文件时常用到的选项:+num +/PATTERN
vim +# file 表示在打开该文件的时候直接将光标定位至第#行
vim + file 表示在打开该文件的时候直接将光标定位至最后一行
vim +/PATTERN file 表示在打开该文件的时候将光标定位至第一次被模式匹配到的行
vim是一个模式化的编辑器:
2.vim的模式:编辑模式(命令模式)
输入模式
末行模式
替换模式 //
可视化模式 //
编辑模式:也成为命令模式,在这个模式下从键盘的输入被vim解析成命令,而不会作为字符输入
输入模式:在该模式下,就是正常的编写
末行模式:同命令模式类似,但是功能更加强大
3.vim的模式转换
使用vim打开一个文件默认进入命令模式
如图:输入模式和末行模式都必须从命令模式进入
命令模式转入输入模式:i,a,o,I,A,O
i:当前光标所在字符前面转入,输入的字符在当前光标字符的前一个
a:当前光标所在字符后面转入,输入的字符在当前光标字符的后一个
o:在当前光标所在行的下方新建一行转入
I:在当前光标所在行的行首转入
A:在当前光标所在行的行尾转入
O: 在当前光标所在行的上方新建一行转入
输入模式转回命令模式:Esc键
命令模式转入末行模式:
:输入一个冒号转入末行模式
末行模式退回命令模式:Esc键
末行模式下常用的简单命令:
:set nu 在每行的行首加上行号
:#d 删除第#行
:#1,#2d 删除从#1行到#2行(.表示当前行,$表示最后一行,+#表示从当前行向下的#行)
:s/PATTERN/string/g 将模式匹配到的全局替换
:!COMMAND 在不退出vim的情况下执行bash命令
4.光标移动(常用,难点)
(1)逐个字符移动:h,j,k,l
都可以在前面加#号,表示一次向..移动#个字符
(2)逐个单词移动
[#]w:移动到下一个单词的词首
e:移到当前单词的词尾或下一个单词的词尾(end)
b:移到当前单词的词首或前一个单词的词首(begin)
在这些命令前面加#表示一次向..移#个单词
(3)行内跳转
0(数字0):快速跳至当前行首(绝对行首)
^:移动光标到当前行的第一个字符前(相对行首)
$:移动光标到当前行的行尾
(4)行间跳转
#G:直接跳转到第#行
G:跳转到最后一行
末行模式下 :# 跳转到第#行
:$ 跳转到最后一行
5.翻屏
ctrl+f:向下翻一屏
ctrl+b:向上翻一屏
ctrl+d:向下翻半屏 //联想记忆:down
ctrl+u:向上翻半屏 //up
6.删除(难点)
删除单个字符
x:删除光标所在的字符
#x:从光标所在的字符开始向后一共删除#个字符
d命令
d删除命令可以和跳转命令结合使用
d w :表示删除当前光标所在字符到下一个单词的词首之间的内容
d 3e:表示删除从当前光标所在字符到光标将会跳转到的位置
#d 3e:删除跳转符指定范围的#个范围
dd:表示删除当前行
#dd:表示删除从当前行开始向后一共#行
7.复制(常用,难点)
y命令
用法同d命令
yy为复制当前行
需要和跳转命令结合使用才能达到复制的灵活性
8.粘贴
在执行粘贴操作的时候,粘贴的内容是最近一次的删除内容或者是最近一次的复制内容
p命令和P命令
p:如果最近一次复制或删除的是整行内容,则粘贴在光标所在行的下方
不是整行内容,则粘贴在光标所在字符的后面
P:如果最近一次复制或删除的是整行内容,则粘贴在光标所在行的上方
不是整行内容,则粘贴在光标所在字符的前面
9.替换
r:常用语替换单个字符,即光标所在的字符
R:从命令模式转入替换模式
可以随光标的移动替换多个字符
10.可视化模式
进入可视化模式,就可以突破vim中跳转命令的局限性,同windows中的鼠标下拉一下,随选中的内容进行相应的操作
v和V命令
v和V都可以从命令模式转入可视化模式
v:转入可视化模式之后,对于覆盖内容选取是根据字符选取的
V:转入可视化模式之后,对于覆盖内容的选取是根据行选取的
11.撤销编辑操作
u命令
u命令可以撤销前一次的编辑操作
可以连续使用u命令,实现撤销n次编辑操作
#u:明确指定撤销多少次操作
如何对撤销这个操作进行撤销:
ctrl+r :撤销最近一次的撤销操作
12.重复此前的操作
.可以重复执行此前的操作
13:查找(常用)
在命令模式下(在末行模式下也可以)
/PATTERN 从当前光标所在行向尾部进行搜索
?PATTERN 从当前光标所在行向首部进行搜索
n和N用于在匹配到的模式(高亮显示)之间进行跳转
n:向下进行跳转,即跳转到下一个模式匹配的位置
N:下上进行跳转,即跳转到上一个模式匹配的位置
这对于在各种服务配置文件进行快速参数定位的时候,查找是十分有效的
14.查找并替换(常用)
vim支持sed,在末行模式下
:addr1,addr2s/PATTERN/string/g
g表示全局替换
在一些场合下,此功能是比较常用的
在使用vim编辑文件或者是写脚本的时候,跳转,复制,粘贴,删除等都是比较常用的功能,其中复制,粘贴等都集合了跳转,所以灵活的使用需要不断的练习
在命令模式能够使用的命令基本在末行模式都可以使用,末行模式比在命令模式可以实现更多的功能
15.退出vim编辑器
命令模式:ZZ 表示保存退出
末行模式:w 表示保存
wq 保存退出
16.使用vim编辑多个文件
当使用vim打开多个文件时
vim file1 file2
在vim编辑不同的文件的时候,复制,粘贴的内容是可以共享的,但是不能和外部复制内容共享,这一点很容易理解,那就是vim将复制的内容保存在自己的进程地址空间中
在vim打开多个文件的时候,由于vim是一个全屏编辑器,所以只会显示第一个文件内容
所以,当同时编辑多个文件的时候,常用到的操作就是需要在这些文件之间来回切换
末行模式 :next 在末行模式下使用next命令可以切换至下一个文件
:prev 该命令可以切换至上一个文件
:last 该命令可以切换至最后一个文件
:first 该命令可以切换至第一个文件
:q退出当前文件
:qa 退出所有文件的编辑