天天看点

vim编辑器

一、简介

   1.vi:Visual Interface,是一种文本编辑器,所谓文本数据是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。

   2.Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。

    3.Vim的第一个版本由布莱姆·米勒在1991年发布。最初的简称是ViIMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开放源代码方式下发行的自由软件。

二、文本编辑器的种类

    1.行编辑器:所谓行编辑器是指一行一行来编辑处理的工具,如sed。

    2.全屏编辑器:编辑空间占据整个屏幕,如nano,vi。

三、vim的使用

    1.打开文件

    2.语法:vim [OPTION]... [FILE]...

    3.vim有以下几种打开方式:

                ①vim +#(后接数字):打开文件后,直接让光标处于第#行的行首;例如:vim +3 /etc/passed;

                ②vim +/PATTERN(正则表达式):打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首;例如:vim +/^U /etc/fstab;

                ③vim + file:直接打开file,光标在最后一行;例如:vim + /etc/fstab;

                ④vim -b file:二进制方式打开文件;例如:vim -b /bin/cat;

                ⑤vim -d file1 file2...:比较多个文件

                ⑥vim -m file:只读方式打开文件;例如:vim -m /etc/fstab;

    4.如果该文件存在,文件被打开并显示内容;如果该文件不存在,当编辑后第一次存盘时创建它;

四、vim是一个模式编辑器

    1.vim三种主要模式:

        命令模式(默认):移动光标,剪切/粘贴文本;

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

        扩展命令模式:保存,退出等;

    2.Esc键:可以从插入模式转换到命令模式

五、模式转换

    1.从命令模式----->插入模式,可使用以下命令:

        i:在当前光标所在处前面输入;

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

        a:在当前光标所在处后面输入;

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

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

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

    2.从插入模式----->命令模式:Esc键;

    3.命令模式----->扩展模式:直接输入冒号(:)即可在窗口左下方显示冒号;

    4.从扩展模式---->命令模式:Esc键;

    5.锁定和解锁:ctrl+s,ctrl+q;

六、退出文件

    1.扩展模式:

        :q 退出;

        :q! 不保存退出;

        :wq 保存退出;

        :x 保存退出;

        :wq! 强制保存退出;

    2.命令模式

        ZZ:保存退出;

        ZQ:不保存退出;

七、扩展模式

    1.按冒号(:)进入扩展模式:

        r filename:读文件内容到当前文件中;例如 :r /etc/issue;

        w filename:将当前文件内容写入另一个文件;例如:w /testdir/f1;

        !command:执行命令;例如:!ls;

        r!command:读入命令的输出;例如:r!ls /root;

