一、简介:

    vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

    1、viimproved,vim 

全屏编辑器,模式化,功能强大,短小精悍

    2、使用格式:

        #vim[Options] /path/to/somefile


二、使用模式:

1、默认模式:命令模式,编辑模式,可对文件进行删除,复制,粘贴等操作

2、输入模式:对文本文件进行修改,输入

3、末行模式:可以执行保存、查找、替换、退出等命令

4、模式间转换:

     编辑模式-->输入模式

        i:insert,实现在当前光标所在字符前面转为输入模式;

        a:append,实现在当前光标所在字符后面转为输入模式;

        o:在光标所在行的下方新建一个空白行并转为输入模式;

        I:在当前光标所在行的行首转为输入模式;

        A:在当天光标所在行的行尾转为输入模式;

        O:在当前光标所在行的上方,新建一个空白行并转为插入模式;

    输入模式-->编辑模式:

        按下Esc键;


    编辑模式-->末行模式

        输入":"模式

    末行模式-->编辑模式

        按两次Esc退出末行模式,不能从莫忙模式直接转到输入模式;


三、光标跳转:

1、字符间跳转:

         h:向左跳转一个字符;

         l:向右跳转一个字符;

         j:向下跳转一个字符;

         k:向上跳转一个字符;

                ↑k

            ←h      l

                ↓j

         #h:向左跳转#个字符;

         #j:向下跳转#个字符;

         #k:向上跳转#个字符;

         #l:向右跳转#个字符;

2、单词间跳转:

         w:跳至后一个单词的词首;

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

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

