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

相关推荐

  • 程序包管理:rpm、yum以及(make)源代码编译安装

    程序包管理:rpm、yum以及(make)源代码编译安装 在Linux上安装程序一般都有三种方法:源代码编译安装,rpm包安装和rpm包的前端安装yum, (rpm,和yum程序包管理器是针对CentOS6平台的) 程序包管理方式都大同小异:  源代码–>目标二进制格式(二进制程序、库文件、配置文件、帮助文件)–&gt…

    Linux干货 2017-01-10
  • (8.15-8.21)第2周博客作业

    1.linux文件管理命令 cat 功能:有从磁盘创建文件的功能(但不具备编辑功能),但主要功能还是2个或者以上文件的合并。 常配合使用参数: -n 或–number 由1 开始对所有输出的行数编号。-b 或–number-nonblank 和-n 相似,只不过对于空白行不编号。 使用方法: Cat –n diannaob1>d…

    Linux干货 2016-08-22
  • Linux基础之文件管理和bash特性

    部分文件管理命令,bash的一些基础特性,部分glob文件匹配示例

    Linux干货 2018-01-16
  • MBR与GPT分区结构的不同及磁盘分区命令总结

    一、MBR分区结构 主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是目前比较流行的一种分区结构。磁盘的0磁道0扇区称为MBR,它的大小是512字节,这个区域被分为三个部分: 第一部分为boot loader(主引导程序),占446字节; 第二部分为Partition table(分区表),即DPT,占64字节,每个分区项…

    Linux干货 2016-08-29
  • 备份练习

    课外整理 cp 功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息参数:     -a 或 –archiv…

    Linux干货 2016-08-08
  • 内核编译之增加ntfs文件系统

    内核编译 内核编译 单内核体系设计,但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。 内核组成部分:     Kernel,内核核心,一般为bzImage,通常在/boot目录下,名称为vmlinuz-WERSION- RELEASE;     Kernel object…

    Linux干货 2016-09-13