vim编辑器

一、vim编辑器简介

    文本:ASCII,Unicode

    文本编辑种类:

    行编辑器:sed

    全屏编辑器:nano,vi

    vim-Vi Improved

其他编辑器:

    gedit:一个简单的图形编辑器

    gvim:一个VIm编辑器的图形版本

二、vim打开文件

    vim option file…

        +n:打开文件后,直接让光标处于第n行的行首

        +/pattern:打开文件后,直接让光标处于第一个被pattern匹配到的行的行首

        +:打开文件后,光标在最后一行

        -b:二进制方式打开文件

        -d file1 file…:比较多个文件

        -m:只读打开文件

        -e或ex:直接进入ex模式

    如果该文件存在,文件被打开并显示内容

    如果不存在,当编辑后第一次存盘时创建它

vim是一个模式编辑器

    击键行为是依赖vim的“模式”

    三种主要模式

        命令模式(默认):移动光标,查看文件,

        插入(编辑)模式:修改文本

        扩展命令模式(末行):保存,退出,执行命令

    Esc退出当前模式

三、模式转换

    命令模式 → 插入模式

    i:在光标所在处输入

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

    a:在光标所在处后面输入

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

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

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

    插入模式 → 命令模式

    Esc

    命令模式 → 扩展模式

    

    扩展模式 → 命令模式

    Esc

    锁定:Ctrl+s

    解锁:Ctrl+q

五、关闭文件

    扩展模式

    q:退出

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

        wq:保存退出

        x保存退出

    命令模式

        ZZ:保存退出

        ZQ:不保存退出

六、扩展模式操作

    按“:”进入ex模式

    创建一个命令提示符:,处于底部的屏幕左侧

    w:写(存)磁盘文件

    wq:写入并退出

    x:写入并退出

    q:退出

    q!:不存盘退出,更改无效

    r file1 :读file1文件内容到当前文件中

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

    !command:执行命令

    r!command:

    地址界定

        start_pos,end_pos

        n:第n行

        n,m:从n行到m行

        n,+m:从n行到n+m行

        .:当前行

        $:最后一行

        .,$:当前行到倒数第二行

        %:全文,相当于1,$

        /pattern/

            /pat1/,/pat2/:从第一次被pat1模式匹配到的行到第一次被pat2匹配到的行

            n,/pat/:从n行到被pat模式匹配到的行

            /pat/,$:从被pat模式匹配到的行到最后一行

            使用方式:后面跟一个编辑命令

                d:删除

                y:复制

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

                r file:在指定位置插入总置顶文件中的所有内容

        查找

            /pattern:从当前光标所在处向文件尾部查找

            ?pattern:从当前光标所在处向文件首部查找

                n:与命令同方向

                N:与命令反方向

        查找并替换

            s:在扩展模式下完成查找替换操作

            格式:s/要查找的内容/替换为的内容/修饰符

            要查找的内容:可使用模式

            替换为的内容:不能使用模式,但可以使用\1,\2…等后向引用符号,还可以使用&引用前面查找是查找到的整个内容

            修饰符

                i:忽略大小写

                g:全局替换,默认情况下,每一行只替换第一次出现

                gc:全局替换,每次替换前询问

            查找替换中的分个符/可替换为其他字符s@@@,s###

        

        编辑二进制文件

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

            扩展命令模式下,利用xxd命令转换为可读的十六进制

                %!xxd

            编辑二进制文件

            扩展命令模式下,利用xxd命令转换回二进制

                %!xxd -r

            保存退出

