一、什么是vi/vim文本编辑器?
vi编辑器是Linux系统下最基本的编辑器,工作在字符模式下。从字面意思上实际上不难理解vi/vim这个工具,就是对文本的编辑,包括添加、修改、保存、内容查找等方面的编辑。vi和vim具有完全相同的功能,vim是vi的一个升级版,两者的区别就是vim增加了一项带有文本颜色的编辑,比如说在编辑一个c语言文本时会,不同的语句会标注出不同的颜色,极大地提高了阅读效率。在Linux操作系统中,还有一款带有图形化界面的编辑器gedit,它相当于我们Windows操作系统中的记事本,不过在centos最小化安装系统中是不能用的,除非你安装的是带有图形化界面的Linux操作系统。
二、vi/vim编辑器的三种工作模式
vi/vim共有三种工作模式,分别是:命令模式(command mode)、插入模式(insert mode)、底行模式(last line mode)。
2.1 命令模式
使用vi编辑器打开文件后默认进入的是命令模式。在该模式下,可通过键盘控制光标的移动及文本内容的复制、粘贴、删除等操作。
(1)光标移动
在命令模式中,光标的移动是非常灵活的,通常我们用到的有以下几种。
操作符 | 功能 |
---|---|
“上键”或k | 光标上移 |
“下键”或j | 光标下移 |
“左键”或h | 光标左移 |
“右键”或l | 光标右移 |
0和$ | 光标移到到行首和行尾 |
gg和G | 光标移动到页首行首和页尾行首 |
nG | 光标定位到第n行行首 |
} | 光标移至段落结尾 |
{ | 光标移至段落开头 |
H | 光标移至屏幕首部 |
L | 光标移至屏幕尾部 |
(2)内容删除 | |
在命令模式下,可同键盘上输入相关字符和数字实现对文本内容的删除操作。 | |
操作符 | 功能 |
:----: | :---------------------: |
x | 删除光标所在单个字符 |
dd | 删除光标所在当前行 |
ndd | 删除光标所在行及其后n行 |
d+^ | 删除光标位置到行首内容 |
d+$ | 删除光标位置到行尾内容 |
dgg | 删除光标所在行到页首 |
dG | 删除光标所在行到页尾 |
(3)复制粘贴 | |
同样,也可对文本内容进行复制、粘贴等操作。 | |
操作符 | 功能 |
:-------: | :------------------------------: |
yy | 复制光标所在行 |
nyy | 复制光标所在行及其后n行 |
ygg | 复制光标所在行到页首 |
yG | 复制光标所在行到页尾 |
p(小写) | 将复制内容粘贴到光标所在行下一行 |
P(大写) | 将复制内容粘贴到光标所在行上一行 |
在命令模式下,还有常用的几种操作: |
- u:撤销。
- .:重复上一次执行命令。
- J:合并两行内容。
- r:替换光标所在字符(按r后,再按其他字符来代替)
2.2 插入模式
对于插入模式来说,只有进入该模式下才能对文本进行内容的添加和修改。该模式与底行模式不能直接转换。
2.3 底行模式
底行模式下,可以退出当前编辑器,同时可对文本进行保存以及对文本内容的查找、另存为等操作。常用的有以下几种。
(1)显示行号::set nu
(2)取消显示行号::set nonu
(3)显示控制字符::set list
(4)取消显示控制字符::set nolist
(5)光标定位到第n行::n
(6)关键字查找::/输入查找内容
若有内容则会定位到最开始的一个,n查找下一个,N查找上一个。
(7)内容替换
操作符 | 功能 |
---|---|
: s/被替换内容/替换内容/ | 替换当前光标所在行的第一个目标 |
: s/被替换内容/替换内容/g | 替换当前光标所在行全部目标 |
:%s/被替换内容/替换内容/ | 替换所有行的第一个目标 |
:%s/被替换内容/替换内容/g | 替换所有行的所有目标 |
(8)保存退出 | |
在底行模式下,当一切都修改、添加操作完成后,接下来就是保存并退出了。首先按一下键盘上的Esc键进入底行模式,让后再执行以下命令: | |
操作符 | 功能 |
:----: | :----------------------------------------------------------: |
:q | 退出vi/vim编辑器(前提是没对文本内容有过增删) |
:w | 保存编辑后的内容 |
:wq | 保存并退出vi/vim编辑器 |
:q! | 强制退出vi/vim编辑器(不保存对文件的修改) |
:w! | 对没有修改权限的用户强行保存对文件的修改,并且修改后的文件的所有者和所属组都有相应变化 |
:wq! | 强行保存文件并退出vi/vim编辑器 |
2.4 可视模式(扩展)
在命令模式在可以进入可视模式,可视模式分为:可视块模式、可视行模式两种。使用这两种模式时,可以对编辑的文本内容进行复制、粘贴、删除等,这种方法对于处理所选定的块或行是非常有用的,也是非常高效的。
(1)可视块模式:如下图选中文本内容的某一块区域。
(2)可视行模式:如下图所选中文本内容的某几行。
2.5 模式切换
命令模式、插入模式、底行模式三者之间的转换关系如下图所示:
(1)命令模式进入插入模式
操作符 | 功能 |
---|---|
i | 从当前光标处进入插入模式 |
a | 从当前光标后进入插入模式 |
A | 从当前光标所在行行尾进入插入模式 |
o(小写o) | 从当前光标所在行的下一行进入插入模式 |
O(大写o) | 从当前光标所在行的上一行进入插入模式 |
s(小写) | 删除光标所在字母进入插入模式 |
S(大写) | 删除光标所在行进入插入模式 |
(2)命令模式与底行模式之间切换 | |
命令模式与底行模式之间切换按键盘上的Esc键即可切换到命令模式。 |
三、总结
- 对于vi/vim文本编辑器的一些基本的操作,我认为需要牢牢掌握,这是一个运维人员或者是了解Linux系统非专业人员必备的基本技能。如果你刚接触这个vi/vim编辑器,也许进去就不知道怎么退出来了(尴尬)。不过这很正常,初学嘛。
- 在操作上也是很方便的,其实只要记住三种工作模式的切换方法,以及如何退出保存,基本上就OK了。其他的操作符无非就是提供你快速查阅文本内容的一个辅助。比如我要查询该文本中的某一个关键字,或者是替换某一个关键字、将文本另存为等等。