VI使用手册

    技术2024-11-06  28

     

    vi编辑器的使用

    1vi的启动与退出

    1.1 vi 的启动

       输入vi命令后,便进入全屏幕编辑环境,此时的状态为命令方式。

     vi   光标定在该缓冲区第一行第一列位置

     vi example  光标定在缓冲区第一行第一列位置

     vi + example 光标定在文件最后一行第一列位置

     vi +N example  光标定位在文件第N行第一列的位置(N:为数字)

     vi +/string example   光标定位在文件中第一次出现字符串string的行首位置

    1.2  vi 的应用方式

    *   有两种操作方式:命令方式、插入方式和ex转义方式

    *   命令方式下输入的大、小写是敏感的。

    1.3 vi 的退出

      建议 首先键入“ESC”键,以确保当前vi的状态为命令方式,输入下列命令,退出vi。

      :w   将编辑缓冲区的内容写入文件

       :q    退出vi

      :wq  将上面两步操作可以合成一步来完成。

      :x   功能同上。

      :q   退出vi,此时的正文没有被更改过。

      :q! 强行退出vi,使更新内容不写回文件。

    2光标在窗口中移动

    注释

       字   : 是由空格或标点符号分开的字母序列。

       句子 :是以句号(.)、问号(?)或感叹号(!)结束的字符序列,句子之间由两个空格或一个回车分开。

      段落  :一个段落前后各有一个或多个空白行。

    2. 字符及行间移动

               命 令                                结果

        ——————————             ——————————

              ↑  或   k                           向上移一行

              ↓  或   j                           向下移一行

              ←  或   h  或 退格键                左移一个字符

              →  或   l  或  空格                 右移一个字符

               o                                   移到当前行的开始 

               $                                   移到当前行的结尾

               +  或  回车符                       移到下一行的开始 

               -                                   移到上一行的开始

    2. 其它单位的移动

              命 令                                  结果

        ———————             —---------—————————

        w                           移到下一个字或标点符号

        W                           移到下一个字 

        e                           移到这个字或标点符号的结束 

        E                           移到字的下一结尾 

        b                           回到字或标点符号的开始 

        B                           移回到字的开始 

        )                          移到下一个句子的开始 

      (                            移到这个句子的开始 

        }                          移到下一段落的开始 

      {                            移到这一段落的上一开始 

    3.在缓冲区中移动窗口

             命令                                  结果

       ——-———                   --—------—————————

         CTRL-F                       向前(上)移动一满屏幕

         CTRL-D                       向前(上)移动半屏幕

         CTRL-B                       向后(下)移动一满屏幕

         CTRL-U                       向后(下)移动半屏幕

       H                        光标移动到屏幕顶部

       M                       光标移动到屏幕中间

       L                       光标移动到屏幕底部

     注意   可在这些命令前加入数字n作为前缀,使相应命令执行n次。但nG使光标定位在第n行。

    4.光标在正文中的移动

             命令                           结果

       ——-———                   --—------—————————

            G                            光标移动到文件的尾部

           nG                            光标移动到文件的第n行

            : 0                           光标移动到文件的第1行

            : 1                           光标移动到文件的第1行

            : n                           光标移动到文件的第n行

            : $                           光标移动到文件的尾部

            /string                       光标向前移动到string首

            ?string                       光标向后移动到string首     

    5.增加正文

             命令                            结果

       ——-———            ----------—------—————————

             a                         将输入文本插入在光标之后

             A                         将输入文本插入在当前行的行尾

             i                         将输入文本插入在光标之前

             I                         将输入文本插入在当前行的开始

             o                         将在当前行的下一行处打开一新行

             O                         将在当前行的上一行处打开一新行

    注意    ESC:使编辑状态从输入方式切换到命令方式

    6.修改正文

        命令                          结果

      ——-—      ---------------------—------—————————

        r               替换当前字符,不需按ESC。

        R               从当前字符开始进行替换,至ESC键为止。

        nC              对从当前字符开始的n行字符进行替换,

                        直至键入ESC键为止。

        nc$             同 nC。

        ncw             对当前字符开始的n个字进行替换操作,

                        直至键入ESC键为止。

        ncc             对从当前字符开始的n行字符进行替换,

                        直至键入ESC键为止。

        ns              替换从当前字符开始的n个字符,直至键入

                        ESC键为止。

        nS              对从当前行开始的n行字符,进行替换,

                        直至键入ESC键为止。

        J               将当前行和下一行连接起来。

       注意   n 为数字,为 1 时可省略。

    7.删除正文

    7.1  x 与 命令的使用

           命令                           结果

        ——-—           --------------—------—————————

           x                      删除当前字符。

           nx                     删除从当前字符开始的n个字符。

           X                      删除当前字符的前一个字符。

           nX                     删除当前字符的前n个字符。

          注意   n 为数字,为 1 时可省略。

    7.2  dD命令的使用

        用来将指定范围内文本删除,并存入缓冲区。

           命令                             结果

        ——-—           --------------—------—————————

          ndw                 删除以当前字开始的n个字。

          nd$                 删除以当前字符开始的n行字符。  

          ndd                 删除从当前行开始的n行。

          D                   与d$同义。

          d)                  删除到下一句的开始。

          d}                  删除到下一段的开始。

          d 回车              删除两行。

          :start,endd         删除文件第start到end行

    8.移动与复制正本

    8.1  m命令的使用

          将指定范围的文本移动到指定位置。格式如下:

         <起始行号>,<结束行号> m <目标行号>

      例:: 3 , 14 m 56

              : 7 , 52 m 0

    8.2  t命令的使用

          将指定范围的文本复制到指定位置。格式如下:

         <起始行号>,<结束行号> t <目标行号>

      例: 1 , 14 t 60

               7 , 52 t $

    8.3  yY命令的使用

        将指定范围的文本复制到缓冲区,但不删除其内容。

           命令                           结果

        ——-—           --------------—------—————————

        nyw               复制从当前字符开始的n个字;

        ny$               复制从当前字符开始的n行字符;  

         Y                与y$同义;

         y)               复制到下一句的开始;

         y}               复制到下一段的开始;

        nyy               复制从当前行开始的n行;

        y 回车            复制两行;   

    9.重复和取消操作

         命令                      结果

       ——-—    ----------------------—------—————————

            .          重复上一次所执行的命令。

           u           取消最后一次所做的修改或删除。

           U           取消此次到当前行来做的所有修改。

           p           恢复当前缓冲区中内容。如缓冲区中内容是整

                     行信息,则放到当前行下面的一个新行;否则

                     将缓冲区的内容放到光标位置右边。

            P        同p操作。恢复整行信息时,放到当前行上面的

                     一个新行;否则,放到光标位置左边。

           :e!       重新编辑。废弃对这次文件所做的全部修改,

                     重新从盘中读入该文件,并开始编辑。 

    10.检索和替换

    10.字符串检索命令

       命令                           结果

       ——-—    ----------------------—------————————— 

        /string      从当前位置向后检索字符串string,并将光标

                     定位在该串起始位置(向后循环检 索 )。

        ?string      从当前位置向前检索字符串string,并将光标

                     定位在该串起始位置( 向前循环检索)。

           //        重复上一条检索命令,但方向是向后检索。

          ??         重复上一条检索命令,但方向是向前检索。

           n         重复上一条检索命令,而不管其检索方向。

                       (即检索方向不变)。

           N         重复上一条检索命令, 但检索方向改向。

      :g/string      检索字符串string,光标定位在第一次检索到

                     的string所在行的行首。

    10.2 字符串替换命令

    格式1      :[addr]s/s1/s2/ [option]    

        [addr] 表示检索范围,省略时表示当前行。

                如: “1,20” :表示从第1行到20行;

                         “%” :表示整个文件,同“1,$”;

                         “. ,$” :从当前行到文件尾;

         s 为替换命令;s1 要被替换的串;s2 为替换的串;

         option :  ? g 表示全局替换;  ‚ c 进行确认 ;

                       ? p 替代结果逐行显示(Ctrl + L恢复屏幕);

                       „ 省略时仅对每行第一个匹配串进行替换;

    格式2     :g/s1/s//s2/ [option] 

    11.其他命令

            命令                            结果

      ------—--—-—        --------------—------————————

     :set number             显示行号。

     :set nonumber           不显示行号。

     :set all                显示vi各选项的设置情况。

     :f                    显示当前文件及工作缓冲区状况。

     :r filename           将名为filename的文件内容插入到

                           缓冲区当前行的下面。         

     :r ! cmd              执行命令cmd,并将结果插入到缓冲

                           区当前行的下面。

    最新回复(0)