3、句间跳转:

         ):跳至下一句;

         (:跳至上一句;

4、段落间跳转:

         }:跳至下一段;

         {:跳至上一段;

5、行间跳转:

         1G,gg:跳至文件首行;

         G:跳至文件最后一行;

         #G:跳转到#行;

6、行内跳转:

         ^:跳至行首;

         $:跳至行尾;

         0:零跳至绝对行首;

7、翻屏操作:

         Ctrl+f:向文件尾部翻一屏或按PageDown键;

         Ctrl+b:向文件首部翻一屏或按PageUp键;


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

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


四、关闭文件:

    1、在末行模式下:

            :w保存

            :q退出;

            :!强制;

            :wq保存并推出;

            :q!强制退出不保存,对文件做了修改不想保存时就可以用强制退出;

        :wq! 强制保存并推出,对于有些文件不让保存,但我们又非要保存不可的时候就用强制保存;

        :x 保存退出;

2、在编辑模式先:

         ZZ:保存退出;


五、打开文件

    1、vim +#/path/to/file 打开文件光标自动跳转至#行;

    2、打开多个文件:

         vim[optios] FILE1 FILE2 FILE3

        可使用以下命令在多个文件之间跳转:

                next下一个;

                last最后一个;

                first第一个;

                prev前一个;

    3、打开多个文件并分屏显示

        vim-[o|O] FILE1 FILE2 FILE3

            -O:垂直分割窗口;

            -o:水平分割窗口;

              Ctrl+w+(↑↓):在多个文件间跳转


六、编辑操作:

    1、x命令:

        x:向后删除一个字符

        X:向前删除一个字符

        #x:删除#个字符

    2、d:删除命令;

        dw:删除当前光标到后一个单词词首;

        db:删除光标所在处到词首,或前一个单词词首

        de:删除光标所在处当词尾,或下一个单词词尾

        d^:删除光标所在处到行首;

        d$:删除光标所在处到行尾

        dd:删除光标所在行

        #dd:删除当前光标向下#

    3、在末行模式使用d命令

         末行模式可以使用地址定界;

            起始地址,结束地址

                $:最后一行

                 .:当前光标所在行

                %:全文

                1,7d:删除第一行到第七行;

                1,$:第一行到最后一行;

                1,+6:第一行到第六行;

                1,$-2:第一行到倒数第三行;加d命令可以直接删除

                .,+3:当前光标所在行和下面的三行;加d命令可删除4

    4、c:编辑,转换至输入模式

        cc:删除当前光标所在行并转换至输入模式;

        #cc:删除当前光标所在行向下#行并转换至输入模式;

        c^:删除当前光标所在处到行首并转换至输入模式;

        c$:删除当前光标所在处到行尾并转换至输入模式;

    5、粘帖操作:p命令

        用d命名删除的字符可用p命令来粘贴;

            a、删除的是整行:

                p:删除的是整行在当天光标所在行的下方粘贴;

                P:删除的是整行在当前光标所在行的上方粘贴;

            b、删除不是整行:

                p:在当前光标所在处的后方粘贴;

                P:在当前光标所在处的前方粘贴;

6、复制:y,yank

         yy:复制当前光标所在行;

         y^:复制当前光标所在处到行首;

         y$:复制当前光标所在处到行尾;

         #yy:复制当前光标所在行向下#行;

   a 、复制的是整行:

        p:复制的是整行在当天光标所在行的下方粘贴;

        P:复制的是整行在当前光标所在行的上方粘贴;

    b、复制不是整行:

        p:在当前光标所在处的后方粘贴;

        P:在当前光标所在处的前方粘贴;

7、编辑操作可撤销

        在编辑模式下:

        u:vim默认会保存最近50次,可逐次撤销

             Ctrl+r:撤销此前的撤销操作


七、文本搜索:

    /keyword(关键字):从当前光标向文件尾部查找;

    ?keyword(关键字):从当前光标向文件首部查找;

        n:查找下一个

        N:查找前一个

    支持模式:

        /\<d[[:alpha:]]\{2\}n\>:精确匹配以d开头,后跟两个任意字符,并且以n结尾的字符串;

    基本正则表达式

        ^:锚定行首的符合条件的内容,用法格式"^pattern";

        $:锚定行尾的符合条件的内容,用法格式"pattern$";

        .:匹配任意单个字符;

        *:匹配紧挨在其前面的字符的字符任意次;

        []:匹配指定范围内的任意单个字符

        [^]:匹配指定范围外的任意单个字符

       \?:匹配紧挨在其前面的字符0次或1次;

        \{m,n}:匹配其前面的字符至少m次,至多n

            \{0,n}:至多n次,0-n次;

            \{m,\}:至少m

            \{m,\}:精确匹配m

        \<锚定词首,用法格式:\<pattern

            \b:\bpattern

        \>锚定词尾,用法格式:pattern\>

            \b:pattern\b                      

        \(\):分组,用法格式;

            \(a.b\).*\1:前匹配后引用;

八、vim可视化模式

    1、visual模式

            v:选中光标划过的字符;

            V:选中光标划过的行,整行选取

    2、 按两次Esc键,回到编辑模式;

    3、 同一文档分屏显示

            Ctrl+w,s:水平分割;

            Ctrl+w,v:垂直分割;

            在其间切换Ctrl+w(↑↓)


九、窗口属性定义:

    1、显示行号:

        set number,简写:set nu;

        set nonumber,简写:set nonu;

    2、自动缩进

        set autoindent,简写:set ai;

        set noautoindent,简写:set noai;

    3、不区分字符大小写

        set ignorecase,简写:set ic;

        set noic;

    4、获取帮助:

        set 可以查看set可以配置的功能;

    5、显示匹配的括号:

        set showmatch,简写:set sm;

        set nosm

    6、语法着色:

        syntax on;

        syntax off

    7、查找结果高亮显示:

        set hlsearch

        set nohlsearch


十、vim的配置文件:在文件中用set修改的只对当前vi进程有效。要想长期有效就需要要修改配置文件;

    1、全局:/etc/vimrc

    2、个人:~/.vimrc 文件不存在可自己创建;

         3、修改时直接将set COMMAND放在配置文件中就可以了;