在Linux系统中一般都是使用配置文件来控制服务的运行,因而很多服务功能都需要通过修改配置文件来实现,在字符界面下要修改文件的内容大都要用到一个名叫vi(Visual Interface)编辑器的工具。vi是Linux系统中使用最广泛的文本编辑器,它可以在任何Shell、字符终端或基于字符的网络连接中使用,能够高效地在文件中进行 编辑、删除、替换、移动等操作。就像Windows里面的记事本。
vi是一个基于Shell的全屏幕文本编辑器,没有菜单,全部操作都基于命令。vim(VI Improved)是vi编辑器的增强版本,在vi编辑器的基础上扩展了很多实用的功能,但是习惯上也将vim称作vi。实际上我们平常使用的大都是这个vim。
vi编辑器命令格式为:
vim 文件名
**注意:**如果指定的文件不存在,那么vim命令会创建文件并进入编辑状态,如果文件存在,则进入编辑状态对其进行编辑。
vi编辑器的工作模式
由于vi是一个工作在字符界面下的编辑器,因此它的大部分功能都是通过命令或快捷键来实现的,操作相对于那些图形界面下的编辑工具要复杂一些。但当用户熟悉了vi的常用命令之后,将会发现vi的使用也是十分灵活便捷的。
在vi编辑界面中有三种不同的工作模式:命令模式、插入模式、末行模式,不同的工作模式所起到的功能不同。
1.1 命令模式
启动vi编辑器后默认进入命令模式,该模式下主要完成光标移动、字符串查找、删除、复制、粘贴等操作。不论用户处于何种模式,只要按下Esc键,即可进入命令模式。接下来介绍该模式下的一些操作技巧。
操作类型 | 要实现的功能 | 对应的操作命令 |
---|---|---|
行号显示 | 给内容加上行号 | :set nu |
取消行号显示 | :set nonu | |
光标方向移动 | 光标方向移动(上下左右) | ↑ ↓ ← → |
翻页 | 向下翻一整页内容 | Page Down或Ctrl + F |
向上翻一整页内容 | Page Up或Ctrl + B | |
行内快速跳转 | 跳转到行尾 | End键或" ^ “或数字” 0 " |
向左移动n个字符 | n + ← | |
向右移动n个字符 | n + → | |
行间快速跳转 | 快速将光标移动至第一行 | 1+G(先按下1,再按下大写的G)/或gg |
快速将光标移动至最后一行 | G | |
将光标移动至第n行 | n+G(先输入想要去的行数,再按下G) | |
复制 | 复制当前行 | 将光标定位至这一行再按yy |
复制从光标开始的n行 | 将光标定位至首行再按数字n+yy | |
粘贴 | 将内容粘贴到光标之后的位置 | p |
删除 | 删除光标处的单个字符 | x或Del |
删除当前光标所在的行 | dd | |
删除当前光标开始的n行内容 | n+dd | |
删除当前光标之前到行首的所有字符 | d^ | |
删除当前光标到行尾的所有字符 | d$ | |
查找 | 从上而下在文件中查找字符串“word” | /word |
从下而上在文件中查找字符串“word” | ?word | |
定位下一个匹配的被查找的字符 | n | |
定位上一个匹配的被查找的字符 | N | |
撤销 | 按一次取消最近的一次操作(多次重复的按u键,恢复已进行的多步操作) | u(默认最多撤销50次) |
取消对当前行所做的所有编辑 | U | |
重做最后一次所撤销的操作 | Ctrl + r |
1.2 插入模式
此模式用于修改文件内容。当我们需要对文件内容进行修改的时候,一般都需要转换到插入模式。从命令模式转换到插入模式的方法主要有以下三种:
操作 | 功能 |
---|---|
i | 在光标所在处输入 |
a | 在光标所在处后方输入 |
o | 在光标所在处下方打开一个新行,光标处在首行 |
如果要直接在光标所在行插入内容,那么可以使用“i”或“a”,如果要在新起一行插入内容,那么推荐使用“o”。
1.3 末行模式
在命令模式下,按“:”键即可进入末行模式,该模式中可以保存文件、退出编辑器,以及对文件内容进行查找、替换等操作。处于末行模式时,vi编辑器的最后一行会出现“:”提示符。
操作 | 命令 |
---|---|
退出 | :q |
强制退出(不保存) | :q! |
保存且退出 | :wq |
保存 | :w |
另存为/root/newfile | :w /root/newfile |
在末行模式下,使用s命令能够将文件中特定的字符串替换成新的内容。使用替换功能时的末行命令格式如下:
: [替换范围] s/旧的内容/新的内容[/g][/c]
-
替换范围如果用%表示在整个文件内容中进行查找并替换。也可以使用“12,23”的形式,表示将从12行到23行中的特定字符串进行替换。如果不指定范围则只对当前所在行进行操作。
-
选项/g表示替换范围内每一行的所有匹配结果,省略此选项表示只替换每行中第一个匹配结果
-
选项/c表示每次替换前都要进行询问,要求用户确认
-
选项/gc表示g和c的功能累加
例如:将文件内容1-10行的所有的小写ssh替换为大写的SSH即可用以下命令
:1,10 s/ssh/SSH/g
1.4 可视模式
在命令模式下按下v键便可以进入可视模式,此时左右移动方向键,就会将光标所经过区域的字符选中,然后可以用y键进行复制,用d键进行删除,或是用p键进行粘贴。不论执行何种操作,在操作结束之后,都会自动退出可视模式。