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

相关推荐

  • shell脚本编程之if、case条件语句

    程序执行三种顺序     顺序执行          选择执行          循环执行       &nb…

    Linux干货 2016-08-18
  • suid, sgid, sticky简介

    SUID属性 passwd命令可以用于更改用户的密码,一般用户可以使用这个命令修改自己的密码。但是保存用户密码的/etc/shadow文件的权限是000,也就是说只有文件的所有者root用户可以写入,那为什么其他用户也可以修改自己的密码呢?这就是由于Linux的文件系统中的文件有SUID属性。 [root@centos6 ~]# ll /etc/shadow…

    Linux干货 2017-07-27
  • raid,lvm,及sed命令的相关使用总结

    raid0 条带化 chunk最小写入单位 至少2块盘 空间大小 单块磁盘大小*nraid1 镜像  1/n   读性能提升,写入比单块盘慢  空间始终是一块盘的大小   容错率高  可以坏  n-1块盘raid10 容错高于raid01 但空间损失更多,读写性能 提升 造价高。raid4&nbsp…

    2017-08-26
  • 磁盘管理

    1、设备文件 设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信 设备号码: 主设备号major number,标识设备类型 次设备号minor number,标识同一类型下的不同设备 [root@localhost ~]# ll /dev/sd* brw-rw—-. 1 root disk 8,  0 Aug 25 …

    Linux干货 2016-09-01
  • Linux Cluster之LVS

    一、Linux Cluster 基础: Cluster:计算机集合为解决某个特定问题组合起来形成的单个系统 Linux Cluster类型: LB(Load Banlancing):负载均衡 HA(High Availability):高可用。提高服务可用性,避免出现单点故障 HP(High Performance):高性能 可用性衡量公式: A=MTBF/…

    2016-11-02
  • Hello World, Hello Linux.

    文笔不好,请见谅。

    2018-03-26