Vim编辑器:
全屏幕的编辑器:VIM
        vi: visual interface

       vim:
模式化的编辑工具:
编辑模式:命令模式
输入模式:
末行模式:

模式转换:

编辑模式(默认) --> 输入模式:
            i: insert, 插入
            a:append,光标后面执行插入
            o:new line,新起一行进行插入
            I: 当前光标所在行的行首进行插入
            A:当前光标所在行的行尾
            O:上方新建行

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

编辑模式 --> 末行模式:
            :

末行模式 --> 编辑模式
            ESC

打开vim的方法:
        # vim
        # vim /PATH/TO/SOMEFILE
            +#:#为行号:打开后直接位于#行行首
            +/PATTERN:光标定位到文件中第一次匹配到的行首

关闭vim的方法(大多数需要在末行模式下进行):
        :q  没有改变文本,直接退出
        :q!  强制退出
        :wq 保存退出
        :x 前者的简写
        :w /PATH 可直接指定保存到路径
ZZ:保存退出

光标跳转:
字符间跳转:
            h:左跳一个字符
            l:右跳一个字符
            j:下跳一个字符(小日本Japan下流)
            k:上跳一个字符

            #COMMAND:#为数字,指定个数字符跳转

单词间跳转:
            w:后单词的词首
            e:当前或后一个单词的词尾;
            b:当前或前一单词的词首;

            #COMMAND:#为数字,指定个数字符跳转

行内跳转:
            ^: 跳转至行首的第一个非空白字符;
            0:跳转至行首,绝对行首;
            $: 跳转至行尾,绝对行尾;

行间移动:
            #G跳转至第#行:
            1G, gg:跳转至第一行
            G:跳转至最后一行

句间移动:
            ):跳转至下一句
            (:跳转至前一句

段落间移动:
            }:跳转至下一段
            {:跳转至前一段

编辑命令:

字符编辑:
            x: 删除光标所在处的字符
            #x:指定个数删除,向后

            xp: 光标所在字和后面一个字符进行对调

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

删除命令:
            d: 删除
                d^:删除当前光标所在处到行首之前的字符
                d$:删除光标所在处到行尾的所有字符
                d0:删除光标所在处到行首的所有字符

                dw, de, db

            dd: 删除光标所在的一整行

            #COMMAND

注意:删除的内容没有被直接清掉,会被vim编辑器保存至缓冲区当中;

粘贴:p (paste, put)
如果此复制或删除的内容不是一个完整行
                p:粘贴至当前光标所在处后面;
                P:粘贴至当前光标所在处前面;

如果复制的内容是完整行(可不止一行)
                p: 粘贴至当前光标所在行下方;
                P:行上方;

复制命令:y, yank
            y
                y$, y^, y0
                ye, yw, yb

            yy: 复制行

            #COMMAND

改变命令:c, change
            c$, c^, c0
            cb, ce, cw
            cc:

            #COMMAND

撤消此前的编辑操作:
        u: undo
撤消此前编辑操作;

            #u

        Ctrl+r:
恢复此前的撤消操作

        .: 重复前一个编辑操作

翻屏操作:
        Ctrl+f: 向后一屏;
        Ctrl+b:向前一屏;

        Ctrl+d: 向后半屏
        Ctrl+u: 向前半屏

    vim内建教程:
        vimtutor

    vim的末行模式

        (1) 地址,定界
            :start_pos,end_pos
                #:第#行;
                #,#
                #,+#
                    .: 当前行
                    $: 最后一行
                %: 全文,相当于1,$

                /pat1/:第一次被此模式所匹配到的行;
                #,/pat1/
                /pat1/,/pat2/

后可跟编辑命令:
                d, y
                w(将指定内容保存到另外一个文件), r(直接插入)

        (2) 查找
            /PATTERN:向尾部进行
            ?PATTERN:向首部进行
                n: 与命令同方向
                N:与命令反方向

        (3) 查找替换
            s: 在末行模式下,在地址定界的范围内完成查找替换操作;

                s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用后向引用符号,以引用前面模式中的分组括号所匹配到的内容;
                        \1, \2, ...
&:引用“要找的内容”匹配到的整个内容;
修饰符:
                        i: 忽略大小写
g: 全局替换

                /:用于分隔符,所以,要查找的内容或替换为的内容中出现此符号,要使用\对其转义,使用格式:\/
分隔符可替换为其它字符:例如@,#等;

多文件模式:
        vim FILE1 FILE2 ...
            :next:下一个文件
            :first:回到第一个文件
            :prev:上一个文件
            :last:最后一个文件

            :wqall:保存退出所有文件
            :q!all:退出所有文件

多文件窗口分割:
        vim -o|-O FILE1 FILE2 ...

        Ctrl+w, ARROW

单文件窗口分割:
        Ctrl+w, s: split, 水平分割
        Ctrl+w, v: vertical, 垂直分割

定制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
            set noic

        :help 获取帮助
        :help SUBJECT

特性设定的永久生效方式:
全局配置文件:/etc/vimrc
用户个人的配置文件:~/.vimrc

练习:
        1、复制/etc/grub2.cfg配置文件至/tmp目录,用查找替换命令删除/tmp/grub2.cfg文件中的行首的空白字符;
            CentOS: /etc/grub.conf

Vim编辑器的使用_编辑器

Vim编辑器的使用_insert_02

        2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首加一个#; 原有空白字符保留;

Vim编辑器的使用_编辑器_03

Vim编辑器的使用_编辑器_04

        3、替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;

Vim编辑器的使用_编辑器_05

Vim编辑器的使用_interface_06

        4、删除/tmp/functions文件中所以#开头,且#后面至少跟了一个空白字符的行的行首#;

Vim编辑器的使用_interface_07

Vim编辑器的使用_visual_08