vim用法详解

vim编辑器:文本编辑器:
文本:纯文本,ASCII text;Unicode

文本编辑器种类:
    行编辑器:sed
    全屏编辑器:nano,vi  

vi:visual interface
vim:vi improved

vim:模式化的编辑器:
    编辑模式,命令模式(复制粘贴);键盘操作通常被解析为编辑命令
    输入模式:
    末行模式:内置的命令行接口

打开文件:
    vim [options] [file ..]
        +#:打开文件后,直接让光标处于第#行的行首
        +[num]  For the first file the cursor will be positioned on 
                line "num". If "num" is missing, the  cursor  will
                be positioned on the last line.

        +/PATTENR:打开文件后,直接让光标处于第一个被PATTREN匹配到的行的行首
        +/{pat}  For  the  first  file  the  cursor  will  be  positioned  on        the first occurrence of {pat}.  See ":help search-pattern"              for the available search patterns.

        +:最后一行的行首
        vim -d file1 file2...比较多个文件
            -d Start in diff mode.  There should be two, three or four 
               file  name arguments.  Vim  will  open  all  the
               files and show differences between them.  Works like vimdi(1).
        vim -b file 二进制打开文件
            -b  Binary mode.  A few options will be set that makes it       possible to edit a binary or executable file.

        ex file 或 vim -e 直接接入ex模式
            -e Start Vim in Ex mode, just like the executable was called "ex".

如果该文件存在,文件被打开并显示内容
如果该文件不存在,当编辑后第一次存盘时创建它

模式转换:

编辑模式-->输入模式
    i:insert:在光标所在处输入
    a:append:在光标所在处后方输入
    o:在光标所在处的下方打开一个新行
    I:在光标所在行的行首输入
    A:在光标所在行的行尾输入       
    O:在光标所在处的上方打开一个新行

输入模式-->编辑模式:
    ESC
编辑模式-->末行模式
    :
末行模式-->编辑模式
    两次ESC;ESC,ESC
锁定和解锁:Ctrl+s、Ctrl+q

关闭文件:
编辑模式下:
    ZZ:保存并退出
    ZQ:不保存退出
末行模式:
    q退出  
    q! 强制退出,不保存此前的编辑操作
    wq 保存退出
    x 保存并退出
    w写(存)磁盘文件
    r filename 读文件内容到当前文件中
    w /path/to/somefile
    !command执行shell命令
    r!command将shell命令的标准输出,存入当前文件中

光标跳转:

字符间跳转:  
    h:左 
    j:下
    k:上 
    l:右
        #COMMAND:跳转由#指定的个数的字符

当前页跳转:
    H:页首
    M:页中间行
    L:页底

单词间跳转:
    w:下一个单词的词首
    b:当前或前一个单词的词首
    e:当前或后一个单词的词尾
    #COMMAND:跳转由#指定的个数的单词

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

行间跳转:
    G:最后一行
    #G:跳转至由#指定的行
    1G或者gg:跳转至第一行

句间跳转:(不常用)
   ( 上一句
    )下一句
    #( 上#句 
    #) 下#句

段间跳转
    { 上一段
    } 下一段
    #{ 上#段
    #} 下#段


翻屏:
    Ctrl+u:向文件首部翻半屏
    Ctrl+d:向文件尾部翻半屏
    Ctrl+f:向文件尾部翻一屏
    Ctrl+b:向文件首部翻一屏
    Enter:按行向后翻

