VIM 强化基础编辑器

关于VIM是什么,还有它的基础部分,我想也就不用我说那么多了,网络上随便搜搜多如牛毛…; 
在这里主要放一些基础命令的使用和实例,其它的请自行Google就可以,非常感谢; 
系统演示环境:以CentOS 7.2进行演示,默认是安装好的,如果没有安装 
~]# yum install -y vim-enhanced

官方文档及教程

Vim的自带练习教程 
[root@node1 scripts]# vimtutor 
直接在命令行下输入vim可查看vim的基础及版本信息等; 
[root@node1 scripts]# vim 
你也可以下载一个 Vim Documentation Chinese Version (Vim官方文档中文版) 
https://sourceforge.net/projects/vimcdoc/files/?source=navbar 
安装好之后使用 :help @cn 命令查看中文官方文档。

VIM的三种基本模式

1、编辑模式:命令行模式;
2、输入模式:等待操作动作;
3、末行模式:有内置的命令行接口;
三种模式的转换:
   编辑模式(默认)转换到-->输入模式
       i:insert,在光标所在处输入;
       a:append,在光标处的后方输入;
       o:在光标所在处下方打开一个新行;
       I:在光标所在行的行首输入;
       -A:在光标所在行的行尾输入;
       -O:在光标所在处的上方打开一个新行;
   输入模式转换到-->编辑模式
       按键:ESC
   从编辑模式转换到-->末行模式
       按键:shift+:
   从末行模式转换到-->编辑模式
       按键:ESC

如何关闭文件

        :ZZ 保存退出; 
        :q 退出; 
        :q!强制退出,不保存此前的编辑操作; 
        :x 保存并退出; 
        :w 另存为 /PATH/TO/SOMEFILE; 
        :wq 保存并退出; 
        :w :q

如何实现光标跳转

字符间跳转: 
        h (左),l (右),j(上) ,k(下); 
        #COMMAND:跳转由#指定的个数的字符; 
单词间跳转: 
        w:下一个单词的词首; 
        e:当前或后一个单词的词尾; 
        b:当前或前一个单词的词首; 
        #COMMAND:跳转由#指定的个数的字符; 
行首行尾跳转: 
        ^:跳转至行首的第一个非空白字符; 
        0:跳转至行首; 
        $:跳转至行尾; 
行间跳转: 
        #G:跳转至#指定的行; 
        1G,gg:跳到第一行; 
        G:跳到最好一行; 
