Linux 使用vi文本编辑器详解
前言
本章将会讲解使用vi文本编辑器
一.vi文本编辑器
配置文件是Linux操作系统的显著特征之一,其作用有点类似于Windows操作系统中的注册表,只不过注册表是集中管理,而配置文件采用了分散的自由管理方式。本节将学习如何使用Linux字符操作界面中的文本编辑器——vi,以便更好地管理和维护系统中的各种配置文件。
1.使用vi文本编辑器
vi是一个功能强大的全屏幕文本编辑工具,一直以来都作为类UNIX操作系统的默认文本编辑器,vim是vi文本编辑器(简称vi编辑器)的增强版本,在vi编辑器的基础上扩展了很多实用的功能,但是习惯上也将vim称为vi,为了使用方便,可以设置一个命令别名,将vi指向vim程序(本文中以vim程序为例)具体操作如下:
[root@localhost ~]# alias vi='/usr/bin/vim'
[root@localhost ~]# which -a vi vim
2.vi编辑器的工作模式
vi编辑器是工作在字符终端环境下的全屏幕编辑器,因此编辑界面相对比较简单,没有为用户提供鼠标操作和菜单系统,而是通过按键命令实现相应的编辑和操作功能,在v编辑界面中可以使用三种不同的工作模式,即命令模式,输入模式和末行模式,在不同的模式中能够对文件进行的操作也不相同。
命令模式:启动vi编辑器后默认进入命令模式。该模式中主要完成如光标移动、字符串查找,以及删除、复制、粘贴文件内容等相关操作。输入模式:该模式中主要的操作就是录入文件内容,可以对文本文件正文进行修改或添加新的内容。处于输入模式时,vi编辑器的最后一行会出现“--NSERT--”的状态提示信息。末行模式:该模式中可以设置vi编辑环境、保存文件、退出编辑器,以及对文件内容进行查找、替换等操作。处于末行模式时,vi编辑器的最后一行会出现冒号”:”提示符。
命令模式、输入模式和末行模式是vi编辑环境的三种状态,通过不同的按键操作可以在不同的模式间进行切换。例如,从命令模式按:(冒号)键可以进入末行模式,按a,i,o等键可以进入输入模式:在输入模式、末行模式均可按Esc键返回命令模式,如图所示。
认识了vi编辑器的不同编辑模式(状态)以后,下面分别介绍在命令模式、末行模式中的常见操作方法(输入模式用于录入文本内容,不做特别介绍)。
3.命令模式中的基本操作
执行单独的“vi”命令即可进入v编辑器的命令模式,还会显示相关版本信息,如图所示。但更常见的使用方法是指定要编辑的文件名作为参数,若该文件不存在,则vi根据该文件名称打开一个新的空文件。
在学习vi编辑器的基本操作时,建议复制一个内容较多的系统配置文件进行练习,而不要直接去修改系统文件,以免发生失误造成系统故障。
例如以下操作把系统配置文件/etc/yum.conf复制为当前目录下的vitest.file文件,然后用vi编辑器打开vitest.file文件进行编辑。
[root@localhost ~]# cp /etc/yum.conf ./vitest.file [root@localhost ~]# vi vitest.file
在vi编辑器的命令模式中,可以输入特定的按键(称为vi操作命令注意区别于Linux操作系统命令)进行操作,主要包括模式切换、光标移动、复制、删除、粘贴、文件内容查找及保存和退出等操作,这里只介绍一些最基本且常用的按键命令。
(1)模式切换
在命令模式中,按a.i.o等键可以快速切换至输入模式,同时确定插入点的方式和位置,以便录入文件内容,需要返回命令模式时,按Esc键即可。常见的几个模式切换键及其作用如下。
a:在当前光标位置之后插入内容。A:在光标所在行的末尾(行尾)插入内容。i:在当前光标位置之前插入内容。I:在光标所在行的开头(行首)插入内容。o:在光标所在行的后面插入一个新行。O:在光标所在行的前面插入一个新行。
(2)移动光标
光标方向的移动,直接按↑,↓,←,→一西个方向键完成相应的光标移动。
题页移动
按Page Dewn键或Crl+F组合键向下期动一整页内容。
技Pagt lip或Cr1+8组合键向上翻动一整页内容。
行内快速跳转
按Horme键成“键,散字0键将元标快速鹏转到本行的行首。接End键或1键将光标快速跳转到本行的行尾。在上述按键操作中,PageDown,Pagn Up,homm,End及方向键同样也可在w的输入模式中使用。
入行间快速跳转
使用按键命令1G或者0可跳转到文件内容的第1行。使用按键命令G可跳转到文件的最后一行。使用按键会令#G可院转到文件中的第#行(其中“二”号用高体数字替换)。
为了便于查看行间期转效果,这里先学习如何在v编辑器中是示行号,只要切换到末行模式并
执行如下的”set cu”命令即可显示行号,执行"set nonu"命令可以取消量示行号.
显示行号后的vi编辑器界面显示格式如下(每行开头的数字即行号):
(3)复制、粘贴和删除
删除操作。
按×键或Delete键删除光标处的单个字符。使用按键命令dd删除当前光标所在行,使用#dd的形式还可以删除从光标处开始的#行内容(其中“#”号用具体数字替换)。使用按键命令d删除当前光标之前到行首的所有字符。使用按键命令ds删除当前光标处到行尾的所有字符。
复制操作,使用按键命令Yy复制当前行整行的内容到剪贴板,使用#Yy的形式还可以复制从光标处开始的#行内容(其中“#”号用具体数字替换).复制的内容需要粘贴后才能使用。
粘贴操作。在vi编辑器中,前一次被删除或复制的内容将会保存到剪切板缓冲区中,按p键即可将缓冲区中的内容粘贴到光标位置处之后,按P键则会粘贴到光标位置处之前。
(4)查找文件内容
在命令模式中,按/键后可以输入指定的字符串,从当前光标处开始向后进行查找(按?键则向前查找).完成查找后可以按n、N键在不同的查找结果中进行选择,例如,输入“/yum”,按Enter键后将查找出文件中的“yum”字符串并高亮显示,光标自动移动至第一个查找结果处,按n键可以移动到下一个查找结果,如图所示。
(5)撤销编辑及保存和退出
在对文件内容进行编辑时,有时候需要对一些失误的编辑操作进行撤销,这时可以使用按键u,U键,其中,u键命令用于取消最近一次的操作,并恢复操作结果,可以多次重复按υ键恢复已进行的多步操作;U键命令用于取消对当前行所做的所有编辑。当需要保存当前的文件内容并退出vi编辑器时,可以使用按键命令ZZ。
4.末行模式中的基本操作
在命令模式中按:键可以切换到末行模式,vi编辑器的最后一行中将显示”:提示符,用户可以在该提示符后输入特定的末行命令,完成如保存文件,退出编辑器,打开新文件,读取其他文件内容及字符串替换等丰富的功能操作。
(1)保存文件及退出vi编辑器
保存文件,对文件内容进行修改并确认以后,需要执行如下的“w”命令进行保存。
若需要另存为其他文件,则需要指定新的文件名,必要时还可以指定文件路径。
例如,执行如下的“:w/root/newfile
操作将把当前编辑的文件另存到/root 目录下,文件名为newfile.
退出编辑器。需要退出vi编辑器时,可以执行“:q命令,若文件内容已经修改却没有保存,则仅使用”;q”命令将无法成功退出,这时需要使用如下的”q!”命令强行退出(不保存即退出)。
保存并退出。既要保存文件又要退出vi编辑器可以使用一条末行命令“:wq”或“:x”实现,其效果与命令模式中的ZZ命令相同,具体操作如下:
(2)打开新文件或读入其他文件内容
打开新的文件进行编辑。在当前vi编辑器中,执行”:e新的文件”形式的末行命令可以编辑(Edit)新文件。
例如,执行如下的‘:e~/initial-setup-ks.cfg”操作将直接打开当前用户宿主目录中的initial-setup-ks.cfg文件进行编辑。
:e ~/initial-setup-ks.cfg
在当前文件中读入其他文件内容,执行“r其他文件”形式的末行命令可以读入(Read)其他文件中的内容,并将其复制到当前光标所在位置。
例如,执行如下的“r/etc/filesystems操作将把系统文件/etc/filesystems中的内容复制到当前文件中。
:r /etc/filesystems
(3)替换文件内容
在vi编辑器的末行模式中,能够将文件中特定的字符串替换成新的内容,当需要大批量修改同一内容时,使用替换功能将大大提高编辑效率,使用替换功能时的末行命令格式如下:
:[替换范围]sub/旧的内容/新的内容[/g]
在上述替换格式中,主要关键字为sb(Substitute,替换).也可以简写为s.替换范围是可选部分,默认时只对当前行内的内容进行替换,一般可以表示为以下两种形式。
%:在整个文件内容中进行查找并替换。n.m;在指定行数范围内的文件内容中进行查找并替换。
替换格式中最末尾的/g部分也是可选内容,表示对替换范围内每一行的所有匹配结果都进行替换,省略/g时将只替换每行中的第一个匹配结果。
例如,若要将文档中第5行~第15行中的“initdefault”字符串替换为“DEFAULT”,可以执行以下操作:
:5,15 s /initdefault/DEFAULT/g
当需要对整个文档范围进行查找替换操作时,需要使用“%”符号表示全部,例如,以下操作将会把当前文件中所有的“initdefault”字符串替换为“bootdefault”
:% s /initdefault/bootdefault/g
到此这篇关于Linux 使用vi文本编辑器详解的文章就介绍到这了,更多相关Linux 使用vi文本编辑器内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文地址:https://blog.51cto.com/u_15879264/6100344
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。