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)
上一篇 2016-08-15 09:25
下一篇 2016-08-15 09:25

相关推荐

  • 磁盘管理之文件系统

    一,概述 文件系统是操作系统用于明确存储设备或分区上的文件的方 法和数据结构;即在存储设备上组织文件的方法。操作系统 中负责管理和存储文件信息的软件结构称为文件管理系统, 简称文件系统。  从系统角度来看,文件系统是对文件存储设备的空间进行组 织和分配,负责文件存储并对存入的文件进行保护和检索的 系统。具体地说,它负责为用户建立文件,存入、读出、修…

    Linux干货 2016-09-05
  • Linux第一周心得

          第一次接触Linux,内心还是有点紧张,怕自己学不会、怕太难。不过,还是想挑战一下自己,所以来到了马哥学习Linux。      过来的第一天有点坎坷,不过还好有小琰姐的陪伴,一直和我们东西奔走,总算是解决了一大堆的麻烦,所以,感激……表白小琰姐!哈哈哈  撒花花  …

    Linux干货 2017-07-15
  • 10个必需的iOS开发工具和资源

       界面总不是一件很容易事,尤其是iPhone/iPad的界面,做过iOS开发的程序员,一定会感到开发iPhone/iPad的界面是一件多么不容易的事。下面的文章来自10 Essential iOS Developer Tools & Resources,这个文章介绍了十个iOS开发的基础性工具和资源,其一定会很有效地帮你做iO…

    Linux干货 2015-04-01
  • N22-妙手-第十周博客作业

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)     (1) POST阶段         加电自检,确保每个设备能正常工作     (2) BIOS  &nb…

    Linux干货 2016-12-05
  • web服务介绍二)

    apache指令说明:http://httpd.apache.org/docs/2.2/mod/directives.html Listen 172.18.100.67:8081  监听某个指定地址和端口启动前检查一下语法:    httpd -t 如果要监听多个端口,要多行写    Listen 80&nb…

    Linux干货 2017-04-20
  • Mariadb数据库备份恢复系列(一):mysqldump逻辑备份工具实战

    实验一:利用mysqldump+二进制日志实现备份恢复数据库 1、查看原始数据 2、mysqldump执行备份 3、模拟在备份后修改数据,模拟利用二进制日志还原的场景 4、还原mysqldump备份的数据 5、导出二进制日志的事件 6、还原二进制日志事件   

    Linux干货 2016-11-24