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

相关推荐

  • N28-第四周:正则表达式练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。
    2、编辑/etc/group文件,添加组hadoop。
    3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。
    4、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。
    5、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。
    6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;
    7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;
    8、显示/etc/passwd文件中其默认shell为/bin/bash的用户;
    9、找出/etc/passwd文件中的一位数或两位数;
    10、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;
    11、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;
    12、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;
    13、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;

    2017-12-24
  • MariaDB数据库基于SSL实现远程访问和主从复制

    MariaDB数据库基于SSL实现远程访问和主从复制 实验环境 系统环境:Centos6.5 数据库版本:5.5.36-MariaDB-log MariaDB Server 虚机数量:2 方案实施: 1,配置CA;并为node1和node2生成key和证书 2,在node1和node2上安装Mariadb 3,配置节点1为MariaDB主节点 4,配置节点2…

    Linux干货 2016-05-18
  • linux系统自动化安装和selinux

    系统自动化安装: Anaconda 安装系统分成三个阶段:  安装前配置阶段安装过程使用的语言键盘类型安装目标存储设备Basic Storage :本地磁盘特殊设备:iSCSI设定主机名配置网络接口时区管理员密码x设定分区方式及MBR 的安装位置创建一个普通用户选定要安装的程序包 创建引导光盘:#cp /media/cdrom/isoli…

    Linux干货 2017-04-06
  • systemd及awk

    1、简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginx\apache实现通过systemd来管理
    2、描述awk命令用法及示例(至少3例)
    3、描述awk函数示例(至少3例)

    Linux干货 2018-01-17
  • 第一周作业

    一、描述计算机的组成及其功能 计算机是由处运算器,控制器,储存器,输入输出设备组成 运算器:执行各种计算和逻辑运算操作 控制器:完成协调和指挥整个计算机系统的操作 储存器:暂时存储或者长期存储数据 输入设备:向计算机输入数据和信息的设备 输出设备:计算机硬件系统的终端设备 二、按系列罗列Linux的发行版,并描述不同发行版之间的联系和区别 Linux发行版=…

    Linux干货 2016-12-05
  • 马哥教育网络班N22期+第五周课程练习

    1、显示当前系统上root、fedora或user1用户的默认shell; ~]# grep -E "^(root|user1|fedora)" /etc/passwd | awk -F: '{ print $1 $7 }' root/bin/bash user1/bin/bash fedora/bin/bash 2、…

    Linux干货 2016-10-17