- Ubuntu Linux操作系统
- 张金石
- 1932字
- 2020-06-24 21:52:13
2.5 使用vi编辑器
Linux系统配置需要编辑大量的配置文件,在图形界面中编辑这些文件很简单,通常使用gedit,它类似于Windows记事本。作为管理员,往往要在文本模式下操作,这就需要熟练掌握文本编辑器。vi是一个功能强大的文本模式全屏幕编辑器,也是UNIX/Linux平台上最通用、最基本的文本编辑器,Ubuntu提供的版本为vim,vim相当于vi的增强版本。掌握vi对于管理员来说是必需的。
1.vi操作模式
vi分为以下3种操作模式,代表不同的操作状态,熟悉这一点最为重要。
● 命令模式(Command mode):输入的任何字符都作为命令(指令)来处理。
● 插入模式(Insert mode):输入的任何字符都作为插入的字符来处理。
● 末行模式(Last line mode):执行文件级或全局性操作,如保存文件、退出编辑器、设置编辑环境等。
命令模式下可控制屏幕光标的移动、行编辑(删除、移动、复制),输入相应的命令进入插入模式。进入插入模式的命令有以下6个。
● a:从当前光标位置右边开始输入下一字符。
● A:从当前光标所在行的行尾开始输入下一字符。
● i:从当前光标位置左边插入新的字符。
● I:从当前光标所在行的行首开始插入字符。
● o:从当前光标所在行新增一行并进入插入模式,光标移到新的一行行首。
● O:从当前光标所在行上方新增一行并进入插入模式,光标移到新的一行行首。
从插入模式切换到命令模式,只需按<ESC>键。
命令模式下输入“:”切换到末行模式,从末行模式切换到命令模式,也需按<ESC>键。
如果不知道当前处于哪种模式,可以直接按<ESC>键确认进入命令模式。
2. 打开vi编辑器
在命令行中输入vi命令即可进入vi编辑器,如图2-11所示。
图2-11 vi编辑器
这里没有指定文件名,将打开一个新文件,保存时需要给出一个明确的文件名。如果给出指定文件名,如vi filename,将打开指定的文件。如果指定的文件名不存在,则将打开一个新文件,保存时使用该文件名。
对于普通用户来说,如果要将编辑的文件保存到个人主目录之外的目录,需要root权限,这时就要使用sudo命令,如sudo vi。要修改一些配置文件,往往需要加上sudo命令。
3. 编辑文件
刚进入vi之后处于命令模式下,不要急着用上下左右键移动光标,而是要输入a、i、o中的任一字符(用途前面有介绍)进入插入模式,正式开始编辑。
在插入模式下只能进行基本的字符编辑操作,可使用键盘操作键(非vi命令)打字、删除、退格、插入、替换、移动光标、翻页等。
其他一些编辑操作,如整行操作、区块操作,需要按<ESC>键回到命令模式中进行。实际应用中插入模式与命令模式之间的切换非常频繁。下面列出常见的vi编辑命令。
(1)移动光标。vi可以直接用键盘上的光标键来上下左右移动,但正规的vi的用法是用小写英文字母h、j、k、l,分别控制光标左、下、上、右移一格。常用的光标操作还有以下几种情况。
● 按<Ctrl>+<b>键上翻一页,按<Ctrl>+<f>键下翻一页。
● 按0键移到光标所在行行首,按$键移到该行开头,按w键光标跳到下个单词开头。
● 按G键移到文件最后一行,再按nG键(n为数字,下同),移到文件第n行。
(2)删除。
● 字符删除:按x键向后删除一个字符;按nx键,向后删除n个字符。
● 行删除:按dd键删除光标所在行;按ndd键,从光标所在行开始向下删除n行。
(3)复制。
● 字符复制:按y键复制光标所在字符,按yw复制光标所在处到字尾的字符。
● 行复制:按yy键复制光标所在行;按nyy键,复制从光标所在行开始往下的n行。
(3)粘贴。删除和复制的内容都将放到内存缓冲区。使用命令p将缓冲区内的内容粘贴到光标所在位置。
(4)查找字符串。
● /关键字:先按/键,输入要寻找的字符串,再按回车键向下查找字符串。
● ?关键字:先按?键,输入要寻找的字符串,再按回车键向上查找字符串。
(5)撤销或重复操作。如果误操作一个命令,按u恢复到上一次操作。按.键可以重复执行上一次操作。
4. 保存文件和退出vi
保存文件和退出vi要进入末行模式才能操作。
● :w filename:将文件存入指定的文件名filename。
● :wq:将文件以当前文件名保存并退出vi编辑器。
● :w:将文件以当前文件名保存并继续编辑。
● :q:退出vi编辑器。
● :q!:不保存文件强行退出vi编辑器。
● qw:保存文件并退出vi编辑器。
5. 其他全局性操作
在末行模式下还可执行以下操作。
● 列出行号:输入set nu,按回车键,在文件的每一行前面都会列出行号。
● 跳到某一行:输入数字,再按回车键,就会跳到该数字指定的行。
● 替换字符串:输入“范围/字符串1/字符串2/g”,将文件中指定范围字符串1替换为字符串2,g表示替换不必确认;如果g改为c,则在替换过程中要求确认是否替换。范
围使用“m,ns”的形式表示从m行到n行,对于整个文件,则可表示为“1,$s”。
6. 多文件操作
要将某个文件内容复制到另一个文件中当前光标处,可在末行模式执行命令:r filename,filename的内容将粘贴进来。要同时打开多个文件,启动vi时加上多个文件名,如vi filename1 filename2。打开多个文件之后,在末行模式下可以执行命令:next和:previous在文件之间切换。