Linux循序渐进(22)

  第二十四课 全屏幕文本编辑器Vi

  本章介绍Linux上最常用的文本编辑器Vi文本编辑器是所有计算机系统中最常使用的一种工具用户在使用计算机的时候往往需要建立自己的文件无论是一般的文本文件数据文件还是编写的源程序文件这些工作都离不开编辑器

  Linux系统提供了一个完整的编辑器家族系列如EdExVi和Emacs等按功能它们可以分为两大类行编辑器(EdEx)和全屏幕编辑器(ViEmacs)行编辑器每次只能对一行进行操作使用起来很不方便而全屏幕编辑器可以对整个屏幕进行编辑用户编辑的文件直接显示在屏幕上修改的结果可以立即看出来克服了行编辑的那种不直观的操作方式便于用户学习和使用具有强大的功能

  Vi是Linux系统的第一个全屏幕交互式编辑程序它从诞生至今一直得到广大用户的青睐历经数十年仍然是人们主要使用的文本编辑工具足见其生命力之强而强大的生命力是其强大的功能带来的

  本章中我们将循序渐进地介绍如何使用Vi来建立编辑显示以及处理文件(注文中的大写字母为[shift]键+相应的小写字母的组合)  Vi简介

  Vi是Visual interface的简称它在Linux上的地位就仿佛Edit程序在DOS上一样它可以执行输出删除查找替换块操作等众多文本操作而且用户可以根据自己的需要对其进行定制这是其他编辑程序所没有的

  Vi不是一个排版程序它不象Word或WPS那样可以对字体格式段落等其他属性进行编排它只是一个文本编辑程序

  Vi没有菜单只有命令且命令繁多Vi有三种基本工作模式命令行模式文本输入模式和末行模式

  命令行模式

  任何时候不管用户处于何种模式只要按一下键即可使Vi进入命令行模式我们在shell环境(提示符为$)下输入启动Vi命令进入编辑器时也是处于该模式下

  在该模式下用户可以输入各种合法的Vi命令用于管理自己的文档此时从键盘上输入的任何字符都被当做编辑命令来解释若输入的字符是合法的Vi命令则Vi在接受用户命令之后完成相应的动作但需注意的是所输入的命令并不在屏幕上显示出来若输入的字符不是Vi的合法命令Vi会响铃报警

  文本输入模式

  在命令模式下输入插入命令i附加命令a 打开命令o修改命令c取代命令r或替换命令s都可以进入文本输入模式在该模式下用户输入的任何字符都被Vi当做文件内容保存起来并将其显示在屏幕上在文本输入过程中若想回到命令模式下按键即可

  末行模式

  末行模式也称ex转义模式

  Vi和Ex编辑器的功能是相同的二者主要区别是用户界面在Vi中命令通常是单个键例如iao等而在Ex中命令是以按回车键结束的正文行Vi有一个专门的转义命令可访问很多面向行的Ex命令在命令模式下用户按:键即可进入末行模式下此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个:作为末行模式的提示符等待用户输入命令多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)末行命令执行完后Vi自动回到命令模式例如

  :$s / A / a / g

  则从文件第一行至文件尾将大写A全部替换成小写a

  若在末行模式下输入命令过程中改变了主意可按键或用退格键将输入的命令全部删除之后再按一下退格键即可使Vi回到命令模式下

  如果要从命令模式转换到编辑模式可以键入命令a或者i如果需要从文本模式返回则按Esc键即可在命令模式下输入:即可切换到末行模式然后输入命令

  第二十五课 Vi的进入与退出  Vi 的进入

  用户登录到系统中之后系统给出提示符$在提示符后键入Vi和想要编辑(或建立)的文件名便可进入Vi

  [例] 键入命令

  $ vi examplec

  如果只键入Vi而不带文件名也可以进入Vi之后在光标处键入文件内容退出Vi时只需在退出命令后输入文件名即可

  进入Vi之后首先进入的就是命令模式也就是说等待命令输入而不是文本输入这时输入的字母都将作为命令来解释光标停在屏幕第一行首位上(用 表示)其余各行行首均有一个~符号表示该行为空行最后一行也称状态行显示出当前正在编辑的文件名以及其状态如本例是[New File]表示examplec是一个新建的文件如果examplec文件已在系统中存在那么输入上述命令后则在屏幕上显示出该文件的内容并且光标停在第一行的首位在状态行显示出该文件的文件名行数和字符数

  [例] 键入命令

  $ vi examplec

  然后键入

  #include   main ( )    {    int k ;    for ( k= ; k< ; k++) add( );    }   add( )  {   static int x=;   x++ ;   printf(x = %d\n x);  }   ~   ~   ~   ~    examplec [ New File]

  注意在这里我们为了节省篇幅起见屏幕只显示行事实上初始的显示行数与用户所用终端有关一般的CRT终端可显示行在窗口系统中显示行数与运行Vi的那个窗口有关然而我们可以对显示行数进行设置例如在能显示行的CRT终端上让Vi只显示行设置的方法将在本节后面介绍

  当用Vi建立一个新文件时在进入Vi的命令中也可以不给出文件名当编辑完文件需要保存数据时再由用户指定文件名

  进入Vi时用户不仅可以指定一个待编辑的文件名而且还有许多附加操作

  如果希望在进入Vi之后光标处于文件中特定的某行上可在Vi后加上任选项+n其中n为指定的行数

  [例] 键入命令

  $ vi + examplec

  后屏幕显示如下

  #include   main ( )    {   int k ;    for ( k= ; k< ; k++) add( );   }   add( )    {   static int x=;    x++ ;    printf(x = %d\n x);    }   ~   ~   ~   ~   ~    examplec lines characters

  光标将位于文件examplec中的第行上

  如果希望在进入Vi之后光标处于文件最末行则只需把命令中附加项+后面的数字n省略掉即可

  在进入Vi时除了可以指定一个光标起始行号之外还可以在命令中指定一个模式串此时在进入Vi后光标就处于文件中第一个与指定模式串相匹配的那行上

  [例] 键入命令

  $ vi +/int examplec

  屏幕显示如下

  #include   main ( )    {   int k ;    for ( k= ; k< ; k++) add( );    }   add( )    {   static int x=;    x++ ;    printf(x = %d\n x);    }   ~   ~  ~   ~   ~    examplec lines characters

  光标将位于文件examplec中的第行上

  使用Vi可以同时编辑多个文件只要在进入Vi的命令中写入所要操作的文件即可还可以使用通配符

  [例] 键入命令

  $ vi *cat

  就可以编辑所有后缀为cat的文件了当然您还可以使用shell中内置的模式匹配来装载文件这样会更富技巧性一旦您在命令行中包含了所有的待编辑文件名就可以在Vi中方便地移来移去

  退出Vi

  当编辑完文件准备退出Vi返回到shell时可以使用以下几种方法之一

  在命令模式中连按两次大写字母Z若当前编辑的文件曾被修改过则Vi保存该文件后退出返回到shell若当前编辑的文件没被修改过则Vi直接退出 返回到shell

  在末行模式下输入命令    :w

  Vi保存当前编辑文件但并不退出而是继续等待用户输入命令在使用w命令时可以再给编辑文件起一个新的文件名     [例]

  :w newfile

  此时Vi将把当前文件的内容保存到指定的newfile中而原有文件保持不变若newfile是一个已存在的文件则Vi在显示窗口的状态行给出提示信息

  File exists (use ! to override)

  此时若用户真的希望用文件的当前内容替换newfile中原有内容可使用命令

  :w! newfile

  否则可选择另外的文件名来保存当前文件

  在末行模式下输入命令

  :q

  系统退出Vi返回到shell若在用此命令退出Vi时编辑文件没有被保存则Vi在显示窗口的最末行显示如下信息

  No write since last change (use ! to overrides)

  提示用户该文件被修改后没有保存然后Vi并不退出继续等待用户命令若用户就是不想保存被修改后的文件而要强行退出Vi时可使用命令    :q!

  Vi放弃所作修改而直接退到shell下

  在末行模式下输入命令

  :wq

  Vi将先保存文件然后退出Vi返回到shell

  在末行模式下输入命令

  :x

  该命令的功能同命令模式下的ZZ命令功能相同

<sc 其实你已经错过了旅行的意义。

Linux循序渐进(22)

相关文章:

你感兴趣的文章:

标签云: