VI使用手册

 

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,并将结果插入到缓冲

                       区当前行的下面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值