Last Updated on
Linux系统配置需要编辑大量的配置文件,在图形化界面中编辑这些文件很简单,通常使用gedit,它类似于windows记事本。但是作为运维人员,通常都是在命令行模式下操作的,这就需要熟悉最通用,最经典的文本编辑器Vim/Vi。
Vim是Vi的增强版本。掌握Vim对于Linux运维人员来说是必须的。
1. 操作模式
vim分为3种操作模式,代表不同的操作状态,理解这一点并掌握模式之间的切换是使用vim种的重中之中。
- 命令模式: 输入的任何字符都作为命令来处理,可控制屏幕光标的移动,行编辑(删除,移动,复制)等。
- 插入模式: 输入的任何字符都作为插入的字符来处理,也就是正常的编辑文件。
- 末行模式: 执行文件级或全局性操作,如保存文件,退出编辑器,设置编辑环境等。
使用vim打开文件,默认进入为命令模式。
在命令模式下,输入以下任一命令切换到插入模式:
-
a
: 附加命令,从当前光标位置右边开始输入下一字符。 -
A
: 附加命令,从当前光标所在行的行尾开始输入下一字符。 -
i
: 插入命令,从当前光标位置左边插入字符。 -
I
: 插入命令,从当前光标所在行的行首插入字符。 -
o
:打开命令,从当前光标所在行新增一行并进入插入模式,光标移动到新的一行的行首。 -
O
:打开命令,从当前光标所在行上方新增一行并进入插入模式,光标移动到新的一行的行首。
在插入模式下,按<Esc>键退出插入模式,切换到命令模式。
在命令模式下,按 : 进入末行模式。
在末行模式下, 按<Esc>键退出末行模式,切换到命令模式。
这三个模式之间的切换都是通过命令模式做中转的,如图:

2. 命令模式下的命令
在了解了Vim的模式后,插入模式就为普通的文本编辑状态,主要需要注意的就是命令模式下的命令和末行模式下的命令的使用。
下面就来将一下命令模式下的一些常用命令和操作:
(1)移动光标
Vim可以直接使用键盘上的h,j,k,l
来控制光标左,下,上,右进行移动,等同于键盘的上下左右按键,这可以让用户不用把手移开键盘去操作上下左右键,快捷且很酷。
h
:光标向左移动一个字符
j
:光标向下移动一个字符
k
:光标向上移动一个字符
l
:光标向右移动一个字符
0
:移动光标到所在行行首
$
:移动光标到所在行行末
^
:移动光标到所在行的第一个非空字符
w
:光标移动到下一个单词的开头
e
:移动光标至当前或下一个单词的词尾b
:移动光标至当前或前一个单词的词首
G
:光标移动到文件最后一行
gg
:光标移动到文件第一行
nG
(n为数字):光标移动到文件第n行
(2)删除
删除内容可以在插入模式中,使用键盘上的删除键进行删除,同时在命令模式下,也可以,并且可以更方便。
x
:向后删除一个字符(就是光标所处的字符)
nx
(n为数字):向后删除n个字符
dd
:删除光标所在行
ndd
(n为数字):删除光标所在行开始往下的n行
(3)复制,粘贴
在命令模式下,可以直接进行复制,粘贴。
y
:复制光标所在字符
yw
:复制光标所在处到词尾的字符
yy
:复制光标所在行
nyy
(n为数字):复制光标所在行开始往下的n行
p
:将缓冲区的内容粘贴到光标所在位置(删除和复制的内容都将被放到内存缓冲区)
(4) 查找
/
:先按/
键,然后输入要查找的字符,在按回车键向下查找字符
?
:先按?
键,然后输入要查找的字符,在按回车键向上查找字符
查到匹配到内容后,被匹配到的内容会高亮显示,使用下面命令,在匹配到的内容中移动.
n
:光标移动到下一个匹配的内容
N
:光标移动到上一个匹配的内容
(5)撤销
u
:撤销上一个操作
ctrl+r
:撤销上一个撤销操作
(6)翻屏(页)
Ctrl+f
:向下翻一屏(一个屏幕的内容也可以说是一页,下同)
Ctrl+b
:向上翻一屏
Ctrl+d
:向下翻半屏
Ctrl+u
:向上翻半屏
3. 末行模式下的命令
上面列举了常见的命令模式下的一些命令操作,下面就列举一些在进入末行模式后的一些命令:
在命令模式下,按 : 进入末行模式。在末行模式下输入命令后,需要单击回车进行运行。在末行模式下!
表示强制执行
:w
:保存文件内容并继续编辑
:w filename
:将文件存入指定的文件名filename,没有文件则会新建,若文件存在则需要加上!,强制写入,会覆盖已存在文件呢内容
:q
:退出vim编辑器,如果有修改没有保存,则会报错无法直接退出
:q!
:不保存内容,强制退出vim编辑器
:wq
:保存内容并退出vim编辑器
:set nu
:显示文件行号
:set nonu
:不显示文件行号
:n
(n是数字):跳到文件的第n行
:set hlsearch
:找到的内容高亮显示:set nohlsearch
:找到的内容不高亮显示
:syntax on
:开启语法高亮
:syntax off
:关闭语法高亮
总结
Vim的编辑器除此之外,还有很多的设置和命令,特别是set的命令,模式模式下可以直接使用,但是除此之外,如果你想每次打开Vim都能保留你的设置,
Vim编辑器有其配置文件,可以通过在配置文件中进行设置,使得每次使用vim打开文件都能有相应的一些设置,比如显示行号等。
配置文件路径如下:
- /etc/vimrc:全局配置文件,对所有用户生效
- ~/.vimrc:当前用户的个人配置,只对当前用户有效
在Centos7
中,默认是没有安装Vim的,只有Vi命令,可以通过yum install vim
安装vim编辑器,全局配置文件为/etc/vimrc
默认的vi
命令,同样的全局配置文件为/etc/virc
。
另外,在使用vim编辑文件时,会生成一个隐藏的交换文件,.filename.swp
。在退出后会自动删除。如果在一个用户正在编辑文件时,另一个用户也用vim编辑同一个文件,则会出现如下报错:

给出了几个选择:
- O:只读打开
- E:读写打开
- R:覆盖打开
- Q:退出
- A:放弃
Q和A差不多,就是退出编辑,回到命令行。O就是只读打开,无法编辑,打开能看到第一个用户已经通过w
保存的内容。
E和R都是以可编辑状态打开,不同的是,E打开时读取的内容是其他用户已经保存的内容,未保存的还处于缓存状态的修改无法看到。而R则是可以看到其他用户的所有修改,包括已保存的和未保存的。
当别的用户已经在你保存前修改了文件,你保存时会弹出报错:

按y保存的花,则会以后面的内容为准,覆盖掉之前别人的修改。所以在编辑使用时需要注意一下。
OK,关于Vim编辑器在服务器上的使用,大致就说到这里。
vim除了作为服务器上的文件编辑器,也可以作为自己电脑的代码编辑器,可以配置代码补全等等功能配置。由于现在编辑器多是使用IDE,比较少用Vim,但是可以玩一下,关于Vim做代码编辑器的话。这个以后有空再单独记录一篇。
有任何问题,欢迎留言
其实还是想多看看编辑器配置文件里更改某些参数好玩的操作