vi与vim的使用

一、引言

    在Linux中,vi(Visual Interface)是标准的编辑器,功能强大到不逊于任何最新的编辑器。无论在Linux中还是在Unix中,vi的使用方法都是完全相同的。vim(Vi Improved)在vi的基础上增加了很多新特性。

二、模式

    vim的工作模式有三种,用户在不同模式下可以进行不同的操作

        命令模式:控制屏幕光标的移动,字符、字或行的删除、移动和复制

        插入模式:插入模式可以对文本内容进行文字输入

        命令扩展模式:保存,退出等命令的输入

    模式切换

        ESC键进入命令模式

        命令模式下,“:”冒号进入命令扩展模式

        命令模式 –> 插入模式 

        i    insert, 在光标所在处输入 

        I    在当前光标所在行的行首输入 

        a    append, 在光标所在处后面输入 

        A    在当前光标所在行的行尾输入 

        o    在当前光标所在行的下方打开一个新行

        O    在当前光标所在行的上方打开一个新行

        锁定:Ctrl+s

        解锁:Ctrl+q

        (锁定过程中,可以接受来自键盘的输入,但是不显示在屏幕上)

三、打开与关闭文件

    打开文件:vim [OPTION]…FILE…

        +#    打开文件后,光标位于第#行的行首

        +/PATTERN    打开文件后,光标位于第一个匹配到的行

        +    光标位于最后一行

        -b    以二进制的方式打开文件

        -m    只读打开文件

        -e    直接进入命令扩展模式

    

    关闭文件:

        扩展模式

            :q 退出 :

            q! 强制退出,丢弃做出的修改 

            :wq 保存退出 

            :x 保存退出 

        命令模式

            ZZ:保存退出

            ZQ:不保存退出

四、扩展模式

创建一个命令提示符,位于屏幕左下角、

    常用命令:

        w    写(存)磁盘文件 

        wq    写入并退出 

        x    写入并退出 

        q    退出 

        q!    不存盘退出,即使更改都将丢失 

        r FILE    读文件内容到当前文件中 

        w FILE    将当前文件内容写入另一个文件

        !command    强制执行命令 

        r!command    在vi中临时执行命令

    地址定界

        :/PATTERN1/,/PATTERN2/ 

        #    指定行

        #,#    起始行到结束行

        #,+#    指定行开始到向下的一些行

        .    当前行

        $    最后一行

            $-1    倒数第二行

        %    全文,所有行,等于1,$

    编辑命令:

        d    删除匹配的内容

        y    复制匹配的内容

        w FILE    将范围内的行另存至指定文件中

        r FILE    在制定位置插入指定文件中的所有内容

    查找并替换:

    s/PATTERN/STRING/修饰符(分隔符可以改变)

    修饰符:

        i    忽略大小写

        g    全局替换,否则默认情况下,每行只替换第一次出现的字符

        gc    全局替换,替换前询问是否替换

五、命令模式

字符间的跳转:

    h:左    l:右    j:下    k:上 

单词间的跳转

    w:下一个单词词首

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

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

页的跳转

    H:页首

    M:当前页中间行

    L:页底

行首行尾跳转:

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

    O    跳转至行首

    $    跳转至行尾

行间移动:

    #G(或扩展模式:#)    跳转到第#行

    G    最后一行

    1G或gg    第一行

