• linux之文本编辑器


     【目标

    管理员在进行系统操作的时候,不可避免地会对文本进行修改,如进行各种服务程序配置文件的修改,使程序对用户提供不同的服务效果。在本章我们向大家介绍Linux上常见的编辑器ed、vi、emacs,同一时候以vi为例,解说Linux中的文本编辑,为大家成为优秀的系统管理员打下基础。

    重点内容

    Ø        Linux编辑器简单介绍

    Ø        vi的打开和退出

    Ø        vi 的三种模式

    Ø        在文件里高速移动光标

    Ø        在文件里替换和删除文本

    Ø        撤销和反复编辑命令

    Ø        移动和复制文本


    4.1    Linux的文本编辑器

    4.1.1   ed

    在早期的unix平台上,ed能够说是唯一的编辑工具。它是一个非常古老的行编辑器,vi这些编辑器都是从ed 演化而来。行编辑器使用起来非常不方便,每次仅仅能对一行进行操作,。而后面介绍的pico、vi、emacs等全屏幕编辑器能够对整个屏幕进行编辑,用户编辑的文件直接显示在屏幕上,改动的结果能够马上看出来,克服了行编辑的那种不直观的操作方式,便于用户学习和使用,具有强大的功能。

    Linux尽管如今通用vi来编辑,但也在系统中保留了ed,仅仅是没有人会去用罢了。

    4.1.2   pico

    pico非常象DOS下的edit程序,打开之后,屏幕下方有操作的提示信息,功能简单,也能够完毕操作,一步一步做就能够了。pico的功能键直接列在屏幕的最下方,能够做为帮助来指导操作。

                                                                                             

    字符界面下的pico

    这个工具对初学Linux是有帮助的,毕竟Linux中的新东西太多了,能够从简单熟悉的东西入手,在建立了主要的概念之后,再来学习vi等复杂的工具。这不失为一种选择。

    4.1.3   vi和vim

    vi在是Unix平台上历史悠久的编辑器,它的命名是取“visual”(可视化的)这个单词的前两个字母,vi是Unix平台上可视化编辑器(或者说基于屏幕的编辑器)的代表,由加州大学和伯克利大学等机构,以原来的Unix行编辑器ed等为基础开发出来的,是一个使用多年,流传很广泛的编辑工具。在Linux诞生的时候,vi与基本Unix应用程序一样被保留下来,成为我们管理系统的好帮手。

    vim意为“vi iMproved”,改进了的vi,由Bram Moolenaar编写。Bram于1989年新买了一台计算机,在上面使用vi的时候认为非常多地方都不太方便,所以他找到了Stevie的源码,在上面进行改进。在这期间还有Sven等非常多人的增加,持续地改进,直到我们如今使用得非常广泛的6.x版本号。

    vim与vi相比,添加了很多其它的特性,如彩色与高亮显示,能够使我们的编辑工作更轻松。通过设置,vim会自己主动检測文件里内容的类型,并以不同的颜色进行高亮显示,如凝视变成蓝色,keyword变成褐色,而字符串变成红色等,与vi传统的黑白显示模式相比,vim更易读易用。还有一个有趣的功能是vim支持从右到左输入字符,这在使用一些特殊语言(如Farsi)进行编程时是比較实用的。在vim中,我们还能够使用多窗体显示,在一个屏幕中同一时候对多个文件进行操作。我们还能够通过.vimrc文件定制的方法,来使用户在打开vi的时候获得自己熟悉的和适用于自己特殊目的的环境。

    在编辑那些比較大的文件特别是程序文件的时候,vim比vi更方便一些。

    4.1.4   emacs

    emacs是Open Source的领袖Richard Stallman开发的,是Linux发烧友和程序猿的终极武器,其功能大大超过了文本编辑。我们能够在emacs中进行文本编辑,也能够编敲代码代码,做程序调试,编辑HTML/SGML,读News,收发e-mail…,并且emacs经过配置后还支持中文。只是功能的强大往往意味着操作方法的复杂,emacs也是如此,必须记许多的命令才干使用它。

                                                              

    启动了功能菜单的emacs

    非常多UNIX程序猿每天开机的第一件事就是打开emacs,看看自己的邮箱,然后開始编程工作,看其它人在News Group中讨论问题…emacs就是他们的一天,难怪有人说emacs是个操作系统。,眼下emacs有terminal和Xwindow版本号,terminal版是比較难操作的,而Xwindow版由于支持鼠标,所以相对easy上手一些。在自己的Linux水平从中级向高级发展的时候,最好还是把emacs做为选择对象。

     

    4.2    vi编辑器:打开和退出

    vi是一个让人又恨又爱的东东,恨的是它有许多的參数与用法,让人记不胜记;还有不同与一般编辑器的“三种模式”,使刚開始学习的人头晕眼花,应接不暇。但随着不断的使用,我们会对vi渐渐熟悉,一定越来越会发现它竟如此快捷方便。vi是帮我们管好Linux、Unix的强大工具,假设我们对编程开发有兴趣的话,将会发现利用vi,我们在这方面更能发挥自己的才干。

    我们先来看一下怎样简单地进入和退出vi:

    4.2.1   进入vi

           vi是一个在命令行下使用的编辑工具,在提示符下输入vi就可以进入

                         # vi                                                                

           或者使用vi加上所需编辑的文件名称,能够直接開始对文件的改动

          # vi /etc/services                                             

    4.2.2   vi的退出

    退出时,仅仅要在底线模式(详见4.3节)。下输入“q”,再回车就能够了。

    技巧

    使用“vi + 文件名称”打开文件。运行vi时,假设使用加号后面跟文件名称,就能够在进入文件的时候使光标处在文件最后一行的位置,便于加入内容。如“vi + /etc/hosts”。

    使用“vi + 数字文件名称”,能够直接从某一行開始编辑文件。如“vi + 23 /etc/services”,就是打开serivces,从23行開始编辑。

    4.2.3   打开文件、保存文件和退出 vi 编辑器

    存盘和退出、设置行号操作等功能,输入“:”进入底线模式。

    在屏幕最以下一行将出现一个“:”符号。这时,输入不同的命令符并回车,有不同的效果:

    w命令:

    把当前的文件保存起来,然后能够继续编辑。

    q命令:

    退出vi。

    这两个命令符也能够组合起来,“wq”回车,就是保存后退出了。

    x命令:

    x = wq,保存退出。

    ! 命令:强制运行。(经常使用)

    在你想保存一个属性是“仅仅读”的文件的时候,系统会提示

    E45: 'readonly' option is set (add ! to override)

    文件仅仅读,要用“!”符号来强制写入,

    “w!”

    就能够存盘了。

    另外是改动之后,发现自己改动的内容太混乱,不想存盘而直接退出,这时候是无法在底线模式下输入“q”退出的,vi会提演示样例如以下错误信息:

    E37: No write  since last change (add ! to override)

    系统会提示你在改动之后没有存盘,不让你退出。这时候相同能够使用“!”符号:

    “q!”

    就能够无论三七二十一,直接退出了。相同地,强制存盘退出也能够组合出来:

    “wq!”或者是“x!”

    在保存的时候,假设加上文件名称,就相当于另存为,比如:

    “:w newfile”

    就能够把当前的文件保存为newfile。

    技巧

    在保存时使用“:x,x1 w newfile”,就能够把从x行到x1行的内容另存为newfile。

    4.3    vi 的三种模式

    刚刚用vi的朋友,总会问到:“打开之后,我的vi不能输入字符,按上下左右键光标也没法移动,机器光是吱吱叫,这是怎么回事?”非常easy,你必需要先进入Insert模式。对vi的三种模式搞不清,是刚開始学习的人的第一个难题。

    三种模式是vi的特点,是与其它编辑器显著不同的,在不同的模式下,完毕不同类型的操作。想让vi帮你做事情,先了解以下的内容吧。

    4.3.1   vi 的输入模式(Insert mode)

    初用vi,大概最easy掌握的就是Insert模式了。简单地说,Insert模式让我们能够输入字符和文字。当我们编辑一个系统配置文件,改动一个脚本的内容,都要敲入字符,这终于都要在Insert模式下进行。刚才那位仁兄无法输入字符,就是由于没有进入vi的输入模式。

    事实上他仅仅要在进入vi之后,把光标移动到要输入字符的对应位置,敲一下“i”键,就能够输入了。我们会看到屏幕最下方显示“插入”的字样(如英文为默认语言,则为Insert)。这时候就是在输入模式下了,想写什么,就写什么。进入输入模式还有其它的方法,大家在这里先记住“i”键,我们等一下再看其它的进入方式。

                                                            

    进入输入模式时,会显示“INSERT”

    输入模式的功能

    输入模式就这么一个功能:字符输入,最简单。

    4.3.2   vi 的命令模式(Command mode)

    命令模式是vi中管理光标和其它一些工作的。我们在编辑文件的时候,须要把光标移来移去,这时候我们须要进入命令模式;删除字符,要进入命令模式;想进行移动和复制某段文字的操作,还是要进入命令模式。命令模式和输入模式结合起来,让我们能够在文件里上上下下,加入改动,完毕我们的编辑。

    命令模式的功能

    移动光标:这已经介绍过,把光标移动到屏幕不同的位置。

    删除字符:能够一个一个字符地删除,也能够成行、成段地删除。

    复制或者移动字符:这是编辑器里必不可少的功能,vi中也不例外。

    我们将在后面功能键部分着重地讲一下。

    4.3.3   vi 的底线模式(Last line mode)

    对一般的使用者来说,底线模式最重要的一个功能,就是让我们能够保存编辑工作的结果,假设没有存盘而异常退出,那么很不幸,须要又一次再来改动一遍。当我们完毕编辑,想把结果保存起来时,就要进入底线模式。

     

    底线模式的功能

    底线模式中能够运行各种命令,常见的包含:

    保存结果:这已经介绍过,在此就不再赘述了。

    查找字符:在编辑大段文字的时候,想找到一个词,一个字符串或是其它不论什么内容,都能够用底线模式下的查找功能。

    退出vi。编辑完毕后,也是由这里退出的。

    列出文件的行号:对多行的文件来说,列出行号有利于定位文字,也是非常方便的一个功能。

    光标移到某一行:列出行号后,当然也会想让光标方便地移到某一行上,高速定位。

    三种模式中,以底线模式的功能最复杂,涉及的方面也多,大家要注意掌握。

    4.3.4   vi 三种模式的切换

    vi在编辑中,有时须要输入,有时须要移动光标,最后是保存、退出,这些操作是在三种模式下运行各自的功能,所以三种模式下的切换方法也是须要掌握的基本功。

    首先要记住的是命令模式是切换的“中心”,由命令模式能够直接进入其它两种模式,而输入模式须要进入底线模式时,首先要进入命令模式,然后由这里进入底线模式;反之亦然。

                                                                                                

    命令模式是三种模式的转换中心

    4.3.4.1    命令模式进入输入模式

    前面已经介绍过,在命令模式下,敲击“i”键就能够进入输入模式,另外敲击“a”和“o”(字母)键也能进入,三者的差别例如以下:

    i:在当前光标所在之处插入,開始输入字符。(最经常使用)

    a:在当前光标所在的后一个位置插入,開始输入字符(最经常使用)

    o:在当前光标所在行的以下新创建一行,并在行的第一个位置開始输入字符。(最经常使用)

    这并非所有的进入方法,但却是最经常使用的。大家能够依据不同的情况选取。以下对应地另一些大写字母的进入方式,我们按住Shift+大写字母(I、A、O),也能够进入输入模式,但光标移动的位置不同:

    I:光标移动到本行的行首,開始输入(经常使用)

    A:光标移动到本行的末尾,開始输入(经常使用)

    O:与“o”相对,在当前光标所在行的上面新创建一行,并在行的第一个位置開始输入字符。(经常使用)

    4.3.4.2    命令模式进入底线模式

    有两种方法能够进入,一种是敲“:”,一种是敲“/”键。我们会发现光标从原来的位置变到了屏幕的最以下一行,在后面就能够输入对应的底线模式命令。

    “:”键:运行存盘、退出、參数设置和shell底线模式命令等功能。

    “/”键(或者“?”也能够):假设要运行查找功能,敲击此键。

                                                                    

    底线模式模式的提示符

    技巧

    用“%”进行括号匹配

    此功能对程序猿比較实用。按下“%”时,vi首先向后找到第一个括号如“(”,然后就会去找与之相配的还有一边“)”;如向右的第一个括号是“)”,vi就会去找对应的“(”。

    5.3.4.4    输入模式和底线模式进入命令模式

    从这两种模式进入命令模式,按“ESC”就能够了。

    我们从以下就要開始学习在vi中进行各种编辑工作,但首先要注意做不论什么操作须要处于对应的模式下,否则就不会成功。在各种模式中切换是vi的基本功,请一定认真掌握和识别不同模式。

    4.4    在文件里高速移动光标

    4.4.1   主要的移动方式

    要对正文内容进行改动,首先必须把光标移动到指定位置。移动光标的最简单的方式是按键盘的上、下、左、右箭头键。除了这样的最原始的方法之外,用户还能够利用 vi 提供的众多字符组合键,在正文中移动光标,迅速到达指定的行或列,实现定位。

    命令模式下的光标移动

    k、j、h、l      (经常使用)

    功能分别等同于上、下、左、右箭头键。可能在最初的时候不太习惯。

    提示

    在Linux中的vi版本号中,上下左右键也都能够移动光标,不管在命令模式还是输入模式中。

    4.4.2   在同一行中移动光标

    M(经常使用)

    将光标移到当前屏幕的中间一行的行首。M表示Middle。

    L (经常使用)

    将光标移到当前屏幕的最下行的行首。L表示Lowest。另外:

    xL将光标移到屏幕的倒数第x行。比如,3L,将光标移到屏幕的倒数第3行。

    w              

    在指定行内右移光标,到下一个单词的开头。

    e              

    在指定行内右移光标,到本单词的末尾

    b              

    在指定行内左移光标,到前一个单词的开头.

    0              

    数字0,左移光标,到本行的开头(注意与“I”的差别,数字0仅仅移动而不插入)

    $              

    右移光标,到本行的末尾(注意与“A”的差别,$仅仅移动而不插入)。

    ^              

    移动光标,到本行的第一个非空字符。

    fx

    往右移动到 x 字符上,注意此操作不能移到下一行,找到最后一个字母即止。以下的Fx、tx、Tx与此同样。

    Fx

    往左移动到 x 字符上

    tx

    往左移动到 x 字符前

    Tx

    往左移动到 x 字符后

    4.4.3   在页面间移动光标

    Ctrl+b  (大文件经常使用)

    在文件里向上翻一页(相当于 PageUp 键)

    Ctrl+f     (大文件经常使用)

    在文件里向下翻一页(相当于 PageDown 键)

    H(经常使用)

    将光标移到当前屏幕的最上行的行首。H表示Highest。

    xH             

    将光标移到当前屏幕的第x行。比如,2H就是将光标移到当前屏幕的第2 行。注意这个当前屏幕的第2行并不一定是本文件的第二行。

    和4.4.2节反复J,删除!

    4.4.4   在底线模式下移动光标

    高速移动不但在命令模式中能够实现,在底线模式中也能够,我们先来看一下为文件加上行号的方法。

    按“:”键,在屏幕最后一行出现“:”提示符的时候,输入

    “set nu”

    能够给文件中的每一行加上行号,方便阅读与编辑。注意此行号仅仅是标注,而不是实际加入到文件中的数字。

    文件里的标识行号

    技巧

    直接显示光标所在行的行号。有时我们并不想用“:set nu”为文件加上行号,但又想看一下光标所在行是哪一行,能够使用“Ctrl+g”命令,就能够显示"文件名称" line 34(光标位置) of 970(总行数) --3%--(比例)等信息。

    4.4.5   使用行号移动光标

    在“:”提示符后面输入数字,能够使光标直接移到对应行。在编辑大的文件的时候,这是非常有帮助的功能。如上图的光标在第4行,想立即移到第9行,能够先输入“:”,进入底线模式,然后输入“9”,就能够使光标处在第9行的位置。

    提示

    输入数字把光标移动到某一行,并不须要先用“set nu”加上行号,直接在“:”后输入数字就能够。当然首先要对目标行的行号心中有数。

    4.4.6   查找字符或者文字

    在底线模式中使用“/”和“?”键进行查找

    在命令模式中按“/”或“?”键,相同能够进入底线模式,屏幕下方显示一个“/”或“?”,而且能够查找所需的字符、文字等。直接在提示符后面输入想要查找的内容,再回车就能够了。如查找“mail”:

    “/mail”

    使用底线模式的查找功能

    就是从光标所在位置向后查找“mail”这个单词,假设如今找到的不是所需的单词,能够按“n”键(表示next),继续查找。使用问号“?”,是向前查找。

    4.5    在文件里替换和删除文本

    4.5.1   命令模式中的替换命令

    将光标定位于文件内指定位置后,能够用其它字符来替换光标所指向的字符,或从当前光标位置删除一个或多个字符。

    rc (最经常使用)            

    用字母“c”替换光标所指向的当前字符。r是replace的意思。另外:

    xrc:这里x是数字。表示从光标位置起,用字母“c”替换光标后的x个字符。如:5rc用字母c替换光标所指向的后5个字符。

    4.5.2   在底线模式中的替换命令

    :%s/字符1/字符2/g

    查找并替换字符,在底线模式下运行。能够在全文中查找字符1,然后以字符2替换。比如:

           “:%s/tcp/tcpv6/g “,会将全文中的tcp换为tcpv6。

    x  (最经常使用)

    删除光标所指向的当前字符。另外:

    nx:删除光标所在位置起的后x个字符。如:3x,删除光标所在位置起的后3个字符

    dw  (经常使用)           

    从光标所在位置開始,向右删除单词。比如,光标在“daytime”单词的字母“y”的位置上,那么按dw会删除“ytime”部分,留下“da”。若是在单词的第一个字母运行此命令,则整个单词都被删除。另外,

    xdw:删除光标右側的x个单词。比如:3dw,删除光标右側的3个单词。

    db  (经常使用)           

    从光标位置起,删除左側的单词。使用方法与dw一样,仅仅是方向相反。相同支持xdb方式的使用方法,也与dw一样。

    dd (最经常使用)

    删除光标所在行,并去除空隙。就是说删除后,原来的第三行会提升上来。另外:

    xdd:删除x行内容,并去除空隙。比如,3dd,删除3行内容,并去除空隙。

    d$(经常使用)

    从当前位置删除到行尾。

    dG

    从光标当前所在行開始,删除以下全部行。做了这个操作之后,vi还会提醒“如今还剩xxx行”。

    4.5.3   底线模式中的删除方式

    在底线模式中我们相同能够利用行号来做整行的删除工作。在底线模式下,我们能够输入行号加“d”来删除某一行:

           “:35 d”

    表示删除第35行。也能够一次删除多行,把两个行号用逗号隔开,以这两行为起止点进行删除:

    “:35,47 d”

    表示删除文件里的35到47行。

           “:35,$ d”

    表示从第35行删除到最后一行。

    :%d

    在底线模式“:”下输入“:%d”再回车,能够删除全文。注意别误用了这个命令,假设误用,赶快用以下的撤销命令。

    4.6    撤销和反复编辑命令

    “u”:在命令模式中输入“u”,是undo的意思,能够撤销上一次的操作,最经常使用,重复的按u,能够退回非常多次操作。

    .”:使用“.”符号能够反复本次操作。比如,使用“dd”命令删除了一行之后,能够再按“.”键,每次都能够再删除一行。

    4.7    移动和复制文本

    4.7.1   文本行的移动

    vi中我们能够方便地将某个范围内的文本行左右移动或从一个地方移至另外一个地方。

    文本行的左右移动是在命令模式下完毕的,经经常使用于程序编写。

    以下内容中的符号“>”为键盘上的大于号,“<”为键盘上的小于号。

    >     (按回车键)

    将本行与下一行向右移动8个字符(一个tab)的位置

    >0

    仅仅将本行向右移动8个字符的位置

    >x   (加回车)

    从本行開始,将以下的x行都向右移动8个字符的位置

    将本行与下一行向左移动8个字符的位置

    <0

    仅仅将本行向左移动8个字符的位置

    <x   (加回车)

    从本行開始,将以下的x行都向左移动8个字符的位置

    >> 

    将本行向右移动8个字符的位置

    << 

    将本行向左移动8个字符的位置

    4.7.2   在底线模式中的整行移动

    在底线模式中,我们能够把某一行放入还有一行的以下,使用命令

    “:x m x1”

    就能够把第x行移动到第x1行。

    粘贴和复制

    从正文中删除的内容(如字符、字或行)并没有真正丢失,而是被剪切并拷贝到了一个内存缓冲区中。用户可将其粘贴到正文中的指定位置。完毕这一操作的命令是:

    p

    小写字母 p,将缓冲区的内容粘贴到光标的后面

    P

    大写字母 P,将缓冲区的内容粘贴到光标的前面

    假设缓冲区的内容是字符或字,直接粘贴在光标的前面或后面;假设缓冲区的内容为整行正文,则粘贴在当前光标所在行的上一行或下一行。

    注意上述两个命令中字母的大写和小写。vi 编辑器常常以一对大、小写字母(如 p 和 P)来提供一对相似的功能。通常,小写命令在光标的后面进行操作,大写命令在光标的前面进行操作。

    有时须要复制一段正文到新位置,同一时候保留原有位置的内容。这样的情况下,首先应当把指定内容复制(而不是剪切)到内存缓冲区。完毕这一操作的命令是:

    yy

    复制当前行到内存缓冲区。另外:

    xyy:复制x行内容到内存缓冲区,比如:5yy,复制5行内容到内存缓冲区。

    y$

    从当前位置拷贝到行尾。

    p(经常使用)

    假设要粘贴到其它地方 p 就能够了。

    xp

    当前的字符与后一个字符交换位置。

    ddp

    光标所在行的上下两行交换位置。

    J

    将光标所在的上下两行合并。

    4.8    在 vi 编辑器中与 shell交互

    在vi中,我们能够在底线模式下用“!”符号来訪问Linux的Shell,进行操作。

    “: !命令”

    直接在!后面接着所要运行的命令就能够。比如,我们在编辑/etc/service文件时,想知道当前系统开放有哪些port,就能够在底线模式下输入:

    “:!netstat –an | more”

    就会在当前屏幕中显示结果,完成后会提示你用回车退出。

    4.9    vi的定制

           在vim的学习中,我们已经了解了它的基本功能。vim是一个强大的工具,能够支持多种Linux使用者的操作。普通使用者,系统管理员和程序猿使用的vim习惯和环境可能有非常大不同。我们能够通过vimrc文件定制的方法来使用户在打开vim的时候获得自己熟悉的和适用于自己特殊目的的环境。

           在每一个用户的home文件夹下都有一个“.vimrc”文件(注意前面有一个点),我们能够手工创建它。在vim启动时,会读入当中的參数配置,这样我们打开文件时就能够进入自己熟悉的编辑环境和使用个性化的键盘配置。

    应用实例:使用.vimrc文件定制vim

    .vimrc的内容                                                        

    set nu                                                                    

    set inc search                                                         

    set tabstop=4                                                         

    set mouse=a                                                          

    set history=100                                                      

    set vb t_vb=                                                          

    set ruler                                                                 

    set virtualedit=all                                                    

    set nocompatible                                                    

    set nu

    我们已经学习过怎样在vim编辑时为文件加上行号以利于定位。事实上我们能够让vim在启动时就加上行号。

    set ic

    查找字符时忽略大写和小写。能够依据自己的习惯使用此功能。假设在编辑时想开启大写和小写查找,能够输入“: set noic”。

    set incsearch

    查找时,我们输入第一个字符时,vim光标就会自己主动定位到以下第一个与所查字符同样的字符上,输入第二个字符,光标就会定位到下一个与这两个字符同样的字符位置上,依次类推。比原来的查找更方便。

    set tabstop=4

    默认情况下,vim中的tab键能够一次向后移动8位,我们能够通过这个设置把移动位置调整为4,或者其它用户习惯的数值。

    set mouse=a

    在编辑过程中鼠标始终活动。

    set history=30

    使vim能够记住30条历史命令。在使用!与shell交互的时候非常实用,只是也不宜过多空耗内存。

    set vb t_vb=

    vim假设操作不被同意,计算机会发出“哔”的声音。假设你认为这个声音太讨厌(本人就是如此J),能够用此选项来定关掉它。

    set ruler                                                         

    让光标所在位置在屏幕下方显示。

    set virtualedit=all                              

    一个文件里可能含有非常多空的位置,如tab符之间,这些位置默认是不同意光标停留的。而开启了这个设置之后,光标就能够停留在文件的不论什么地方做编辑了。能够依据自己的习惯使用。只是请注意,有的时候这个选项会导致因分不清文件里是tab还是空格而引起的格式错误。

    set nocompatible                                            

    使vim与vi的模式不兼容,这样能够避免vi中的bug在vim中出现。能够依据自己的要求关闭。

    4.10  编辑多个文件

    vim同意我们一次打开多个文件进行编辑,并在它们之间进行切换。如:

    #vim  /etc/hosts  /etc/service  /usr/local/samba/lib/smb.conf

    能够一次编辑三个文件。打开的屏幕会显示第一个文件,我们能够用底线模式下的“e”来实现三个文件里的切换:

    “:e /etc/service”

    也能够用Ctrl+Shift+6来回到上一个编辑的文件。注意在文件间切换时,vim会强制你保存或放弃本次改动的内容。

    一次编辑多个文件是非常有用的功能。我们还能够在vim中用“:e”命令随时打开新的文件,用“yy”拷贝当中的内容,粘贴到原来的文件里。

    技巧

    同一时候编辑多个文件时还能够用更直观的方法:切割当前屏幕,用不同的屏幕空间显示不同的文件,使编辑工作更清晰。在底线模式下使用“:sp /etc/service”,即能够此种方式打开文件,并分上下两栏分别显示。

    4.11 十六进制编辑方式

    除了传统的ASCII码的编辑方式,Vi中还能够採用十六进制的方式来编辑文件,尤其是在一些特殊目的的编程中会用到。这时能够通过xxd设定命令来完毕。在底线模式下输入:

    :%!xxd

    然后回车就可以。

    如图可见,十六进制模式编辑的时候中间显示了文件数据的十六进制代码,而右边还是原文。

    假设要从十六进制返回原来的编辑模式,仅仅需输入:%!xxd –r就能够完毕。

    4.12  文本格式转换:unix2dos和dos2unix命令

    从名称就能够猜想到,这两个文本操作命令是在unix与dos文件格式之间进行转换用的。实际应用中,管理员常常会把Linux平台上的重要文档放到自己的Windows工作站上保存和查看,而两种平台之间的文本在互相查看的时候可能会由于一些控制符号的存在而使屏幕显得非常乱,非常不方便编辑。这时就须要用到本节介绍的这两个转换命令。

    在Windows窗体中的Linux文档

    DOS文件里,列的结束符号有两个控制字符,一个是归位字符 (carriage return,^M),还有一个是换列字符(new line,^J)。但Linux中仅仅使用一个换列字符 (功能同^J)。所以当Linux的文本文件放到DOS 上用文字编辑器编辑时,会错乱成首尾相连的一行。

    unix2dos的作用就是把Linux 的行尾符号(^J)转换成DOS中使用的(^M^J)。命令格式:unix2dos    源文件名称

    如:

    # unix2dos  ls.man.txt

    # unix2dos  -n  ls.man.txt  ls.man.txt.dos

    转换出来的内容会更新ls.man.txt文件,在Windows中查看就是正常的了。假设想将保留原文件,将转换内容新生成一个文件,须要-n选项。

     

    新生成出来的ls.man.dos.txt就是能够被Windows识别的格式。

    dos2unix的作用能够想见是正好相反的,功能是把Windows文档中的行尾符号转为^J,以便在Linux中能够使用。命令格式也同样。

    # unix2dos  -n  ls.man.txt  ls.dos.txt

  • 相关阅读:
    C++日记 OPENGL错误及解决方案
    C++日记 VS编译问题
    OpenGL 自制API 4
    C++日记 宏定义函数
    OpenGL 自制API gluPerspective
    OpenGL 自制API 3
    OpenGL 自制API 2
    OpenGL 自制API 1
    OPENGL入门教程
    c++基础的记录(随笔记录一些基础的东西)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4286775.html
Copyright © 2020-2023  润新知