vim的简介与使用

      vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。
      vi编辑器支持编辑模式和命令模式,编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文件的操作命令,要正确使用vi编辑器就必须熟练掌握着两种模式的切换。默认情况下,打开vi编辑器后自动进入命令模式。从编辑模式切换到命令模式使用“esc”键,从命令模式切换到编辑模式使用“A”、“a”、“O”、“o”、“I”、“i”键。

打开文件

    # vim [OPTION]… FILE…
    +#: 打开文件后,直接让光标处于第#行的行首
    +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首
    vim + file 直接打开file,光标在最后一行
    vim –b file 二进制方式打开文件
    vim –d file1 file2… 比较多个文件
    vim -m file 只读打开文件
    ex file 或vim –e 直接进入ex模式
    如果该文件存在,文件被打开并显示内容
    如果该文件不存在,当编辑后第一次存盘时创建它

命令模式–> 插入模式
    i: insert, 在光标所在处输入
    I:在当前光标所在行的行首输入
    a: append, 在光标所在处后面输入
    A:在当前光标所在行的行尾输入
    o: 在当前光标所在行的下方打开一个新行
    O:在当前光标所在行的上方打开一个新行

    锁定和解锁:CTRL+s,Ctrl+q

关闭文件
    扩展模式:
    :q 退出
    :q! 强制退出,丢弃做出的修改
    :wq保存退出
    😡 保存退出
命令模式
    ZZ: 保存退出
    ZQ:不保存退出
扩展模式
    按“:”进入Ex模式
    创建一个命令提示符:,处于底部的屏幕左侧
    命令:
        w写(存)磁盘文件
        wq写入并退出
        x 写入并退出
        q 退出
        q!不存盘退出,即使更改都将丢失
        r filename 读文件内容到当前文件中
        w filename 将当前文件内容写入另一个文件
        !command
        r!command
命令模式光标跳转
    字符间跳转:
        h: 左l: 右j: 下k: 上
        #COMMAND:跳转由#指定的个数的字符;
    单词间跳转:
        w:下一个单词的词首
        e:当前或下一单词的词尾
        b:当前或前一个单词的词首
        #COMMAND:由#指定一次跳转的单词数
    当前页跳转:
        H:页首M:页中间行L:页底

命令模式光标跳转
    行首行尾跳转:
        ^: 跳转至行首的第一个非空白字符;
        0: 跳转至行首
        $: 跳转至行尾
    行间移动:
        #G、扩展模式:# :跳转至由#指定行
        G:最后一行
        1G, gg: 第一行
    句间移动:
        ):下一句(:上一句
    段落间移动:
        }:下一段{:上一段
    命令模式翻屏操作
        Ctrl+f: 向文件尾部翻一屏
        Ctrl+b: 向文件首部翻一屏
        Ctrl+d: 向文件尾部翻半屏
        Ctrl+u:向文件首部翻半屏
        命令模式操作
    字符编辑:
        x: 删除光标处的字符;
        #x: 删除光标处起始的#个字符
        xp: 交换光标所在处的字符及其后面字符的位置
    :转换大小写
    替换命令(r, replace)
        r: 替换光标所在处的字符
        R:切换成REPLACE模式
命令模式操作
    删除命令:
        d: 删除命令,可结合光标跳转字符,实现范围删除;
        d$: 删除到行尾
        d^:删除到非空行首
        d0:删除到行首
        #COMMAND
        dd: 删除光标所在的行
        #dd:多行删除
        D:从当前光标位置一直删除到行尾,留空行,等同于d$
命令模式操作
    复制命令(y, yank):
        y: 复制,行为相似于d命令
        y$
        y0
        y^
        ye
        yw
        yb
        #COMMAND
        yy:复制行
        #yy: 复制多行
        Y: 复制整行
命令模式操作
    粘贴命令(p, paste):
        p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
        P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
命令模式操作
    改变命令(c, change)
        c: 修改后切换成插入模式
命令模式–> 插入模式
        c$
        c^
        c0
        cb
        ce
        cw
        #COMMAND
        cc:删除当前行并输入新内容
        #cc:
        C:删除当前光标到行尾,并切换成插入模式
命令模式
        100iwang [ESC] 粘贴“wang”100次
        <start position><command><end position>
        Command:
        y 复制、d 删除、gU变大写、gu变小写
    例如0y$ 命令意味着:
        0 →先到行头
        y →从这里开始拷贝
        $ →拷贝到本行最后一个字符
        ye 从当前位置拷贝到本单词的最后一个字符
扩展模式:地址定界
    地址定界
        :start_pos,end_pos
        #: 具体第#行,例如2表示第2行;
        #,#: 从左侧#表示行起始,到右侧#表示行结尾
        #,+#: 从左侧#表示的行起始,加上右侧#表示的行数
        :2,+3 表示2到5行
        .: 当前行
        $: 最后一行
        .,$-1 当前行到倒数第二行
        %:全文, 相当于1,$
    扩展模式:地址定界
        /pat1/,/pat2/
        从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
        #,/pat/
        /pat/,$
使用方式:后跟一个编辑命令
        d
        y
        w file: 将范围内的行另存至指定文件中
        r file:在指定位置插入指定文件中的所有内容
扩展模式:查找
    查找
        /PATTERN:从当前光标所在处向文件尾部查找
        ?PATTERN:从当前光标所在处向文件首部查找
        n:与命令同方向
        N:与命令反方向
扩展模式:查找并替换
        s: 在扩展模式下完成查找替换操作
        格式:s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用\1, \2, …等后向引用符号;还可以使用“&”引用前面查

找时查找到的整个内容
    修饰符:
        i: 忽略大小写
        g: 全局替换;默认情况下,每一行只替换第一次出现
        gc:全局替换,每次替换前询问
    查找替换中的分隔符/可替换为其它字符,例如
        s@/etc@/var@g
        s#/boot#/#i
    命令模式:撤消更改
        u撤销最近的更改
        #u撤销之前多次更改
        U撤消光标落在这行后所有此行的更改
    按Ctrl-r重做最后的“撤消”更改
        . 重复前一个操作
        n.重复前一个操作n次

1、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符

cp -rpf /etc/profile /tmp 复制文件到tmp目录下

11.jpg

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

 12.jpg

3、如何设置tab缩进为4个字符?

:模式ts=4

4、复制/etc/rc.d/init.d/functions文件至/tmp目录;替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;

 14.jpg

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

15.jpg

 

 

原创文章,作者:msj77539273,如若转载,请注明出处:http://www.178linux.com/32802