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保存退出
    :x 保存退出
命令模式
    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

(0)
msj77539273msj77539273
上一篇 2016-08-15
下一篇 2016-08-15

相关推荐

  • 网络组Network Team

    网络组Network Team 网络组team:是将多个网卡聚合在一起,从而实现容错和提高吞吐量 1 创建网络组接口 nmcli connection add type team con-name TEAMname ifname INTname [config JSON] TEAMname 指定连接名,INname指定接口名, JSON指定runner方式,…

    Linux干货 2017-05-07
  • KeepAlived实现HAProxy双主并实现资源的动静分离

    KeepAlived实现HAProxy双主并实现资源的动静分离 前言 HAProxy介绍 实验拓扑 实验环境 实验步骤 配置后端httpd服务器 配置HAProxy实现backend负载均衡 测试动静分离效果 配置KeepAlived 测试KeepAlived 配置DNS DNS测试 最终测试 总结 前言 我们这次使用HAProxy作为负载均衡调度器来实现后…

    Linux干货 2016-04-16
  • 计算机的组成及其功能。

    一、计算机的组成及其功能。 计算机,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。 1、运算器(Arithmetical and Logical Unit):计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算,与…

    Linux干货 2016-10-30
  • N25第五周作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; ]# grep -E '^[[:space:]]+.*' /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;…

    Linux干货 2017-01-08
  • CentOS 7网络属性配置

    传统命名:以太网eth[0,1,2,…], wlan[0,1,2,…] 可预测功能 udev支持多种不同的命名方案: Firmware, 拓扑结构 (1) 网卡命名机制 systemd对网络设备的命名方式: (a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1; (b)…

    Linux干货 2015-05-28
  • corosync+pacemaker+drbd+mysql配置安装详解

    一,  基本环境介绍及基本环境配置 节点1: node1.hulala.com      192.168.1.35     centos6.5_64    添加8G新硬盘 节点2: node1.hulala.com      192.168.1.36…

    Linux干货 2016-05-08