vim是vi的增强版,linux的重要哲学思想之一就是一切皆文件,而在系统上配置文件绝大多数都是使用文本文件保存的,所以掌握一个功能强大,方便易用的文本编辑器对于linux的系统管理是非常有必要的。


vim的使用:

  1.使用vim打开文件

      vim [options] file

 如果文件存在,则vim会打开该文件

 如果文件不存在,则vim会创建该文件

在使用vim打开文件时常用到的选项:+num +/PATTERN

    vim +# file 表示在打开该文件的时候直接将光标定位至第#行

    vim + file 表示在打开该文件的时候直接将光标定位至最后一行

    vim +/PATTERN file 表示在打开该文件的时候将光标定位至第一次被模式匹配到的行

 

vim是一个模式化的编辑器:

  2.vim的模式:编辑模式(命令模式)

           输入模式

           末行模式

           替换模式  //

           可视化模式  //

编辑模式:也成为命令模式,在这个模式下从键盘的输入被vim解析成命令,而不会作为字符输入

输入模式:在该模式下,就是正常的编写

末行模式:同命令模式类似,但是功能更加强大

    

 3.vim的模式转换

      使用vim打开一个文件默认进入命令模式

     vim编辑器详解_vim

 如图:输入模式和末行模式都必须从命令模式进入

 命令模式转入输入模式:i,a,o,I,A,O

       i:当前光标所在字符前面转入,输入的字符在当前光标字符的前一个

       a:当前光标所在字符后面转入,输入的字符在当前光标字符的后一个

       o:在当前光标所在行的下方新建一行转入

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

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

       O: 在当前光标所在行的上方新建一行转入

 输入模式转回命令模式:Esc键

 

 命令模式转入末行模式:

       :输入一个冒号转入末行模式

 末行模式退回命令模式:Esc键


末行模式下常用的简单命令:

      :set nu  在每行的行首加上行号

      :#d     删除第#行

      :#1,#2d  删除从#1行到#2行(.表示当前行,$表示最后一行,+#表示从当前行向下的#行)

      :s/PATTERN/string/g 将模式匹配到的全局替换

      :!COMMAND 在不退出vim的情况下执行bash命令

 

     

 4.光标移动(常用,难点)

    (1)逐个字符移动:h,j,k,l

都可以在前面加#号,表示一次向..移动#个字符

    (2)逐个单词移动

     [#]w:移动到下一个单词的词首

       e:移到当前单词的词尾或下一个单词的词尾(end)

       b:移到当前单词的词首或前一个单词的词首(begin)

在这些命令前面加#表示一次向..移#个单词

    (3)行内跳转

      0(数字0):快速跳至当前行首(绝对行首)

      ^:移动光标到当前行的第一个字符前(相对行首)

      $:移动光标到当前行的行尾

    (4)行间跳转

      #G:直接跳转到第#行

      G:跳转到最后一行

       末行模式下 :# 跳转到第#行

              :$ 跳转到最后一行

   

  5.翻屏

   ctrl+f:向下翻一屏

   ctrl+b:向上翻一屏


   ctrl+d:向下翻半屏 //联想记忆:down

   ctrl+u:向上翻半屏  //up


  6.删除(难点)

  删除单个字符

       x:删除光标所在的字符

       #x:从光标所在的字符开始向后一共删除#个字符

  d命令

   d删除命令可以和跳转命令结合使用

      d  w :表示删除当前光标所在字符到下一个单词的词首之间的内容

      d  3e:表示删除从当前光标所在字符到光标将会跳转到的位置

      #d 3e:删除跳转符指定范围的#个范围

     

      dd:表示删除当前行

      #dd:表示删除从当前行开始向后一共#行


  7.复制(常用,难点)

   y命令

      用法同d命令

   yy为复制当前行

   需要和跳转命令结合使用才能达到复制的灵活性

  

  8.粘贴

在执行粘贴操作的时候,粘贴的内容是最近一次的删除内容或者是最近一次的复制内容

   p命令和P命令

      p:如果最近一次复制或删除的是整行内容,则粘贴在光标所在行的下方

                       不是整行内容,则粘贴在光标所在字符的后面

      P:如果最近一次复制或删除的是整行内容,则粘贴在光标所在行的上方

                       不是整行内容,则粘贴在光标所在字符的前面                       

  9.替换

   r:常用语替换单个字符,即光标所在的字符

   R:从命令模式转入替换模式

     可以随光标的移动替换多个字符

  

  10.可视化模式

   进入可视化模式,就可以突破vim中跳转命令的局限性,同windows中的鼠标下拉一下,随选中的内容进行相应的操作

   v和V命令

     v和V都可以从命令模式转入可视化模式

    v:转入可视化模式之后,对于覆盖内容选取是根据字符选取的

    V:转入可视化模式之后,对于覆盖内容的选取是根据行选取的


  11.撤销编辑操作

   u命令

     u命令可以撤销前一次的编辑操作

     可以连续使用u命令,实现撤销n次编辑操作

     #u:明确指定撤销多少次操作

  如何对撤销这个操作进行撤销:

        ctrl+r :撤销最近一次的撤销操作


  12.重复此前的操作

     .可以重复执行此前的操作


  13:查找(常用)

    在命令模式下(在末行模式下也可以)

       /PATTERN 从当前光标所在行向尾部进行搜索

       ?PATTERN 从当前光标所在行向首部进行搜索

       n和N用于在匹配到的模式(高亮显示)之间进行跳转

     n:向下进行跳转,即跳转到下一个模式匹配的位置

     N:下上进行跳转,即跳转到上一个模式匹配的位置

这对于在各种服务配置文件进行快速参数定位的时候,查找是十分有效的


  14.查找并替换(常用)

   vim支持sed,在末行模式下

     :addr1,addr2s/PATTERN/string/g 

   g表示全局替换

  在一些场合下,此功能是比较常用的


在使用vim编辑文件或者是写脚本的时候,跳转,复制,粘贴,删除等都是比较常用的功能,其中复制,粘贴等都集合了跳转,所以灵活的使用需要不断的练习


在命令模式能够使用的命令基本在末行模式都可以使用,末行模式比在命令模式可以实现更多的功能


  15.退出vim编辑器

    命令模式:ZZ 表示保存退出

    末行模式:w 表示保存

          wq 保存退出


  16.使用vim编辑多个文件

   当使用vim打开多个文件时

        vim file1 file2

在vim编辑不同的文件的时候,复制,粘贴的内容是可以共享的,但是不能和外部复制内容共享,这一点很容易理解,那就是vim将复制的内容保存在自己的进程地址空间中

    在vim打开多个文件的时候,由于vim是一个全屏编辑器,所以只会显示第一个文件内容

 所以,当同时编辑多个文件的时候,常用到的操作就是需要在这些文件之间来回切换

   末行模式 :next 在末行模式下使用next命令可以切换至下一个文件

         :prev 该命令可以切换至上一个文件

         :last 该命令可以切换至最后一个文件

         :first 该命令可以切换至第一个文件

         :q退出当前文件

         :qa 退出所有文件的编辑