vim编辑命令:
    字符编辑
        x:删除光标所在处的字符
        #x:删除光标所在处起始的#个字符
        xp:交换光标所在处的字符与其后面的字符的位置
        ~:转换大小写
    替换命令(replace)
        r:替换光标所在处的字符
        rCHAR
        R:切换为REPLACE模式
    删除命令
        d:删除命令,可结合光标跳转字符,实现范围删除
        d$:
        d^:
        d0:
        dw:
        de:
        db:
        #COMMAND
        dd:删除光标所在处的行
        #dd:删除光标所在处的行起始的共#行
        D:从当前光标位置一直删除到行尾,留空行等同于d$
    粘贴命令(paste)
        P(小写):缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方
                否则,粘贴至当前光标所在处的后面
        p(大写):缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方,
                否则,粘贴至当前光标所在处的前面;
    复制命令:(yank)
        y:复制,工作行为相似与d命令
        yw
        ye
        yb
        y$
        y^
        y0
        #COMMAND
        yy:复制一整行
        #yy:复制#行
    改变命令(change,c):
    编辑模式-->输入模式,实现删除操作;
        c$
        c^
        c0
        cb
        ce
        cw
        #COMMAND
        cc:删除光标所在处的行,并转换为输出模式
        #cc:
        C:删除当前光标到行尾,并切换成插入模式

    100isi[ESC]粘贴 "si"100次
    <start position><command><end position>
        Command:
            y复制、d删除、gU变大写、gu变小写
        例如0y$命令意味着:
        0-->先到行头
        y-->冲这里开始拷贝
        $-->拷贝到本行最后一个字符
            ye从当前位置拷贝到本单词的最后一个字符

vim可视化模式:
    v:按字符选定
    V:按行选定
    Ctrl+v:面向块
结合编辑命令使用:d,c,y
可视化键可用于与移动键结合使用:
    w,),},箭头等
突出显示的文件可以被删除,复制,变更,过滤,搜索/替换等

撤销(undo)操作:
    u:撤销此前的操作
    #u:撤销此前的#操作
    U:撤销光标落在这行后所有此行的更改

撤销此前的撤销操作 recover
    Ctrl+r

重复执行此前的命令
    .:
    #.:重复前一个操作#此


vim自带的练习教程:vimtutor



vim末行模式
内建的命令行接口

1、地址定界:start_pos,end_pos
    $:最后一行
    .:当前行           
    %:全文 
    #:表示特定的第#行,例如5即第5行
    #,#:指定行范围,左侧为起始行,右侧为结束行
        1,$
        .,$-1
    #,+#:指定行范文,左侧为起始行绝对编号,右侧为相对左侧行号的偏移量
    /pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行
        /first/,$
        /pat1/,/pat2/

vim删除空白行
:g/^$/d

可同编辑命令一同使用,实现编辑操作:
    d:删除
    y:复制
    c:修改、改变
    w /path/to/somefile:将范围内的文本保存至指定的文件中;
    r /path/from/somefile:将指定的文件中的内容读取到指定位置

2、查找
    /PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串
    ?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串
        n:下一个,与命令方向相同
        N:上一个,与命令方向相反
3、查找并替换
    s:末行模式的命令;使用格式:
    s/要查找的内容/替换为的内容/修饰符
        要查找的内容:可使用正则表达式
        替换为的内容:不能使用正则表达式,但可以引用;
        如果"要查找的内容" 部分在模式中使用分组符号:
        在"替换为的内容中"使用后向引用
    直接引用查找模式匹配到的全部文本,要使用&符号
修饰符:
    i:忽略大小写
    g:全局替换,一行中如果匹配到多次,则均替换
    gc:全局替换,每次替换前询问

可把分隔符替换为其他非常用字符
    *
    @

实例:
    %s@\<t\([[:alpht:]]\+\)\>@T\1@g

    %s@\<\(f[[:alpha:]]\+\)\>@\1er@g  等同于  %s@\<f[[:alpha:]]\+\>@&er@g        

    %s@^#@@g





vim的多文件功能:
vim FILE1 FILE2...

在文件间切换:
    next  下一个
    prev(prevous)  上一个
    first  第一个
    last  最后一个
退出所有文件:
    wqall 保存所有文件并退出
    wall
    qall
多窗口:
    vim -o|O file1.txt file2.txt  file3.txt
        -o:水平分割窗口
        -O:垂直分割窗口

在窗口直接切换:Ctrl+w,ARROW

注意:单个文件也可以水平分割为多个窗口进行查看:
    Ctrl+w,s:split  水平分割窗口
    Ctrl+w,v:vertical 垂直分割窗口
    Ctrl+w,q:取消相邻窗口
    Ctrl+w,o:取消全部窗口
    :wqall:退出


定制vim的工作特性:
注意:在末行模式下的设定,仅对当前vim进程有效
永久有效:
    全局:/etc/vimrc
    用户个人:~/.vimrc
1、行号
    显示:set number 简写为 set nu
    取消:set  nonumber 简写为 set nonu
