vi与vim的使用

一、引言

    在Linux中,vi(Visual Interface)是标准的编辑器,功能强大到不逊于任何最新的编辑器。无论在Linux中还是在Unix中,vi的使用方法都是完全相同的。vim(Vi Improved)在vi的基础上增加了很多新特性。

二、模式

    vim的工作模式有三种,用户在不同模式下可以进行不同的操作

        命令模式:控制屏幕光标的移动,字符、字或行的删除、移动和复制

        插入模式:插入模式可以对文本内容进行文字输入

        命令扩展模式:保存,退出等命令的输入

    模式切换

        ESC键进入命令模式

        命令模式下,“:”冒号进入命令扩展模式

        命令模式 –> 插入模式 

        i    insert, 在光标所在处输入 

        I    在当前光标所在行的行首输入 

        a    append, 在光标所在处后面输入 

        A    在当前光标所在行的行尾输入 

        o    在当前光标所在行的下方打开一个新行

        O    在当前光标所在行的上方打开一个新行

        锁定:Ctrl+s

        解锁:Ctrl+q

        (锁定过程中,可以接受来自键盘的输入,但是不显示在屏幕上)

三、打开与关闭文件

    打开文件:vim [OPTION]…FILE…

        +#    打开文件后,光标位于第#行的行首

        +/PATTERN    打开文件后,光标位于第一个匹配到的行

        +    光标位于最后一行

        -b    以二进制的方式打开文件

        -m    只读打开文件

        -e    直接进入命令扩展模式

    

    关闭文件:

        扩展模式

            :q 退出 :

            q! 强制退出,丢弃做出的修改 

            :wq 保存退出 

            😡 保存退出 

        命令模式

            ZZ:保存退出

            ZQ:不保存退出

四、扩展模式

创建一个命令提示符,位于屏幕左下角、

    常用命令:

        w    写(存)磁盘文件 

        wq    写入并退出 

        x    写入并退出 

        q    退出 

        q!    不存盘退出,即使更改都将丢失 

        r FILE    读文件内容到当前文件中 

        w FILE    将当前文件内容写入另一个文件

        !command    强制执行命令 

        r!command    在vi中临时执行命令

    地址定界

        :/PATTERN1/,/PATTERN2/ 

        #    指定行

        #,#    起始行到结束行

        #,+#    指定行开始到向下的一些行

        .    当前行

        $    最后一行

            $-1    倒数第二行

        %    全文,所有行,等于1,$

    编辑命令:

        d    删除匹配的内容

        y    复制匹配的内容

        w FILE    将范围内的行另存至指定文件中

        r FILE    在制定位置插入指定文件中的所有内容

    查找并替换:

    s/PATTERN/STRING/修饰符(分隔符可以改变)

    修饰符:

        i    忽略大小写

        g    全局替换,否则默认情况下,每行只替换第一次出现的字符

        gc    全局替换,替换前询问是否替换

五、命令模式

字符间的跳转:

    h:左    l:右    j:下    k:上 

单词间的跳转

    w:下一个单词词首

    e:当前或下一个单词的词尾

    b:当前或前一个单词的词首

页的跳转

    H:页首

    M:当前页中间行

    L:页底

行首行尾跳转:

    ^    跳转至行首的第一个非空白字符

    O    跳转至行首

    $    跳转至行尾

行间移动:

    #G(或扩展模式:#)    跳转到第#行

    G    最后一行

    1G或gg    第一行

句间移动    

    ):  下一句        (:  上一句

段落间的移动

    }:  下一段        {:上一段

翻屏操作

    Ctrl+f: 向文件尾部翻一屏

    Ctrl+b: 向文件首部翻一屏

    Ctrl+d: 向文件尾部翻半屏

    Ctrl+u:向文件首部翻半屏

字符编辑

    x: 删除光标处的字符; 

    #x: 删除光标处起始的#个字符 

    xp: 交换光标所在处的字符及其后面字符的位置 

    ~:转换大小写

替换命令(r, replace) 

    r: 替换光标所在处的字符 

    R:切换成REPLACE模式

删除命令: 

    d: 删除命令,可结合光标跳转字符,实现范围删除; 

    d$: 删除到行尾 

    d^:删除到非空行首 

    d0:删除到行首 

    dw:删除下一个单词 

    de:删除当前单词

    db:删除前一个单词

    dd: 删除光标所在的行 

    #dd:多行删除 

    D:从当前光标位置一直删除到行尾,留空行,等同于d$

复制命令

    y:复制,用法同d命令

粘帖命令

    p:缓冲区存的如果为整行,则粘贴当前光标所在行的下 方;否则,则粘贴至当前光标所在处的后面 

    P:缓冲区存的如果为整行,则粘贴当前光标所在行的上 方;否则,则粘贴至当前光标所在处的前面

六、vim的寄存器

    vim中有26个命名寄存器和一个无名寄存器,常存放不同的剪贴板内容,可以在不同的会话中共享。分别用a-z表示,例如:3"tyy表示复制三行到寄存器t中,"tp则表示将寄存器t中的内容粘贴。若未指定寄存器,将使用无名寄存器。

    vim中还有10个数字寄存器,用0-9表示,0表示最近复制的内容,1表示最近删除的内容。当新的文本变更或删除时,1会转存到2中并以此类推。数字寄存器不能在不同会话中共享。

七、多文件模式

vim FILE1 FILE2 FILE3 … 

    :next    下一个 

    :prev    前一个 

    :first    第一个 

    :last    最后一个 

    :wall    保存所有 

    :qall    退出所有 

    :wqall    保存所有并退出

八、多窗口模式

    多文件分割 

        vim -o|-O FILE1 FILE2 … 

        -o: 水平分割 

        -O: 垂直分割 

        在窗口间切换:Ctrl+w, Arrow 

    单文件窗口分割: 

        Ctrl+w,s: split, 水平分割 

        Ctrl+w,v: vertical, 垂直分割 

        Ctrl+w,q:取消相邻窗口 

        Ctrl+w,o:取消全部窗口 

        :wqall 退出

原创文章,作者:zhanghuanyu,如若转载,请注明出处:http://www.178linux.com/32529

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code