vim:模式化的编辑器 

       全局环境变量:/etc/vimrc

             用户个人:~/.vimrc

基本模式:

        编辑模式:默认处在编辑模式

        输入模式:I/i;  O/o;  A/a

        末行模式: " :"

光标跳转

       h:左  j:下   k:上  l:右    #COMMAND:跳转由#指定的个数的字符

单词间跳转

       w:下一个单词的词首

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

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

        #COMMAND:跳转至由#指定的个数的单词;

行首行尾跳转

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

        $: 跳转至行尾

行间跳转

       #G:跳转至由#指定的行 

       1G/gg :跳转至第一行; G:跳转至最后一行 

翻屏

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

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

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

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

字符编辑

       x:删除光标所在处的字符;

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

       xp:交换光标所在处的字符

删除命令

       dd:删除光标所在的行

        #dd:删除光标所在处共#行

粘贴命令

       P:缓冲区中的内容如果为一行,则粘贴到光标所在行下方;否则粘贴在光标后方

       小p:缓冲区的内容如果为一行,则粘贴到光标所在行上方;否则粘贴在光标前方

复制命令

        yy:复制一整行

        #yy:复制#行

撤销操作

        u撤销此前操作

        #u:撤销此前#个操作

撤销此前的撤销

        Ctrl + r 


末行模式地址界定:

     #: 特定的第#行

      $: 最后一行

     #,#:指定范围

     #,+#:指定从哪里开始,和偏移量

       % :全文

     /Pattern/:从光标所在处起始,向文件尾部第一次被模式所匹配到的行; /first/,$

    /pat1/,/pat2/:从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行

  例: 10,$-1 十行到倒数第二行
       .+5    当前行加5

查找替换

    s:查找

    g:全局替换

    i:忽略大小写 

   .,$-1 s@mysql@MYSQL@gi ---->从当前行到倒数第二行,查找所有的mysql替换为MYSQL

实战练习:

复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符;

:%s@^[[:space:]]\{1,\}@@g

复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令/tmp/functions文件的每个以空白字符开头的行的行首加上#

:%s@^[[:space:]]\{1,\}[^[:space:]]@#&@g  注:加&不改变原有排版

为/tmp/grub2.cfg文件的前三行的行首加上#号

:1,3s@^@#@

将/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0 替换为enabled=1,所有gpgcheck=0替换为gpgcheck=1;

:%s@\(enabled\|gpgcheck\)=1@\1=1@g

遍历/tmp/grub2.cfg文件中所有的123为#

:%s@[1-3]@#@g

全局替换:是一行中有多少替换多少,遍历完整篇文章。

全文替换:是一行中只替换一个,遍历完整篇文章