句间跳转: ),( 

段间跳转: },{

翻屏功能

        Ctrl+f:向文件尾部翻一屏; 
        Ctrl+b:向文件首部翻一屏; 
        Ctrl+d:向文件尾部翻半屏; 
        Ctrl+u:向文件首部翻半屏; 
        Enter:按行向后翻;

VIM的编辑命令

字符编辑: 
          x:删除光标所在处的字符; 
        #x:删除光标所在处起始的#个字符; 
        xp:交换光标所在处的字符与其后面的字符的位置; 
替换命令: 
        r:替换光标所在处的字符; 
        r! : 在vim编辑器中使用编辑模式(r! command) ,读入命令的执行结果;

删除命令: 
        d:删除命令,可结合光标跳转字符,实现范围删除; 
        d^:从光标所在处,删除到行首的内容; 
        d$:从光标所在处,删除到行尾的内容; 
        dw:删除光标所在处的单词; 
        de: 
        db: 
        #COMMAND:删除多个单词; 
        dd:删除光标所在处的行; 
        #dd:删除光标所在处的行起始的共#行; 
粘贴命令: 

         P(大写):缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方, 
                            否则则粘贴至当前光标所在处的后方; 
         p(小写):缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方, 
                            否则则粘贴至当前光标所在处的前方;

复制命令: 
        y:复制。工作行为相似于d命令; 
        y$,y^,y0,ye,yb,yw 
        #COMMAND 

从当前行复制到行首:
        :.,0y 

        yy:复制一整行 
        #yy:复制#行 
改变命令: 
        从编辑模式–>输入模式,实现删除操作; 
        c$,c^,c0,cb,ce,cw 
        #COMMAND 
        cc:删除光标所在的行,并转换为输入模式 
        #cc 
可视化模式: 
        v:按字符选定; 
        V:按行选定;
            1、ctrl+v 进入列编辑模式
            2、向下或向上移动光标
            3、把需要注释的行的开头标记起来
            4、然后按大写的I
            5、再插入注释符,比如"#"
            6、再按Esc,就会全部注释了 

经常结合编辑命令使用 
        d,c,y 
撤销操作(undo): 
        u:撤销此前的操作; 
        #u:撤销此前的#个操作 
撤销此前的操作: 
        Ctrl+r 
重复执行前一个编辑操作 
        点 .

VIM的末行模式

它有内建命令行接口

1、地址定界功能: 
:start_pos,end_pos 
        #:特定的第#行,例如5即第5行; 
        #,#:指定行范围,左侧为起始行,右侧为结束行; 
        #,+#:指定行范围,左侧为起始行绝对编号,右侧为相对左侧行号的偏移量;

例如:3,+7
-,$-1:从当前行到倒数第二行;
1,$:从第一行到最后一行;

%:全文搜索 
            /pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行; 
                /first/,$ 
            /pat1/,/pat2/:从光标所在处开始,第一次由pat1匹配到的行开始, 
                                    至第一次有pat2匹配到的行结束之间的所有行; 
                                    注意:可同编辑命令一同使用,实现编辑操作; 
                                          d,y,c 
            w:/PATH/TO/SOMEFILE:将范围内的文本保存至指定的文件中; 
            r:/PATH/FROM/SOMEFILE:将指定的文件中的文本读取并插入指定的位置; 
2、查找: 
        /PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串; 
        ?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串; 
        n:下一个,与命令方向相同 
        N:上一个,与命令方向相反 
3、查找替换: 
        s:末行模式的命令。使用格式是:[s/要查找的内容/替换为的内容/修饰符 ]
        要查找的内容:可使用正则表达式,替换为的内容:不能使用正则,但可以引用;         
        如果‘要查找的内容’部分在模式中要使用分组符号, 在‘替换为的内容’中使用后向引用; 
                 即直接引用查找模式匹配到的全部文本;

修饰符: 
        i:忽略大小写; 
        g:全局替换,意味着一行中如果匹配多次,均替换;

    把分隔符替换为其它非常用字符 
        s@@@ 
        s###

    1,20s/this/This/
   1,20s/this/This/g
   1,20s/this/This/ig
   :s/\/cgroup\/systemd/etc\/sysconfig/g
示例:
   %s@\1@g
   %s\@&er@g
   %s/^\s*//    对整个文档行首替换空白字符

VIM的多文件功能

        vim FILE1 FILE2……

多文件:

        在文件间切换 
            :net 下一个; 
            :prev 上一个; 
            :first 第一个; 
            :last 最后一个;

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

多窗口: 
        -o:水平分割窗口; 
        -O:垂直分割窗口; 
        

        在多窗口中切换
            Ctrl+w(连续按w两下),ARROW 
            Ctrl+w,s:水平分割窗口; 
            Ctrl+w,v:垂直分割窗口; 
            Ctrl+s: 锁定窗口; 
            Ctrl+q: 解锁窗口;

定制vim的工作特性

注意:在末行模式下的设定,仅对当前vim进程有效 
        永久有效: 
            全局:/etc/vimrc; 
            用户个人:~ /.vimrc;

1、显示行号
   显示:set number,简写为set num;
   取消显示:set nomber,简写set nonu;
2、括号匹配高亮
   匹配:set showmatch,简写set sm;
   取消:set nosm;
3、自动缩进功能
   启用:set ai;
   禁用:set noai;
4、搜索高亮
   启用:set hlsearch;
   禁用:set nohlsearch;
5、语法高亮
   启用:syntax on;
   禁用:syntax off;
6、末行模式搜索忽略字符大小写
   启用:set ic;
   禁用:set noic;
7、获取帮助
   末行模式下:help;
   关键词:help subject;
等等......

练习:如何设置tab键缩进4个字符

            set ts=4; 
            set sw=4; 
    如需要使配置生效,即写配置文件;

done!