七、命令模式操作

    光标跳转

        字符间跳转

            h:向左

            j:向下

            k:向上

            l:向右

            n command:跳转由n指定一次跳转的单词数

        单词间跳转

            w:下一个单词的词首

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

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

            n command:跳转由n指定一次跳转的单词数

        当前页跳转

            H:页首

            M:页中间行

            L:页底

        行首行尾跳转

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

            0:跳转至行首

            &:跳转至行尾

        行间移动:

            nG:跳转至由n制定航

            G:最后一行

            1G或gg:第一行

        句间移动:

            (:下上一句

            ):下一句

        段落间移动

            {:上一段

            }:下一段

    翻屏

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

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

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

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

    字符编辑

        x:删除光标处的字符

        nx:删除光标处起始的n个字符

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

        ~:转换大小写

    替换命令(r,replace)

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

        R:切换成replace模式

    删除命令;

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

        d$:删除到行尾

        d^:删除到非空行首

        d0:删除到行首

        dw:删除下一个单词

        de:删除当前或下一个单词

        db:删除当前或上一个单词

        dd:删除光标所在的行

        ndd:多行删除

        D:删除光标到行尾,留空行。等同于d$

    复制命令(y,yank)

        y:复制,结合光标跳转字符,实现范围复制

        y$:复制到行尾

        y^:复制到非空行首

        y0:复制到行首

        yw:复制下一个单词

        ye:复制当前或下一个单词

        yb:复制当前或上一个单词

        yy:复制光标所在的行

        nyy:多行复制

        y:复制整行

    粘贴命令(p,paste)

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

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

    改变命令(c,change)

        c:修改后切换至插入模式

        命令模式 → 插入模式

            c$:删除到行尾输入新内容

            c^:删除到非空行首输入新内容

            c0:删除到行首输入新内容

            cw:删除下一个单词输入新内容

            ce:删除当前或下一个单词输入新内容

            cb:删除当前或上一个单词输入新内容

            cc:删除光标所在的行输入新内容

            ncc:多行删除输入新内容

            C:删除当前到行尾,并且换成插入模式

    100wang Esc:粘贴“wang”100次

    start position command end position

    command

        y:复制

        d:删除

gU:变大写

gu:变小写

    例:0y$

        0→先到行头

        y→从这里开始拷贝

        $→拷贝到本行最后一个字符

            ye从当前位置拷贝到本单词的最后一个字符

    撤销更改

        u:撤销最近的更改

        nu:撤销之前n次更改

        U:撤销光标落在这行后所有此行的更改

        Ctrl+r:重做最后的撤销更改

        .:重复前一个操作

        n.:重复前一个操作n次

八、vim的寄存器

    有26个命名寄存器和1个无名寄存器,常存放不同的剪贴板内容,可以不同会话间共享。

    用a,b,c…z表示,用"寄存器表示,放在数字和命令之间

        例:3"tyy表示复制3行到t寄存器中

        "tp表示将t寄存器内容粘贴

    未指定,将使用无名寄存器,有10个数字寄存器。

    用0,1,2…9表示,0存放最近复制内容,1存放最近删除内容。

    当新的文本变更和删除是,1转存到2,2转存到3,以此类推。

    数字寄存器不能在不同会话间共享

九、可视化模式

    v:面向字符

    V:面向行

    Ctrl+v:面向块

    可视化可用于与移动键结合使用

        w,),},箭头等

    突出显示的文字可以被删除,复制,变更,过滤,搜索,替换等。

十、多文件模式

    vim file1 file2 file3…

    扩展命令模式下

        next:下一个

        prev:前一个

        first:第一个

        last:最后一个

        wall:保存所有

        qall:退出所有

        wqall:所有文件保存退出

十一、多窗口模式

    多个文件窗口分割

    vim -o|-O file1 file2…

        -o:水平分割

        -O:垂直分割

    在窗口间切换

        Ctrl+w 上下

    单个文件窗口分割

        Ctrl+w,s:水平分割

        Ctrl+w,v:垂直分割

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

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

        :wqall退出

十二、定制vim的工作特性

    全局:/etc/vimrc

    个人:~/.vimrc

    扩展模式:当前vim进程有效

        行号

            显示:set number,简写set nu

            取消显示:set monumber

        括号成对匹配

            匹配:set showmatch,简写set sm

            取消匹配:set nosm

        自动缩进

            启用:set ai

            禁用:set noai

        高亮搜索

            启用:set hlsearch

            禁用:set nohlsearch

        语法高亮

            启用:syntax on

            禁用:syntax off

        忽略字符的大小写

            启用:set ic

            不忽略:set noic

        文件格式

            启用:fileformat=unix

            不忽略:fileformat=dos

        设置文本宽度

            set trxtwidth=65(vim only)    左面开始65个字符

            set wrapmargin=15  右面开始15个字符

            标准竖20字符,横80字符

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