zoukankan      html  css  js  c++  java
  • Vi编辑器入门

    Vi编辑器入门
     
    一、vi的工作模式

     vi有两种基本的工作模式:命令(编辑)模式和文本输入模式。

     命令模式:vi初始启动时进入命令模式。它不显示用户输入,只会被解释执行。

     文本输入模式:它就显示用户的输入,只是作为文本写入到用户的文件中。

     状态行:屏幕底部的一行,通常为第24行,vi在该行上反馈编辑操作的结果。错误信息或其他一些信息会在状态行上显示出来,vi还会在第24行上显示那些以冒号、斜杠或问号开头的命令。

    二、命令模式

       注意:

       1,如果想使用光标移动键,就必须使vi处于命令模式。

       2,当vi编辑器处于命令模式时,大部分命令在按下键时就会启动,因此不需要使用回车键来指明命令行的结束。

             vi的光标移动键键                 功能

        h或[←]              将光标向左移动一位

        j 或[↓]              将光标向下移动一位

        k或[↑]              将光标向上移动一位

        l 或[→]              将光标向右移动一位

        $                    将光标移到当前行的行尾

        w                    将光标向右移动一个字

        b                    将光标向左移动一个字

        e                    将光标移到字尾

        0(零)                 将光标移到当前行的行首

        [Reuturn]键            将光标移到下一行的行首

        [Spacebar]键            将光标向右移动一位

        [Backspace]键           将光标向左移动一位

      命令模式下vi编辑器的文本修改键   

        键                     功能

        x                      删除光标位置指定的字符

        dd                    删除光标所在的行

        u                      撤销最近的修改

        U                     撤销对当前行做的所有修改

        r                      替换光标位置上的一个字符

        R                     替换从光标位置开始的字符,同时改变vi到文本输入模式

        .(点)                 重复上一次的修改

    三、文本输入模式

      切换到文本输入模式的命令键

        命令键                      功能

        i                      在光标左侧输入正文

        I                      在光标所在行的开头输入正文

        a                      在光标右侧输入正文

        A                     在光标的所在行的未尾输入正文

        o                      在光标所在行的下一行增添新行,并且光标位于新行的开头

        O                     在光标所在行的上一行增添新行,并且光标位于新行的开头

      关闭文件

        ●     按[Esc]键,确保vi处于命令模式。

        ●     输入 : 将提示符放到屏幕底部的状态行上。

        ●     输入q![Return],该命令不保存改变并退出vi。按[!]键表示确认放弃修改。

      当vi处于文本编辑器模式时[Return]的使用:

        ●     如果光标在行尾,光标的右边没有文本按[Return]键将会在当前行的下面添加一个空行

        ●     如果光标正好在当前行的第一个字符上,按[Return]键将会在当前行的上面添加一空行

        ●     如果光标在本行的其他位置,并且它的右边有文本,按[Return]键会把该行分成两行

      编辑多个文件

        ●     编辑另一个文件:vi 可能同时打开多个文件,另一种方法是用:e(edit) 

        ●     读另一个文件  :在vi编辑器命令模式下,输入:r,后面跟文件名,并按[Return]键,:r命令将指定文件的副本放到缓冲区中光标位置之后。指定的文件成为当前文件的一部分。

        ●     写入另一个文件:vi编辑器允许用户将当前编辑文件的一部分写(保存)到另一个文件中。首先,用户需要指出希望保存的行的范围,然后用重排文本

      vi编辑器的剪切和粘贴键

        键            功能

        d             删除指定位置的文本,并保存到临时缓冲区中。

        y             复制指定位置的文本到临时缓冲区。

        P             将指定缓冲区的内容放到当前光标位置之上

        p             将指定缓冲区的内容放到当前光标位置之下

        c             删除文件并使vi进入文本输入模式,这是删除和插入命令的组合

      vi操作符的域

        部分vi域控制键

        域              功能

        $               标识域为从光标位置开始到当前行尾

        0(零)            标识域为从光标位置前到当前行首

        e或w          标识域为从光标位置开始到当前字尾

        b              标识域为从光标位置前到当前字首

    四、命令的组合使用

      在unix中许多的命令是可以组合使用的,这样就显出了 unix的强大之处。下面就列一些常用基本的文本处理的组合命令

        ◎使用删除操作符和域控制键

        ★实例1:删除从光标位置开始到当前行尾的文本,按d$

        ★实例2:删除从光标位置之前到当前行首的文本,按d0

        ★实例3:删除从光标位置后的一个字,按dw

        ★实例4:删除光标位置后的多个字(例如,3个字),按3dw

        ★实例5:删除到字尾,按de

        ★实例6:删除到前一个字的字首,按db

      ◎使用移出操作符和域控制键

        ★实例1:复制从当前光标位置开始到当前行尾的文本,按y$

        ★实例2:复制从当前光标位置开始到当前行首的文本,按y0

      ◎使用修改操作符和域控制键

        修改操作符c可以同时删除和移出操作符一样使用域控制键。c操作符与其他操作符不同的是它将vi从命令模式转换到文本输入模式。

        Vi编辑器的某些版本用一个标志来标记将被删除的最后一个字符。这个标志通常是美元符($),它覆盖将被删除的最后一个字符。

        ★     实例:使用修改操作符和域控制键来修改一个字,按cw.

    五、在vi中使用缓冲区

      ● 数字编号缓冲区:vi编辑器使用9个临时缓冲区,编号从1到9。每次删除或复制的文本都放在这些缓冲区中,用户指定缓冲区号就可以访问任何一个缓冲区。每次新删除或复制的文本替换缓冲区以前的内容。这意味着缓冲区1总是保留最近被修改的内容。

      用put操作符,并在它前面加上缓冲区号就可以找回数字编号缓冲区的内容。指定缓冲区的格式可以表示为:

      双引号+n(其中,n是缓冲区号,取1到9)+(p或P)

      ● 字母编号缓冲区:vi编辑器还使用26个命名缓冲区,这些缓冲区用小写字母a到z来命名。用户通过指定缓冲区我名字引用它们。这些缓冲区同数字缓冲区类似,不同之处在于,每次用户在文件中删除或移出文本时,vi编辑器不自动改变缓冲区的内容。用户可以将删除或复制的文本存到指定的缓冲区,然后用put操作符将指定缓冲区的文本复制到文件的其他地方。

      实例:完成下列操作,练习使用命令对指定的缓冲区进行操作。

        □     输入”wdd,删除当前行,将它的副本保存到缓冲区w”。

        □     输入”wp,将缓冲区w的内容复制到光标位置”。

        □     输入”z7yy,复制7行到缓冲区z”。

        □     输入”zp,将缓冲区z的内容(7行)复制到光标位置”。

    注意:1.这些命令不会显示在屏幕上。

       2.字母编号缓冲区用小写字母a到z命名

       3.使用这些命令不需要按[Return]键。

    六、光标定位键

      vi的翻页键

        键           功能 

        [Ctrl-d]                  将光标向下移动到文件尾,通常每次移动12行

        [Ctrl-u]                  将光标向上移动到文件头,通常每次移动12行

        [Ctrl-f]                  将光标向下移动到文件尾,通常每次移动24行

        [Ctrl-b]                  将光标向上移动到文件头,通常每次移动24行

      定位光标:使用的G命令,前面加上希望光标将位于的行号。

        实例:完成下列操作,使第1000行成为当前行。

        □     输入1000G,将光标移到第1000行上。

        □     输入1G,将光标移到第1行上。

        □     输入G,将光标移到文件尾。

      另一种有用的命令是[Ctrl-g],它告诉用户当前行号。例如,在命令模式下按[Ctrl-g]键,vi编辑器显示类似于以下的信息:

      “myfirst”line 30 of 90 – 30%

    七、设置vi的环境

      部分vi环境选项

      选项      缩写    功能

      autoindent            ai                   将新行与前一行的行首对齐

      ignorecase           ic                    在搜索选项中忽略大小写

      magic                                         允许在搜索时使用特殊字符

      number                nu                  显示行号

      report                                         通知用户上一个命令影响的行号

      scroll                                          设定[Ctrl-d]命令翻动的行数

      shiftwidth              sw                 设置缩进的空格数,与autoindent选项一起使用

      showmode           smd               在屏幕的右角显示vi编辑器的模式

      terse                                           缩短错误信息

      wrapmargin          wm                设置右边界为指定的字符数

    八、行长和行回绕

       用户的终端通常有80列。当输入文本到达行尾时,开始一个新行。

       wrapmargin选项:当用户输入文本到达距右边界指定的字符数时,wrapmargin选项使vi编辑器断开输入的文本。例如,要设置wrapmargin为10(其中10为距离屏幕右边界的字符数),输入:set wrapmargin=10并按[Return]键。则输入到达70列时,vi编辑器开始新行。就如同用户按了[Return]键一样了。

       wrapmargin选项的默认值是0(零)。要关闭wrapmargin选项,输入:set wrapmargin=0并按[Return]键

    九、缩写和宏

      vi编辑器为用户提供一些捷径使输入更简单,:ab和:map两个命令就起这个作用。

       ● 编写操作符:ab(abbreviateion)命令可以给任何字符指定缩写。

        例如,要缩写经常在本书中使用的UNIX Operating System为uno,输入:ab uno UNIX Operating System.如果uno是另一字的一部分,如unofficial,,则不会发生扩展。

        要取消缩写,使用unab(unabbreviate)操作符。例如,要取消uno缩写,输入:unab uno并按[Return]键。

       ● 宏操作符(map)可以指定单个键代表键序列,

        例如,要指定命令5dd(删除5行)为q,输入: map q 5dd并按[Return]键。

          用户也可以在map命令中指定终端的功能键。在这种情况下,输入#n作为键名,其中n指功能键号。例如,将5dd指定给[F2]键,vi删除5行文本。

    十、最后的vi命令――1运行shell命令

      用户可以在vi命令行中运行UNIX的shell命令。这一方便的特性允许用户暂时将vi编辑器放在一边,转而执行shell命令。!(惊叹号)提示vi下一个命令是UNIX的shell命令。如果需要,用户也可以查看shell命令的执行结果并将其加入到文本中。使用: r(read)命令后面跟!,可将命令的结果插入到编辑文件中。

      实例:下面的命令序列显示!的使用方式。

        □     输入: ! ls

        □     输入: ! who

        □     输入: !date

        □     输入: !pwd

        □     输入: r ! date

        □     输入:r ! cal 1 2005

        □     输入:r ! vi mylast

      2行连接

      使用J命令连接两行。J命令将当前行下面的一行连接到当前行上,放到光标位置之后。如果两行连接产生一个长行,vi将其按屏幕进行折行。

      实例:完成下列操作即可连接两行。

        □     使用光标移动键将光标放在第一行行尾。

        □     按J键,vi将当前行下面的一行连到当前行上。

      3搜索和替换

         vi的搜索命令(/和?)

         实例:下面的命令序列演示vi的搜索和替换功能

        □     输入:/UNIX并按[Return]键,向下搜索找到第一个UNIX。

        □     输入cwunix并按[Return]键,将UNIX替换为unix/

        □     输入n,找到下一个UNIX。

      4文件恢复选项

        用-r选项启动vi编辑器崩溃时正在编辑的文件。例如,下面的命令可以恢复myfirst

        $ vi –r myfirst [Return]…………………………………启动vi的恢复选项

        如果不提供文件名进行编辑,或不记得当时编辑的文件名,可输入vi –r命令

         $ vi –r  [Return]

    vi 有三种模式:命令模式;插入模式;末行模式。
      打开编辑器默认就是命令模式,可以通过输入命令进入插入模式,从插入模式返回命令模式要按Esc键,在命令模式下输入 :(冒号)切换到末行模式。
     
    插入相关命令:
      Ø      a  //在光标后插入文本
      Ø      i   //在光标前插入文本
      Ø      o  //在当前行下面插入一行
      Ø      O //在当前行上面插入一行
      Ø      I  //在当前行开头插入文本
      Ø      A //在当前行末尾插入文本


    光标移动相关命令:
      Ø      Home //移动到光标所在行的最前面
      Ø      End //移动到光标所在列的最后面
      Ø      b  //移动到下个字的第一个字母
      Ø      w  //移动到上个字的第一个字母
      Ø      H  //移动到屏幕的第一列
      Ø      M  //移动到屏幕的中间列
      Ø      L  //移动到屏幕的最后列
      Ø      fx //向右移动到x字符上
      Ø      Fx //向左移动到x字符
      Ø      Pageup //向上翻页
      Ø      Pagedown //向下翻页
      Ø      shift+g  // 跳到文件尾
      Ø      ddp //和下一行交换


    删除相关命令:
      Ø      x  //删除光标所在处的一个字符
      Ø      dw //删除光标所在处向后的一个单词
      Ø      D  //删除光标处至行尾的所有字符
      Ø      dd //删除光标所在行,可以加数字表示要删除的行数


    替换命令:
      Ø      r  //替换光标所在处的一个字符
      Ø      R  //向右连续替换
      Ø      cw //替换光标向右的一个单词


    查找命令:
      Ø      /ac  //向光标下文查找ac,按n向下查找下一个按N回到上一个
      Ø      ?ac //向光标上文查找ac,按n向上查找下一个按N回到上一个


    复制与粘贴相关命令:
      Ø      yw  //将光标向右一个单词拷入剪贴板
      Ø      y$  //将光标至行尾的字符拷入剪贴板
      Ø      yy         //将当前行拷入剪贴板
      Ø      p       // 将剪贴板中的内容粘贴在光标后


    文件保存及退出相关命令:
      Ø      :q        // 不保存退出  
      Ø      :q!        // 不保存强制性退出  
      Ø      :w         //保存编辑不退出
      Ø      :wq       //保存并退出
      Ø      :wq!      //强制保存退出

    本文来自:

    Stone.Wang的博客

    http://blog.sina.com.cn/stonestore 

  • 相关阅读:
    【Elasticsearch 技术分享】—— ES 常用名词及结构
    【Elasticsearch 技术分享】—— Elasticsearch ?倒排索引?这都是什么?
    除了读写锁,JUC 下面还有个 StampedLock!还不过来了解一下么?
    小伙伴想写个 IDEA 插件么?这些 API 了解一下!
    部署Microsoft.ReportViewe
    关于TFS强制undo他人check out
    几段查看数据库表占用硬盘空间的tsql
    How to perform validation on sumbit only
    TFS 2012 Disable Multiple Check-out
    在Chrome Console中加载jQuery
  • 原文地址:https://www.cnblogs.com/luowBlog/p/7551077.html
Copyright © 2011-2022 走看看