AIX UNIX下的vi命令

原创
2010/02/04 12:24
阅读数 3.7K

⒈ 进入vi:
    要使用vi,应先注册进入一用户,然后如下所示进行操作:
    $ vi <filename> <Enter> ($ 为提示符)
⒉ 退出vi:
     (1) "Esc"               退出插入方式进入命令方式
        :w <Enter>          将文件存盘
        :q <Enter>          退出vi
     (2) "Esc"               退出插入方式进入命令方式
        :q! <Enter>         无条件退出vi,修改内容不存盘
     (3) "Esc"               退出插入方式进入命令方式
        :x <Enter>          将文件存盘并退出vi
⒊ 临时退出vi:
     (1) "Esc"               退出插入方式进入命令方式
        :!command <Enter>   执行命令command
        命令执行完成后,按<Enter>返回编辑画面。
     (2) "Esc"               退出插入方式进入命令方式
        :!sh <Enter>        进入子shell
      进入子shell后出现$提示符,按Ctrl_d退出子shell,再按<Enter>返回编辑画面。
     (3) "Esc"               退出插入方式进入命令方式
        !!command <Enter>   执行命令command的结果代替当前行
        【注】 前面没有“∶”,当前行原来的内容消失,代之以命令执行的结果。
⒋ 移动光标及屏幕命令:
(1) 移动一个字符的位置
    --------------------------------------------------------
     h          左     也可一次移动n个字符,如5h,就向左
     l          右     移动5个字符的位置。
    --------------------------------------------------------
(2) 移动一行的位置
    --------------------------------------------------------
     j          下         也可一次移动n个字符,如5j,就向下
     k          上         移动5行。
     nG         移到第n行
     :n <Enter> 移到第n行
    --------------------------------------------------------