2、括号匹配高亮
    匹配:set showmatch   set sm
    取消:set  noshowmatch   set nosm
3、自动缩进
    启用:set al     auto indent
    禁用:set noal
4、高亮搜索:
    启用:set hlsearch   highlight search
    禁用:set nohlsearch
5、语法高亮:
    启用:syntax on   syntax 语法
    禁用:syntax off
6、忽略字符大小写
    启用:set ic   ignore character
    禁用:set noic

7、文件格式
    set fileformat=unix
    set fileformat=dos
8、设置文本宽度
    set textwidth=65 (vimonly)
    set wrapmargin=15
获取帮助
    help
    help Subject

    help option-list
    set or:set all

vi/vim内置帮助
    help
    help topic
    use :q to exit help

# vimtutor 入门教程摘要

vim用法详解

vim用法详解

vim用法详解

vim用法详解

vim用法详解

vim用法详解

vim用法详解

vim寄存器
    vim有26个命名寄存器和一个无命令寄存器,常存放不同的剪贴板内容,可以不同会话间共享

    用a,b,c...z表示,用"寄存器表示,放在数字和命令之间
    如 3"ayy 表示复制3行到a寄存器中
        "ap  表示将a寄存器内容粘贴

    未指定,将使用无命名寄存器

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

以二进制方式打开文件
    vim -b binaryfile
扩展命令模式下,利用xxd命令转换为可读的十六进制
    :%!xxd
编辑二进制文件
扩展命令模式下,利用xxd命令转换二进制
    :%!xxd -r
保存退出


拓展:

VIM中分行,使用替换命令,用正则匹配要分行的位置,然后替换换行符,但是在VIM中不能使用\n在替换的文本中,要用\r,如:
    :%s/--/\r/g
    表示在所有“--”处进行分行。

VIM中删除空白行,:
    :g/^$/d

    :g/^\s*$/d
    \s*代表空白字符

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

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

相关推荐

  • DNS-BIND

    1.实验环境 服务器类型 域名 IP 主DNS服务器 test.com. 192.5.24.101 从DNS服务器 192.5.24.102 子DNS服务器 ops.test.com. 192.5.24.201 备注:所有服务器需保持时间同步。 2.正向解析区域(192.5.24.101) 1)  安装bind 2)  编辑主配置文件,修…

    2017-05-31
  • 系统管理之程序包管理(二)yum详解

    系统管理之程序包管理(二)yum详解:     上节向大家介绍了程序包管理的理论和rpm命令的使用,本篇文章接着向大家介绍rpm的前端使用工具,方便大家更快捷的管理,使用rpm包,提高工作效率。 一 概论: Centos:yum,dnf 两个rpm前端工具 YUM :yellow dog, Yellowdog,Upda…

    Linux干货 2016-08-24
  • shutil,csv,ini

    序列化和反序列化笔记

    2017-10-29
  • 马哥教育网络班21期+第11周课程练习

    1、详细描述一次加密通讯的过程,结合图示最佳。 首先发送方用单向加密的方法提取数据的特征码,用自己的私钥加密这段特征码,并附加到数据的后面。     发送方用对称加密算法把数据及特征码整个进行加密。     发送方用接收发的公钥加密对称密钥并附加到数据后面。  &nbs…

    Linux干货 2016-09-19
  • linux的CentOS系统启动故障与修复

        以CentOS 6为例,系统的启动流程为: 1.开机post加电自检 2.MBR引导 3.通过grub加载内核 4.加载根 5.加载系统中的第一个进程 6.进行初始化 7.出现登录界面     其中主要的启动环节是grub引导计算机,分为三个阶段:一阶段发生在mbr的446字节中;一点五阶段在mbr后续的扇区中…

    2017-09-03
  • corosync+pacemaker对mariadb实现高可用

    corosync+pacemaker对mariadb实现高可用 利用nfs共享存储,导出一个目录作为mariadb的数据目录,然后利用corosync+pacemaker对mariadb进行高可用 1、实验环境 2、实验前的分析 利用nfs导出目录作为mariadb的共享目录,要确保各个mariadb节点对该目录具有写权限,也就是要确保nfs服务器上有一个U…

    Linux干货 2016-11-24