第三章 文本编辑器.docx
《第三章 文本编辑器.docx》由会员分享,可在线阅读,更多相关《第三章 文本编辑器.docx(23页珍藏版)》请在冰点文库上搜索。
第三章文本编辑器
第三章
文本编辑器
前面我们讲解了Linux系统中的基本命令,通过这些命令可以对Linux系统进行一些简单的管理。
除了命令之外,Linux系统中还存在大量的配置文件,这些配置文件以文本文件的形式保存,通过修改配置文件中的内容可以对Linux系统的功能进行定制和管理。
本章将学习Linux系统中文本编辑工具的使用,在Linux的字符和土星环境中都存在多种文本编辑工具可供用户选择使用,但是vi编辑器是使用最广泛的文本编辑器,是大多数Linux系统中的默认文本编辑器,因此本章的内容以讲解vi编辑器的基本使用为主,其他的编辑器只做简单的介绍。
掌握vi编辑器的基本编辑操作之后,我们就能通过编辑配置文件对Linux系统进行比较细致的管理工作,这也是每个系统管理员必须具备的基本能力。
3.1Linux文本编辑器概述
在本节中我们将学习文本编辑器的作用和文本编辑器的简单分类。
3.1.1文本编辑器的作用
在Linux系统中,很多系统的管理和功能的配置都需要修改系统配置文件,而几乎所有的系统配置文件都是文本文件,如:
“/etc/”目录中就存放了大量的文本配置文件。
当需要进行Linux系统的管理和设置时,我们需要使用文本编辑器程序对相应的系统配置文件进行修改,所以熟练使用文本编辑器对我们提高管理效率是很有帮助的。
另外,对于Linux系统的普通用户使用文本编辑器可以建立用户自己的文件,文件的内容可以是通信录、文章或实验笔记等。
综上所述,无论是Linux系统的专业人员还是普通用户,能够熟练使用文本编辑器进行文本的编辑都是必须掌握的操作能力。
3.1.2文本编辑器的分类
本小节将介绍一下文本编辑器的不同分类,以及不同分类之间的比较。
1、行编辑器和全屏幕编辑器
文本编辑器按照文本编辑的范围可以进行如下的划分:
✧行编辑器是非常古老的文本编辑器,现在计算机的使用者几乎没有机会接触到行编辑器;行编辑器是以行为单位进行编辑的文本编辑器,当编辑完成某一行的文本内容并回车后,开始下一行文本的编辑,此时将不能任意返回文件前面的行进行编辑;从现在的技术角度看,行编辑器的功能是比较简陋的。
✧全屏幕编辑器的名称最早是与行编辑器对比而得名的,全屏幕编辑器能够在编辑器的屏幕上编辑文件中所有行的文件内容,相比较行编辑器而言提供了相当便利的编辑操作;目前我们能够接触到的编辑器包括vi、gedit等都属于全屏幕编辑器。
以上行编辑器和全屏幕编辑器的对比可以简单了解到文本编辑器的发展历史。
2、字符界面编辑器和图形界面编辑器
按照工作的界面环境划分,文本编辑器可以划分为以下两种类型:
✧字符界面的编辑器有着较长的历史,因为最早的UNIX操作系统是完全工作在字符界面下的,那时候就已经存在字符界面的编辑器了;字符界面的编辑器占用系统资源小,运行效率高,可广泛地适用于各种场合,因此知道今天人们仍然乐于使用字符界面的编辑器;当然,由于字符界面本身的限制,字符界面的编辑器存在着用户界面不够友好、操作不够简单等方面的缺点,但是这些都不足以影响对字符界面编辑器的热爱;vi是字符界面文本编辑器的杰出代表和应用典范,本章的内容就是以讲解vi编辑器的使用为主。
✧图形界面编辑器在Linux(UNIX)图形界面下运行的文本编辑程序,通常工作在XWindow图形环境中;图形界面编辑器从已有的字符界面的编辑器洗去了大量的优秀特性,并结合图形环境应用程序的特点发展而成;因此图形界面编辑器的用户界面比较友好,鼠标操作大大降低了文本编辑的难度;在本章的末尾我们将介绍gedit文本编辑器程序的功能。
通过以上字符界面和图形界面编辑器的介绍,我们可以简单了解两种类型文本编辑器各自的特点和优势,对我们在Linux下选择使用文本编辑器有一定的帮助。
3.1.3文本编辑器简介
在Linux操作系统中有相当多种类的文本编辑器,常用的有:
1、vi
编辑器vi是最常用的字符界面文件编辑器之一,常用的Linux发行版都包括vi编辑器。
vim是vi编辑器的加强版本,通常也将vim称作vi。
vi编辑器的发展历史较长,一直以来都作为类UNIX操作系统的默认文本编辑器。
在长时间的发展过程中,vi编辑器的功能不断完善充实,并从其他编辑器程序中吸收借鉴了很多内容。
在类UNIX操作系统的使用者看来,vi编辑器不仅是一个文本编辑器工具,更是功能强大的编辑平台,能够胜任包括程序编写在内的各种文本编辑任务,vi通常被看作是操作系统中必不可少的组成部分,vi的使用是Linux系统使用人员必须掌握的技能,因此vi编辑器通常是Linux学习者需要掌握的第一个文本编辑器。
2、Emacs
Emacs是专为编辑程序源代码文件而编写的文本编辑程序,也是GUN项目中的代表软件。
Emacs支持常用编程语言的编写,收受到了程序员的广泛喜爱。
(rpm命令会在以后详细介绍)
3、nano
nano是比较现代的字符界面文本编辑器,相对于vi编辑器,nano提供了更加友好的编辑界面,用户可以从nano的底端菜单中获得很多常用的操作帮助。
通过以上的实例可以看出,nano编辑器提供了比较友好的编辑界面,用户可以从编辑环境中获得较多的信息。
4、gedit
gedit是运行在Linux图形环境中的文本编辑程序,也是功能全面的图形界面文本编辑程序。
3.2vi文本编辑器
vi命令是Linux下的全屏幕文本编辑器,vi编辑器提供了丰富的文本编辑功能,被大多数Linux发行版本选作默认的文件编辑器。
3.2.1vi的模式
在学习vi编辑器的基本使用之前,先来学习一下vi编辑器中相关的概念
vi文本编辑器是工作在UNIX文本终端环境下的全屏幕编辑器,因此编辑界面比较简陋,对于初学者不是十分友好。
文本界面的vi编辑器并没有为用户提供鼠标操作和菜单系统的功能,而是使用命令实现相应的编辑和操作功能。
在vi编辑环境中有3种模式状态需要掌握:
✧
命令模式:
vi编辑器启动后默认进入命令模式,在命令模式下输入单字符或组合键可以实现相应的编辑命令操作,被当做命令来处理。
该模式中主要完成如光标移动、字符串查找,以及删除、复制、粘贴文件内容等相关操作。
从命令模式可以进入输入模式和末行模式;在命令模式中vi编辑器最后一行没有状态的提示,任何命令的操作效果直接在编辑区中出现。
✧输入模式:
在vi的命令模式下输入相应的键即可进入输入模式,如“i”键;vi的输入模式类似于其他编辑器的文本编辑状态,该模式中主要的操作就是录入文件内容,可以对文本文件正文进行修改、或者添加新的内容。
在输入模式下按“ESC”键将返回vi的命令模式;在输入模式中vi编辑器的最后一样会出现“--INSERT--”的状态提示,表示编辑器当前的状态是输入模式。
✧末行模式:
vi编辑器环境中的一些复杂操作;该模式中可以设置vi编辑环境、保存文件、退出编辑器,以及对文件内容进行查找、替换等操作;在vi的命令模式下输入“:
”后进入末行模式,在该模式下可输入相应的末行命令进行操作;末行命令执行结束后自动返回命令模式,如需执行下一个末行命令需重新输入“:
”;末行模式下输入的命令,从“:
”开始会显示在vi编辑器的最后一行,以便用户清楚的看到所输入的命令,直接回车后执行命令。
3.2.2vi编辑器的基本使用
在本小节将学习vi编辑器的基本操作,包括vi程序的启动、文件操作、编辑环境的操作和查找替换操作等。
1、vi编辑器的启动与退出
vi命令可以使用文件名作为参数,进入vi的编辑环境并对打开的文件进行编辑:
作为参数的文件名,如果此文件存在则是打开此文件进行编辑,如果不存在,则新建该文件。
2、退出vi编辑环境
在vi编辑器的命令模式下,先进入末行模式,即输入“:
”,然后在末行模式下输入“q!
”并回车,可强行退出当前的vi编辑环境,退出的同时不对当前文件的修改进行任何保存。
3、打开新文件
在vi编辑环境中,当编辑完一个文件后,可以打开新的文件进行编辑,打开新文件需要使用e命令;打开新文件前应确认上一个文件已经保存,都则会有提示;此命令是在末行模式下输入的。
也可以在e命令后加“!
”,表示强制关闭当前文件(不保存)并打开指定的文件。
4、读取文件内容到当前文件中来
vi编辑器对当前文件进行编辑,可以读取其他文件的内容到文件的当前光标处,即在当前文件中读入指定文件的内容,当前文件原有的内容仍将保存在文件中而不被覆盖。
r命令可以实现文件的读入功能,此命令在末行模式下输入。
5、保存文件
在vi编辑器中保存文件内容使用w命令实现。
如果vi编辑器中所编辑的文件已经命名,可以直接使用w命令保存当前文件的内容,而无需指定文件名作为参数。
6、另存为文件
在vi编辑器中对文件进行修改后,如果需要将已修改的文件另存为其他文件名时,可以使用w命令指定另存为的文件名作为参数。
w命令进行另存为操作时,将不保存已更改的内容到原来的文件,而将编辑器中的现有内容保存到指定的另存为文件中。
如果原文件在另存为之前也需要保存更改的内容,应先使用w命令进行文件保存,之后再使用w命令进行另存为操作。
7、退出vi编辑环境
vi编辑器使用q命令进行退出
单独使用q命令退出vi编辑器时,文件必须进行保存或未进行修改,否则将无法正常退出。
当用户已对文件进行编辑操作(更改了文件内容),可以使用wq命令或x命令在保存文件的同时退出vi编辑器。
如果不需要保存对文件进行的修改,使用q!
命令强制退出vi编辑器并放弃保存文件的更改内容。
在退出vi编辑器时,可以根据情况选择保存退出或强制退出,在正常的编辑情况下需要进行保存退出,当对文件进行了错误的更改后,强制退出会保持文件原有的正确内容。
8、光标的移动
vi编辑器中的光标移动与其他文本编辑器有很大的不同,在vi的命令模式下,使用各种命令可以实现光标的移动、上下翻页等操作。
(1)光标方向移动
在vi编辑器的命令模式下,使用以下命令进行光标的移动:
✧h命令向左移动光标
✧l命令向右移动光标
✧k命令向上移动光标
✧j命令向下移动光标
(2)翻页移动
在vi编辑器的命令模式下,使用以下命令进行翻页
✧Ctrl+F组合键向前翻一页
✧Ctrl+B组合键向后翻一页
✧Ctrl+U组合键向前翻半页
✧Ctrl+D组合键向后翻半页
(3)行内快速跳转
在vi编辑器的命令模式下,使用以下命令在一行内进行快速的光标跳转
✧^命令将光标快速跳转到本行的行首字符
✧$命令将光标快速跳转到本行的行尾字符
✧w命令将光标快速跳转到当前光标所在位置的后一个单词的首字母
✧b命令将光标快速跳转到当前光标所在位置的前一个单词的首字母
✧e命令将光标快速跳转到当前光标所在位置的后一个单词的尾字母
在vi编辑器中,可以在很多命令前添加数字组合使用,如:
✧#w,如3w:
光标将向后跳转3个单词,并定位于单词首字母
✧#b,如2b:
光标将先前跳转2个单词,并定位于单词首字母
✧#e,如4e:
光标将向后跳转4个单词,并定位于单词首字母
数字和命令组合使用可以灵活的在一行之内进行快速的跳转。
(4)文件内行间快速跳转
在学习文件内行间快速跳转命令之前,先学习一下vi编辑器中的行号显示设置。
使用vi编辑器的末行命令“setnu”或“setnumber”可以在显示器中显示行号:
显示行号后的vi编辑器界面显示如下:
同样在末行模式下使用“setnonu”命令可以取消行号的显示:
在vi编辑器的命令模式下,使用以下命令在文件内进行行间的快速光标跳转。
✧1G或gg命令跳转到文件的首行
✧G命令跳转到文件的末行
✧#G命令跳转到文件中的#行
9、编辑操作
vi编辑器提供了丰富的文件编辑功能,包括文本的插入、输入、复制和粘贴等操作,这些文件编辑操作同样是通过vi命令实现的
(1)进入输入模式
在vi编辑器的命令模式下,可以使用以下命令由命令模式进入到输入模式
✧i命令在当前光标处进入插入状态
✧a命令在当前光标后进入插入状态
✧o命令,在当前行下面插入一行,并在插入的新行的行首处于插入状态
✧I命令,使光标移动到当前行的行首,处于插入状态
✧A命令,使光标移动到当前行的行尾,处于插入状态
✧O命令,在当前行上面插入一行,并在插入的新行的行首处于插入状态
从以上的编辑命令可以看出,vi编辑器中提供了丰富的命令实现不同的操作动作,最终都可以由命令模式进入到输入模式。
全部记住如此众多的命令可能有一定的难度,但是只要记住两个命令就可以实现最基本的操作:
✧使用i命令从命令模式进入输入模式并进行文件的输入和编辑
✧在输入模式下完成操作后,使用ESC键从输入模式返回到命令模式
(2)输入模式的操作
进入vi编辑器的输入模式后,能够进行的编辑操作与其他文件编辑器比较类似:
✧使用上下左右方向键进行光标移动
✧使用Home和End键快速定位光标到行首和行尾
✧使用PageUp和PageDown键进行文本的上下翻页
✧使用Backspace(退格)键进行光标左侧字符的删除
✧使用Delete键删除光标位置的字符
虽然vi的输入模式下可以使用键盘上的编辑键完成大多数vi编辑命令的功能,但是在没有编辑键的UNIX系统中,vi的编辑命令是唯一可以使用的文件编辑方式。
(3)删除操作
在vi编辑器的命令模式下,可以使用以下命令完成删除操作:
✧x命令删除光标处的单个字符
✧dd命令删除光标所在行(当前行)
✧dw命令删除当前字符到单词尾(包括空格)的所有字符
✧de命令删除当前字符到单词尾(不包括单词尾部的空格)的所有字符
✧d$命令删除当前字符到行尾的所有字符
✧d^命令删除当前字符到行首的所有字符
在上面的删除命令中,大多数都可以在前面加数字配合使用,以提高删除的效率:
✧#x:
例如3x,删除当前光标处向右的3个字符
✧#dd:
例如2dd,从当前行开始向下删除两行文本
✧#dw:
例如3dw,删除当前光标向右的3个单词
✧#de:
例如2de,删除当前光标向右的2个单词,并保留被删除的最后一个单词右边的空格符。
数字与删除命令的配合使用可以快速地进行批量文本内容的删除,能够大大提高文本编辑的效率。
(4)撤消操作
在vi编辑器的命令模式下,可以使用以下命令完成对已进行操作的撤销:
✧u命令取消最近一次的操作,并恢复操作结果;可以多次使用u命令恢复已近行的多步操作。
✧U命令取消对当前行进行的所有操作
✧Ctrl+r组合键命令对使用u命令撤销的操作进行恢复
vi编辑器的撤消操作命令提供了有效地恢复操作,当误操作删除了某些需要的文件内容时,可以立即使用u命令进行已删除内容的恢复。
(5)复制操作
vi编辑器有一个剪切板缓冲区,用于存放被删除或复制的内容;当使用vi的删除命令对文本进行删除时,最后一次被删除的文本内容被复制到剪切板缓冲区中;同样对于vi的复制命令,也会将复制的内容保存到剪切板缓冲区中。
在vi编辑器的命令模式下,可以使用以下命令进行文本的复制操作:
✧yy命令复制当前行整行的内容到vi缓冲区
✧yw命令复制当前光标到单词尾字符的内容到vi缓冲区
✧y$命令复制当前光标到行尾的内容到vi缓冲区
✧y^命令复制当前光标到行首的内容到vi缓冲区
vi的复制命令可以与数字组合使用,实现较大范围的文本复制。
✧#yy:
例如5yy,复制当前行及后续共5行的文本内容到vi缓冲区
✧#yw:
例如3yw,复制当前光标开始的3个单词到vi缓冲区
另外,对文件中第m行道第n行之间的文本,可以使用末行命令y完成复制操作。
如要复制文件中的第10行到第20行的内容到vi缓冲区:
进行文本的复制操作后对vi编辑器中的文件内容显示没有任何的变化,只有在粘贴文本的操作时才会看到已经复制到缓冲区中的内容。
(6)粘贴操作
在vi编辑器的命令模式下使用p命令将读取到vi缓冲区中的内容,并粘贴到光标当前的位置(不覆盖文件已有的内容)。
在使用p命令进行文本的粘贴之前,应进行复制或删除工作,以便缓冲区中能够保存需要粘贴的内容。
10、查找和替换操作
vi编辑器提供了功能强大的字符串查找和替换功能,查找和替换功能需要使用vi的末行命令来完成。
(1)自上而下的查找操作
vi编辑器的查找命令需要由“/”开始,后面跟着需要查找的字符串,最后回车执行命令。
“/”开始的查找命令从当前光标处开始,向下进行查找指定的字符串,查找一般包括如下的操作过程:
✧输入“/word”,查找命令从上而下在文件中查找指定的字符串
✧输入n命令,查找下一个匹配的字符串
✧输入N命令,反向查找(由下而上)下一个匹配的字符串
在使用“/word”命令输入查找条件后,就可以使用n或N命令向上或向下快速定位与查找条件匹配的字符串。
(2)自下而上的查找操作
在vi编辑器中,有个与查找命令“/word”反响的查找命令“?
word”,该命令从当前光标处由下而上进行字符串的查找。
在使用“?
word”命令输入查找条件后,可以像“/word”一样,使用n或N命令按照当前查找命令所设置的查找方向正向或反向定位匹配的字符串。
vi编辑器中字符串查找命令的查找方向可以进行以下对比:
✧“/word”和“?
word”命令在设定字符串查找条件的同时设置绝对的字符串查找方向,“/word”的查找方向是自上而下,“?
word”的查找方向是自下而上。
✧N或n命令是按照当前查找命令的方向进行反向或正向的匹配字符串定位;N或n命令的反向或正向是相对于查找命令的方向而言的,不是绝对的方向。
在进行查找操作时,符合条件的字符串会高亮显示,可使用末行命令“:
nohl”取消高亮显示。
(3)普通替换操作
vi编辑器的替换操作需要使用末行命令。
普通的替换操作命令由“s”开始,后面分别是被替换的字符串(old)和要替换成的字符串(new),命令和字符串之间都用“/”分隔。
如要将当前行中的“lch”字符串替换成“lichuanhui”字符串:
vi的普通替换命令是最基本的替换操作,需要明确以下两点功能:
✧命令只在当前行进行匹配和替换
✧命令只替换当前行中的第一个匹配的字符串
(4)行内全部替换操作
为了方便字符串的替换操作,vi编辑器的替换命令可以设定在当前行替换所有匹配的字符串:
在s替换命令的末尾加入g命令,可以在当前行中替换所有与“old”匹配的字符串为“new”。
行内替换命令只在光标所在行进行替换操作,而不涉及当前行以外的其他内容。
(5)在行区域内进行替换操作
vi编辑器中可以在指定的区域内进行字符串的替换:
在行区域替换命令中,在s命令之前需要加入“#,#”表示两个行号之间的行区域,例如“23.,30”表示第23行到底30行之间的文本行区域,共8行。
指定文本区域可以较灵活地设置文本替换的范围。
(6)整个文件内的替换操作
vi编辑器提供了在整个文档中进行替换操作的命令,命令的格式:
在s命令之前加入“%”可以指定替换命令的范围是整篇文档,适用于将整篇文档中的字符串“old”替换成“new”。
对整篇文档中的匹配字符进行全部替换有可能造成不可预知的字符串替换,因此应慎重使用。
(7)使用替换的确认功能
在较大范围的字符串替换操作中,例如对某个行区域或整篇文档进行替换操作时,比较容易造成意外的替换,因此vi编辑器为替换命令提供了确认功能:
上面所学的所有替换命令都可以在命令尾加入e命令,强制每个替换操作都需要用户确认。
使用确认的替换命令后,vi编辑器将在屏幕的末行显示替换的确认界面:
在字符串替换的界面,有如下的常用选择:
✧y:
替换当前已经定位的匹配字符串
✧n:
不替换当前已经定位的匹配字符串
✧a:
替换当前指定范围内的所有字符串
✧q:
退出确认界面,并取消当前命令所有替换操作
替换命令的确认功能可以较好的解决“误替换”操作的问题,建议在大范围的文本替换操作中作为默认的操作动作使用。
3.2.3编辑器的多文件操作
在前面我们学习了vi编辑器的单文件操作,vi作为功能强大的文本编辑器,支持对多个文件同时进行操作。
1、多文件操作的启动
在vi的命令格式下,可以使用多个文件名作为命令参数,vi编辑器在启动时将同时打开多个文件,格式如下:
例如,进入“/etc/”目录,并使用vi编辑器打开“passwd”、“fstab”和“inittab”3个系统文件:
vi编辑器将在当前的编辑屏幕中显示vi命令参数中的第一个文件,其他文件处于后台状态(不进行显示)。
vi编辑器在同一时刻只能编辑当前屏幕中的文件,如需编辑其他文件需要进行文件切换。
2、多文件切换命令
vi编辑器在进行多文件编译时,编辑器中的前台文件和后台文件都可以使用命令进行切换。
(1)显示多文件信息
在进行vi编辑器中的多文件操作之前,应使用args命令查看vi编辑器中多文件的状态:
例如,当前vi编辑器打开了“passwd”、“fstab”和“inittab”3个系统文件,则该命令的显示结果是:
由上例可以看出3个文件的排列顺序,其中[passwd]文件是vi编辑器当前显示的文件,用[]括起来表示。
(2)前台切换文件
vi编辑器中使用“next”和“prev”末行命令对vi中打开的多个文件进行向后向前的切换:
例如,vi编辑器当前执行args命令的结果是:
执行next命令后再次执行args命令的结果是:
可以看到,vi编辑器当前编辑的文件已经从“passwd”切换到了“fstab”,并且编辑屏幕现实的内容也变为“fstab”文件的内容。
执行prev命令后,vi编辑器当前编辑的文件会从“fstab”文件切换到“passwd”。
在bi编辑器中队多个文件进行编辑时,从一个文件切换到另一个文件之前,应确保当前的文件已经保存了修改的内容,如果需要丢弃当前文件的修改并进行文件的切换,可以使用:
在next和prev命令的后面使用“!
”命令在前后文件切换的同时丢弃对当前文件的修改内容。
(3)定位首文件和尾文件
vi编辑器的first和last命令可将当前文件直接切换到vi编辑器打开的首文件或尾文件:
例如,vi编辑器中打开多个文件的状态如下:
执行last命令后再使用args查看,现实的结果如下:
在vi编辑器中打开数量较多的文件时,使用first和last命令可以直接定位首、尾文件。
(4)快速文件切换
在vi编辑器中已经使用某个文件切换命令对当前文件进行切换后,使用vi命令模式下的“Ctrl+6”组合键命令可以快速切换到编辑器切换前的文件(按多次则是来回切换),尤其适合在vi编辑器中打开两个文件、并相互参照进行的环境下使用。
(5)同时打开两个文件进行对比编辑
使用vi编辑器使用选项“o”可以同时打开两个文件进行上下分屏对比编辑,命令及结果如下:
使用组合键Ctrl+ww,在两个文件之间进行光标的切换。
需要注意的是,在进行文件保存或退出时,必须都每个文件都做出保存或者退出的命令。
使用vi编辑器使用选项“O”可以同时打开两个文件进行左右分屏对比编辑,命令及结果如下:
同样的,使用组合键Ctrl+ww,在两个文件之间进行光标的切换;在进行文件保存或退出时,必须都每个文件都做出保存或者退出的命令。
本章实验:
实验环境:
在SK公司济南分公司的内部服务器建设中,