(3) 移动一个字的位置
    --------------------------------------------------------
    W或w       右移一字 (光标 ①小写字母键把标点及非字母符号
               定位在字首)     (例如,!@#$%^&* ()_-=+等)也看作
    E或e       右移一字 (光标 一个词;
               定位在字尾)    ②大写字母以空格为字的分界符;
    B或b       左移一字 (光标 ③前面加数字n将移动n个字的位置;
               定位在字首)    ④从行尾右移则移向下一行的行首,
                            从行首左移则移向上一行的行尾。
    --------------------------------------------------------
(4) 移动一句的位置
    --------------------------------------------------------
     (          移至句首       以.?!后加两个空格或换行符的字
    )          移至句尾       符序列定义为句子。
    n (         执行n次 (
    n)         执行n次)
    --------------------------------------------------------
(5) 屏幕滚动
    --------------------------------------------------------
    Ctrl_u     上滚半屏       大写字母与小写字母等价
    Ctrl_d     下滚半屏
    Ctrl_f     下滚一屏
    Ctrl_b     上滚一屏
    --------------------------------------------------------
(6) 其他常用命令
    --------------------------------------------------------
     0          行首              ①这些命令都在命令方式下
     ^          移到行首第一个可    使用;
                见字符处          ②H、L、G、M都必须是大写
     $          行尾                字母;
     Ctrl_G     显示当前行行号    ③z是小写字母,且按回车才
     Ctrl_L     屏幕重显            有效。
     H          屏幕左上角
     L          屏幕正文最低行
     G          文件最末行
     M          屏幕中间行
     z<Enter>   当前行翻到屏幕顶
     nz<Enter> 第n行翻到屏幕顶
    --------------------------------------------------------
⒌ 插入命令
    --------------------------------------------------------
    I           当前行的行首前插入 ①按"Esc"就退出插入方式
    A           当前行的行尾附加    ②大小写字母作用不同
    i           光标前插入
    a           光标后插入
    O           当前行前开新行
    o           当前行后开新行
    >>          当前行整个右移一个制表符的位置
    <<          当前行整个左移一个制表符的位置
    --------------------------------------------------------
⒍ 删除命令
    --------------------------------------------------------
    dd          删除当前行,并将删   ①在命令dd,dw,x,X前加数
                除的内容存入缓冲区
    dw          删除一个词 (光标到词    字n等于命令执行n次
                尾部分)              ②Ctrl_u 要在插入方式下
    x           删除光标所在字符,     使用,按下ESC键后生效
                并将删除的内容存入缓
                冲区
    X           删除光标之前字符,
                并将删除的内容存入缓
                冲区
    D,d$       删除光标至行尾的内容
    d0          删除光标至行首的内容
    d^          删除光标至行首第一个
                可见字符的内容
    Ctrl_u      删除刚插入的所有内容
    --------------------------------------------------------
    要删除刚插入的内容,应在没按ESC键(插入状态下)时按下
    Ctrl_u键。光标回到插入的开始处,原有插入的正文仍显示在屏
    幕上,它将被键入的新内容所代替。当按下ESC键后,原插入
    的正文将被删除。下面是几个删除的例子:
        3x         删除光标后三个字符
        3X         删除光标前三个字符
        2dd        删除当前行和下面的一行共两行
        :15,20d    删除第15到20行
        :.,$d     删除当前行到最后一行。"."代表当前行,$代
                   表最后一行。
        :.,+3d     删除当前行和下面的三行
        :.,-3d     删除当前行和上面的三行

⒎ 恢复
    按下ESC键      进入命令方式
    按下u          恢复到上一命令以前的状态
    再按下u        恢复到上一个u以前的状态

⒏ 重复一条命令
    任何一条编辑命令执行一次后,如果还需要再执行同样的命令,应该用重复命令“.”
来节省时间,例如在一行中连续插入三个字符串abcdef,那么可以用如下的方法:
    键入i          进入插入方式
    键入abcdef     插入第一个字符串
    按下ESC键      进入命令方式
    光标移到正确
    的位置,连续
    按两个园点.    重复插入两个字符串abcdef

⒐ 搜索命令
(1)模式匹配特殊字
    --------------------------------------------------------
    ^           一行的开始
    $          一行的末尾,或文件的最后一行
    .           任一字符 (除换行符外)
    [ ]         字符集内的任一字符,如[abc]代表a,b,c中的任一
                字符,[1-5]代表1,2,3,4,5中的任一个。
    [^ ]        字符集外的任一字符,如[^abc]代表除a,b,c外的任
                一字符
    \           转义,去掉特殊字符的特殊意义,如\$仅代表$字
                符本身
    --------------------------------------------------------
(2)常用搜索命令
    --------------------------------------------------------
    /串 <Enter> 向下搜索
    ?串 <Enter> 向上搜索
    n           继续搜索
    N           继续向相反方向搜索
    --------------------------------------------------------
    搜索命令必须在命令方式下使用。按下"/"或"?"时它会自动出现在状态行上,键入要搜
索的字符串并按回车,光标会移动到该字符串所在行,并定位在该字符串的第一个字符上。
下面的格式把光标移到字符上一行的行首:
    /字符串/- <Enter>
    下面是一些例子:
/abc/-2 <Enter>   光标移到含abc的行的上两行的行首
/abc/+2 <Enter>   光标移到含abc的行的下两行的行首
?123mn <Enter>   向上搜索串123mn
n                 继续执行前面的搜索命令
/^this<Enter>   搜索开头为this的行
/p\.r\.c<Enter>   向下搜索字符串p.r.c,因为"."是特殊字符,所
                  以前面要加反斜线"\"转义。

⒑ 作标记
    在光标所在处作一标记,以备需要时及时查找到该处,这也是一种重要的检索方式,完
成该功能的命令是m。
    标记命令
    --------------------------------------------------------
    m标记       光标所在处作标记      ①标记是任选的小写字母
    `标记       移到标记位置          ②注意左撇 ' 与右撇 `
    '标记       移到有标记的行的开头    的不同
    --------------------------------------------------------
    例如有一正文前三行内容如下:
    1 This is Line one
    2
    3 This is Line two
    把光标移到第一行的L处,键入 mb,作标记b (不要回车),以后某一时候要删除从当前
光标处到标记处,只要键入: d`b 即可。
    如果再把光标移到第三行的"n"处,再作一标记s,只要键入: ms即可。如果光标在别的
地方,什么时候想把光标移到第三行的"n"处,只要键入: `s 即可。如果仅是想把光标移到
第三行,只要键入: 's 即可。

⒒ 搜索并代替
    对文件进行更复杂的修改,最好用搜索替代合在一起的命令。这类命令往往是一些简单
命令的组合。
    搜索替代命令
    --------------------------------------------------------
    g           全局搜索   用于开头,代表搜索所有行,用于末
                           尾,代表搜索整行。
    s           替代命令   如果出现在命令行中,应与其他命令
                           用"/"隔开。
    p           显示命令  
    c           提问命令   对要替代的内容用符号"^"提示,若按
                           下"y"才发生替换,否则不替换。
    v           不匹配命令
    --------------------------------------------------------
    搜索替代命令是在ex转换方式下使用的,即按下"ESC"键和":"之后才能使用。键入的命
令出现在状态行上,按回车执行。被搜索替代的字符串两边要加斜线"/", 如果不使用全局
命令"g",则只对第一个找到的字符串起作用。命令前面也可以加地址范围的选择。
    下面是使用命令的例子:
    :s/abc/xyz/<Enter>        用xyz替换当前行找到的第一个abc
    :s/ab/x/g<Enter>          用x替换当前行所有的ab
    :g/22/s//456/<Enter>      每行找到的第一个字符串"22"都用
                              字符串"456"替换
    :g/22/s//456/g<Enter>     全文找到的所有字符串"22"都用串
                              "456"替换,第一个"g"代表"每行",
                              第二个"g"代表一行中的全部。
    :g/this/p<Enter>          显示所有含"this"的行
    :v/this/p<Enter>          显示所有不含"this"的行
    :g!/this/p<Enter>         显示所有不含"this"的行
    :g/^/s//abc/g             在文件每一行开头插入abc,"^"代
                              表行首。
    :g/this/s//THIS/gp<Enter> 全文所有"this"都用"THIS"替代,
                              并且显示发生替代的行。
    :3,7s/this/THIS/<Enter>   第3行到第7行中第一个"this"都用
                              "THIS"替代。
    :3,7s/this/THIS/g<Enter> 第3行到第7行中所有的"this"都用
                              "THIS"替代。
    :1,$s/this/THIS/g<Enter> 第一行到最后一行 (全文)中所有的
                              "this"都用"THIS"替代。

⒓ 替代
    在命令方式下执行替代命令,按"ESC"结束。
    --------------------------------------------------------
    r           替代一个字符
    R           替代可以到行尾,超过行尾的部分被附加
    ns          替代n个字符,超过数目的输入被插入
    nS          删除n行,并处于插入状态
    cw          替代一个字
    cc          删除当前行,并进入插入状态
    --------------------------------------------------------
⒔ 其他常用命令
    --------------------------------------------------------
    :r 文件名   将文件名所指文件读入,并放在当前行下面
    nyw         将光标后的n个字放入缓冲区
    "anyw       将光标后的n个字放入a缓冲区
    "Anyw       将光标后的n个字附加到a缓冲区
    nyy         将当前行及下面的行共n行放入缓冲区
    "anyy       将当前行及下面的行共n行放入a缓冲区,a可用其
                他小写字母代替
    "Anyy       将当前行及下面的行共n行附加到a缓冲区,A可用
                其他大写字母代替
    p          将缓冲区的内容放入当前行下面或光标后,这取决
                于缓冲区中是否有完整的行。
    P          将缓冲区的内容放入当前行上面或光标前,这取决
                于缓冲区中是否有完整的行。
    "ap         将命令"ayy保存的内容放入当前行下面,a可用其
                他小写字母代替
    m           移动正文
    t           拷贝正文
    w           写文件
    --------------------------------------------------------
    下面是一些例子:
    :r fn       将文件fn读入,并放在当前行下面
    2yy         将当前行及下一行放入缓冲区
    p           将执行2yy保存的两行放到当前行下面
    2,4m6       将第2到4行移到第6行下面
    2,4t6       将第2到4行拷贝到第6行下面
    2,4wfn      将第2到4行写到文件fn中

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部