句间移动    

    ):  下一句        (:  上一句

段落间的移动

    }:  下一段        {:上一段

翻屏操作

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

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

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

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

字符编辑

    x: 删除光标处的字符; 

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

    xp: 交换光标所在处的字符及其后面字符的位置 

    ~:转换大小写

替换命令(r, replace) 

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

    R:切换成REPLACE模式

删除命令: 

    d: 删除命令,可结合光标跳转字符,实现范围删除; 

    d$: 删除到行尾 

    d^:删除到非空行首 

    d0:删除到行首 

    dw:删除下一个单词 

    de:删除当前单词

    db:删除前一个单词

    dd: 删除光标所在的行 

    #dd:多行删除 

    D:从当前光标位置一直删除到行尾,留空行,等同于d$

复制命令

    y:复制,用法同d命令

粘帖命令

    p:缓冲区存的如果为整行,则粘贴当前光标所在行的下 方;否则,则粘贴至当前光标所在处的后面 

    P:缓冲区存的如果为整行,则粘贴当前光标所在行的上 方;否则,则粘贴至当前光标所在处的前面

六、vim的寄存器

    vim中有26个命名寄存器和一个无名寄存器,常存放不同的剪贴板内容,可以在不同的会话中共享。分别用a-z表示,例如:3"tyy表示复制三行到寄存器t中,"tp则表示将寄存器t中的内容粘贴。若未指定寄存器,将使用无名寄存器。

    vim中还有10个数字寄存器,用0-9表示,0表示最近复制的内容,1表示最近删除的内容。当新的文本变更或删除时,1会转存到2中并以此类推。数字寄存器不能在不同会话中共享。

七、多文件模式

vim FILE1 FILE2 FILE3 … 

    :next    下一个 

    :prev    前一个 

    :first    第一个 

    :last    最后一个 

    :wall    保存所有 

    :qall    退出所有 

    :wqall    保存所有并退出

八、多窗口模式

    多文件分割 

        vim -o|-O FILE1 FILE2 … 

        -o: 水平分割 

        -O: 垂直分割 

        在窗口间切换:Ctrl+w, Arrow 

    单文件窗口分割: 

        Ctrl+w,s: split, 水平分割 

        Ctrl+w,v: vertical, 垂直分割 

        Ctrl+w,q:取消相邻窗口 

        Ctrl+w,o:取消全部窗口 

        :wqall 退出

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

(0)
zhanghuanyuzhanghuanyu
上一篇 2016-08-11 09:37
下一篇 2016-08-11 09:38

相关推荐

  • grep,sed,与正则等

    grep:文本过滤(模式:pattern)工具; grep, egrep, fgrep(不支持正则表达式搜索 sed:stream editor,文本编辑工具; awk:Linux上的实现gawk,文本报告生成器;a grep [OPTIONS] PATTERN [FILE…] grep…

    Linux干货 2016-08-12
  • 在虚拟机上使用CentOS6的两个iso文件创建本地yum仓库和http仓库

    yum客户端和服务器端都是本虚拟机 一、创建本地磁盘访问的yum仓库 条件和要求: a.guest虚拟机需要添加2个光驱,分别装载CentOS6.4发行版的DVD1和DVD2 b.DVD1和DVD2的挂载目录分别是:/media/cdrom/下的os和extras,并设置开机挂载 c.使用CentOS-Media.repo作为yum客户端配置文件,将其他re…

    Linux干货 2015-09-22
  • web服务 初步

    Web Service初步 一、引言 Web服务也是一个C/S架构,服务器端就是一个进程,客户端是一个浏览器。我们打开浏览器的时候,都会看到hppt,https的字样,然后才是输入网址,这两个协议是web服务的应用层协议,用来实现某些具体应用的。像https,前面学习openssl的时候也接触过,https=http+ssl。 web的传输层协议用到了tcp…

    Linux干货 2016-12-09
  • 计算机的组成及功能

    计算机的组成及功能 计算机由CPU、存储器、输入设备、输出设备等部件组成。 CPU:为计算机的中央处理器,是计算机的核心部分,由运算器和控制器组成。 运算器:CPU中用于进行算术运算和逻辑运算的部件。 控制器:整个CPU的指挥中心,控制程序中指令读取、解析并产生相应的操作控制信息保证各程序的有序执行。 存储器:计算机中用来存储数据、程序等信息的部件,并在需要…

    Linux干货 2017-07-02
  • lvm逻辑卷管理

    lvm逻辑卷管理: 允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小 允许在多个物理设备间重新组织文件系统,将设备指定为物理卷 用一个或者多个物理卷来创建一个卷组 物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的 在物理卷上创建的逻辑卷是由物理区域(PE)组成 可以在逻辑卷上创建文件系统 创建: 创建物理卷: pvcrea…

    Linux干货 2016-09-01
  • 从shell眼中看世界–展开和引用

    这篇博客的目的在于加深对于展开和引用的理解,阐释展开和引用之间联系。 ‘ ‘ :强引用,其中的变量引用不会被替换为变量值,而保持原字符串       ” “:弱引用,其中的变量引用会被替换为变量值    如果之前对于’ …

    Linux干货 2017-04-16