循序渐进UNIX--VI编辑程序入门(3) vi全接触

类别:编程语言 点击:0 评论:0 推荐:

http://91mail.51.net提供??需要完整的pdf文档请到http://91mail.51.net下载

一、UNIX系统编辑器的概述
*   ed :UNIX系统中原始的行编辑器。
*  ex :行编辑器,是 ed 编辑器的扩充。
*  vi :全屏幕编辑器,为UNIX系统的主
     要编辑器,它也是 ed 的超集。
*  emacs:全屏幕编辑器,不是UNIX系统
        版本4的组成部分,是独立的编
        辑程序。
3.1、 vi的启动与退出
1、vi 的启动
   输入vi命令后,便进入全屏幕编辑环境,此时
的状态为命令方式。
① vi   光标定在该缓冲区第一行第一列位置
② vi example  光标定在缓冲区第一行第一列位置
③ vi + example 光标定在文件最后一行第一列位置
④ vi +N example  光标定位在文件第N行第一列的
                      位置(N:为数字)
⑤ vi +/string example   光标定位在文件中
              第一次出现字符串string的行首位置
1.1  vi 的应用方式
*    vi的名字取自于visual。
*   有两种操作方式:命令方式、插入方式和ex转义方式
*   命令方式下输入的大、小写是敏感的。

 

 

二、 vi的启动与退出 (续)
 2、vi 的退出
  建议 首先键入“ESC”键,以确保当前vi的
状态为命令方式,输入下列命令,退出vi。
 ① :w   将编辑缓冲区的内容写入文件
   :q    退出vi
 ② :wq  将上面两步操作可以合成一步来完成。
 ③ :x   功能同上。
 ④ :q   退出vi,此时的正文没有被更改过。
 ⑤ :q! 强行退出vi,使更新内容不写回文件。

三、光标在窗口中移动
注释
      字   : 是由空格或标点符号分开的字母序列。
   句子 :是以句号(.)、问号(?)或感叹号
             (!)结束的字符序列,句子之间由两个
      空格或一个回车分开。
  段落  :一个段落前后各有一个或多个空白行。
三、光标在窗口中移动(续)
1、 字符及行间移动
           命 令                                                  结果
    ——————————             ——————————
          ↑  或   k                                       向上移一行
          ↓  或   j                                        向下移一行
          ←  或   h  或 退格键                    左移一个字符
          →  或   l  或  空格                        右移一个字符
           o                                                   移到当前行的开始
           $                                                   移到当前行的结尾
           +  或  回车符                               移到下一行的开始
           -                                                   移到上一行的开始
三、光标在窗口中移动 (续)
2、 其它单位的移动
          命 令                                            结果
    ———————             —---------—————————
               w                           移到下一个字或标点符号
   W                           移到下一个字
    e                             移到这个字或标点符号的结束
    E                            移到字的下一结尾
    b                            回到字或标点符号的开始
    B                            移回到字的开始
    )                           移到下一个句子的开始
  (                            移到这个句子的开始
    }                          移到下一段落的开始
  {                            移到这一段落的上一开始
四、在缓冲区中移动窗口
         命令                                              结果
   ——-———                   --—------—————————
     CTRL-F                            向前(上)移动一满屏幕
     CTRL-D                            向前(上)移动半屏幕
     CTRL-B                            向后(下)移动一满屏幕
     CTRL-U                            向后(下)移动半屏幕
   H                          光标移动到屏幕顶部
   M                       光标移动到屏幕中间
   L                       光标移动到屏幕底部
 注意   可在这些命令前加入数字n作为前缀,使相应命
令执行n次。但nG使光标定位在第n行。
五、光标在正文中的移动
         命令                                              结果
   ——-———                   --—------—————————
        G                                  光标移动到文件的尾部
       nG                                 光标移动到文件的第n行
          : 0                                  光标移动到文件的第1行
          : 1                                  光标移动到文件的第1行
          : n                                  光标移动到文件的第n行
          : $                                  光标移动到文件的尾部
          /string                       光标向前移动到string首
         ?string                       光标向后移动到string首    
六、增加正本
         命令                                            结果
   ——-———            ----------—------—————————
         a                         将输入文本插入在光标之后
          A                        将输入文本插入在当前行的行尾
           i                         将输入文本插入在光标之前
           I                         将输入文本插入在当前行的开始
           o                         将在当前行的下一行处打开一新行
          O                         将在当前行的上一行处打开一新行
注意    ESC:使编辑状态从输入方式切换到命令方式
七、修改正本
    命令                                            结果
  ——-—      ---------------------—------—————————
      r                替换当前字符,不需按ESC。
      R               从当前字符开始进行替换,至ESC键为止。
    nC               对从当前字符开始的n行字符进行替换,
                        直至键入ESC键为止。
    nc$              同 nC。
    ncw             对当前字符开始的n个字进行替换操作,
                        直至键入ESC键为止。
   注意   n 为数字,为 1 时可省略。
七、修改正本 (续)
    命令                                            结果
   ——-—        ------------------—------—————————
    ncc                对从当前字符开始的n行字符进行替换,
                          直至键入ESC键为止。
     ns                 替换从当前字符开始的n个字符,直至键入
                          ESC键为止。
     nS                对从当前行开始的n行字符,进行替换,
                         直至键入ESC键为止。
     J                  将当前行和下一行连接起来。
   注意   n 为数字,为 1 时可省略。
八、删除正本
1.  x 与 X 命令的使用
       命令                                            结果
    ——-—           --------------—------—————————
        x                      删除当前字符。
        nx                     删除从当前字符开始的n个字符。
         X                     删除当前字符的前一个字符。
        nX                  删除当前字符的前n个字符。
      注意   n 为数字,为 1 时可省略。
八、删除正本 (续)
 2.  d与D命令的使用
    用来将指定范围内文本删除,并存入缓冲区。
       命令                                            结果
    ——-—           --------------—------—————————
      ndw                 删除以当前字开始的n个字。
      nd$                  删除以当前字符开始的n行字符。 
      ndd                  删除从当前行开始的n行。
        D                    与d$同义。
        d)                   删除到下一句的开始。
        d}                   删除到下一段的开始。
    d 回车               删除两行。