八、命令模式光标跳转

    1.字符间跳转:

        h:左

        l:右

        K:上

        j:下

        #command:跳转由#指定的个数的字符;例如:#h,#k;

    2.单词间跳转:

        w:下一个单词的词首;

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

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

        #command:由#指定一次跳转的单词数;例如:3w,3e;

    3.当前页跳转:

        H:页首;

        M:页中间行;

        L:页底;

    4.行首行尾跳转:

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

        0:跳转至行首;

        $:跳转至行尾;

    5.行间移动:

        #G:直接跳转至第#行;

        G:最后一行;

        1G,gg:第一行;

    6.句子间移动:

        ):下一句;

        (:上一句;

    7.段落间移动:

        }:下一段;

        {:上一段;

九、命令模式翻屏操作

        ctrl+f:向文件尾部翻一屏;

        ctrl+b:向文件首部翻一屏;

        ctrl+d:向文件尾部翻半屏;

        ctrl+u:向文件首部翻半屏;

十、命令模式操作

    1.字符编辑:

        x:删除光标处字符;

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

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

        ~:转换大小写;

    2.替换命令:

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

        R:切换成REPLACE模式;

    3.删除命令:

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

        d$:删除到行尾;

        d^:删除到非空行首;

        d0:删除到行首;

        dw:删除到下一个单词的词首;

        de:删除到当前单词或下一单词的词尾;

        db:删除到当前单词或前一单词的词首;

        #command:删除多个单词;

        dd:删除光标所在的行;

        #dd:多行删除;

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

    4.复制命令:

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

        y$:复制到行尾;

        y0:复制到行首;

        y^:复制到非空行首;

        ye:复制到当前单词或下一单词的词尾;

        yw:复制到下一个单词的词首;

        yb:复制到当前单词或前一单词的词首;

        #command:复制多个单词;

        yy:复制行;

        #yy:复制多行;

        Y:复制整行;

    5.粘贴命令:

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

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

    6.改变命令:

        c:修改,可结合光标跳转字符,实现范围修改;所谓修改就是先删除,再转换为插入模式;

        c$:删除到行尾;

        c^:删除到非空行首;

        c0:删除到行首;

        cb:删除到当前单词或前一单词的词首;

        ce:删除到当前单词或下一单词的词尾;

        cw:删除到下一个单词的词首;

        #command:删除多个单词

        cc:删除当前行并输入新内容;

        #cc:删除多行

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

    7.100iwu [Esc]:含义是粘贴“wu”100次;

    8.语法:<start position> <command> <end position>

        Command:

            y:复制

            d:删除

            gU:变大写

            gu:变小写

        例如:0y$命令含义是:

            0:跳到行首

            y:从这里开始复制

            $:复制到本行最后一个字符

十一、扩展模式

    1.地址定界

        :start_pos,end_pos

        #:具体第#行,例如2表示第2行;

        #,#:从左侧#表示行起始,到右侧#表示行结尾;

        #,+#: 从左侧#表示的行起始,加上右侧#表示的行数;例如:2,+3表示2到5行;

        .:当前行;

        $:最后一行;

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

        %:全文,相当于1,$;

        /pat1/,/pat2/:从第一次被pat1模式匹配到的行开始,一直到第一次被 pat2匹配到的行结束;

        #,/pat/:

        /pat/,$:

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

        d:删除

        y:复制

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

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

    2.查找:

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

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

        n:与命令同方向;

        N:与命令反方向;

    3.查找并替换:

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

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

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

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

        修饰符:;

            i: 忽略大小写

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

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

    注:查找替换中的分隔符/可替换为其它字符,例如:

        s@/etc@/var@g; 

        s#/boot#/#i;

十二、命令模式

    1.撤销更改:

        u:撤销最近的更改;

        #u:撤销之前多次更改;

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

        ctrl+r:重做最后的“撤消”更改 ;

        .:重复前一个操作;

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

十三、vim的寄存器

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

    2.用a,b,…,z表示,用“寄存器表示,放在数字和命令之间;

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

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

    3.未指定,将使用无命名寄存器;

    4.有10个数字寄存器,用0,1,…,9表示,0存放最近复制内容,1存放最近删除内容。当新的文本变更和删除时,1转存到2,2转存到3,以此类推。数字寄存器不能在不同会话间共享。

十四、vim编辑二进制文件

    步骤:

        1.以二进制方式打开文件:

                vim -b binaryfile

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

                :%!xxd 

        3.编辑二进制文件;

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

                :%!xxd –r 

        5.保存退出;

十五、可视化模式

    1.允许选择的文本块:

            v:面向字符;

            V:面向行;

            ctrl+v:面向块;

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

            w, ) , } ,箭头等;

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

十六、多文件模式

    1.格式:vim file1 file2 file3 ...

        :next 下一个文件;

        :prev 前一个文件;

        :first 第一个文件;

        :last 最后一个文件;

        :wall 保存所有;

        :qwall 退出所有;

        :wqall 保存所有文件并退出;

十七、使用多个窗口

    1.多文件分割:

         格式:vim -o|-O FILE1 FILE2 ...

         -o:水平分割;

         -O:竖直分割;

        在窗口间切换:ctrl+w,arrow(上下左右方向键)

    2.单文件窗口分割:

        ctrl+w,s: split,水平分割; 

        ctrl+w,v: vertical,垂直分割; 

        ctrl+w,q:取消相邻窗口; 

        ctrl+w,o:取消全部窗口;

        :wqall 退出;

十八、定制vim的工作特性

        1.配置文件:

            全局:/etc/vimrc 

            个人:~/.vimrc 

        2.扩展模式:只对当前vim进程有效:

            (1)行号

                显示:set nu;

                取消显示:set nonu;

            (2)括号成对匹配

                匹配:set sm;

                取消:set nosm;

            (3)自动缩进

                启用:set ai;

                禁用:set noai;

            (4)高亮搜索

                启用:set hlsearch;

                禁用:set nohlsearch;

            (5)语法高亮

                启用:syntax on;

                禁用:syntax off;

            (6)忽略字符大小写

                启用:set ic;

                禁用:ser noic;

            (7)文件格式

                启用Windows格式:set fileformat=dos;

                启用Unix格式:set fileformat=unix;

            (8)设置文本宽度

                :set textwidth=65

                :set wrapmargin=15 

        3.vim内置帮助

            (1):help

            (2)Use :q to exit help  

        4.vimtutor(使用手册)  

             本文转自wzcLINUXER 51CTO博客,原文链接:http://blog.51cto.com/yacheng0316/1967865,如需转载请自行联系原作者