九、移动与复制正本
1.  m命令的使用
      将指定范围的文本移动到指定位置。格式如下:
     <起始行号>,<结束行号> m <目标行号>
  例:: 3 , 14 m 56
          : 7 , 52 m 0

2.  t命令的使用
      将指定范围的文本复制到指定位置。格式如下:
     <起始行号>,<结束行号> t <目标行号>
  例: 1 , 14 t 60
           7 , 52 t $
九、移动与复制正本 (续)
 3.  y与Y命令的使用
    将指定范围的文本复制到缓冲区,但不删除其内容。
       命令                                            结果
    ——-—           --------------—------—————————
    nyw        复制从当前字符开始的n个字;
    ny$        复制从当前字符开始的n行字符; 
     Y         与y$同义;
     y)        复制到下一句的开始;
     y}        复制到下一段的开始;
    nyy       复制从当前行开始的n行;
   y 回车     复制两行;  
十、重复和取消操作
     命令                                        结果
   ——-—    ----------------------—------—————————
        .            重复上一次所执行的命令。
    u           取消最后一次所做的修改或删除。
       U           取消此次到当前行来做的所有修改。
        p          恢复当前缓冲区中内容。如缓冲区中内容是整
                 行信息,则放到当前行下面的一个新行;否则         将缓冲区的内容放到光标位置右边。
        P        同p操作。恢复整行信息时,放到当前行上面的
                 一个新行;否则,放到光标位置左边。
     :e!        重新编辑。废弃对这次文件所做的全部修改,
                  重新从盘中读入该文件,并开始编辑。
十一、检索和替换
    命令                                        结果
   ——-—    ----------------------—------—————————
    /string      从当前位置向后检索字符串string,并将光标
                     定位在该串起始位置(向后循环检 索 )。
   ?string      从当前位置向前检索字符串string,并将光标
                     定位在该串起始位置( 向前循环检索)。
       //            重复上一条检索命令,但方向是向后检索。
      ??           重复上一条检索命令,但方向是向前检索。
       n            重复上一条检索命令,而不管其检索方向。
                   (即检索方向不变)。
       N           重复上一条检索命令, 但检索方向改向。
  :g/string    检索字符串string,光标定位在第一次检索到                的string所在行的行首。
十一、检索和替换 (续)
 1.  字符串替换命令格式1      :[addr]s/s1/s2/ [option]   
    [addr] 表示检索范围,省略时表示当前行。
            如: “1,20” :表示从第1行到20行;
                     “%” :表示整个文件,同“1,$”;
                     “. ,$” :从当前行到文件尾;
     s 为替换命令;s1 要被替换的串;s2 为替换的串;
     option :  ? g 表示全局替换;  ‚ c 进行确认 ;
                   ? p 替代结果逐行显示(Ctrl + L恢复屏幕);
                   „ 省略时仅对每行第一个匹配串进行替换;
   2.   字符串替换命令格式2     :g/s1/s//s2/ [option]
十二、其他命令
        命令                                        结果
  ------—--—-—        --------------—------————————
 :set number      显示行号。
 :set nonumber    不显示行号。
 :set all         显示vi各选项的设置情况。
 :f               显示当前文件及工作缓冲区状况。
 :r filename      将名为filename的文件内容插入到
                  缓冲区当前行的下面。        
 :r ! cmd         执行命令cmd,并将结果插入到缓冲
                  区当前行的下面。

本文地址:http://com.8s8s.com/it/it28682.htm