20170727 vim编辑器

作者: 哈喽别样 | 来源:发表于2017-07-29 16:13 被阅读6次

    简介:
    vi:visual interface,可视窗口,历史悠久的文本编辑器
    vim:vi improved,vi编辑器增强版,增加了颜色显示,光标坐标位置显示等功能

    一、vim 打开文件

    • 语法:vim [OPTION]... FILE...
    • 用法:
    +#  file1           <!--打开文件光标直接移动至第#行行首-->
    +/pattern file1     <!--打开文件光标直接移动至匹配pattern行的行首-->
    -b file1            <!--打开二进制文件-->
    -d file1 file2      <!--比较两个文件-->
    -m file1            <!--只读打开文件-->
    
    • 实验:

      1. 打开/etc/passwd文件光标直接指向第6行行首
        命令:vim +6 /etc/passwd
      2. 打开/etc/passwd文件光标直接指向用户名以f开头的行
        命令:vim +/"^f.*\>" /etc/passwd
      3. 比较/etc/passwd和/etc/shadow文件
        命令:vim -d /etc/passwd /etc/shadow
    • vim编辑的文件路径如果该文件存在,文件被打开并显示内容
      如果该文件不存在,当编辑后第一次存盘时创建它
      但是目录一定要存在,vim不具备创建目录的功能

    二、vim 模式编辑器

    • vim编辑器的三种模式:
      • 命令模式(Normal),默认模式,功能:光标移动,文本剪切、粘贴等
      • 插入模式(Insert),功能:修改文本
      • 扩展命令模式(extend command),功能:保存、退出等
    • Esc退出当前模式,返回命令模式
    • 模式转换:
    • 命令模式进入插入模式
    i     <!--insert, 在光标所在处输入-->
    I     <!--在当前光标所在行的行首输入-->
    a     <!--在光标所在处后面输入-->
    A     <!--在当前光标所在行的行尾输入-->
    o     <!--在当前光标所在行的下方新建一个新行-->
    O     <!--在当前光标所在行的上方新建一个新行-->
    
    • 命令模式进入扩展命令模式,输入:
    :q     <!--退出-->
    :q!     <!--强制退出,放弃做出的修改-->
    :w     <!--保存-->
    :wq    <!--保存退出-->
    :x     <!--保存退出-->
    :w file1    <!--将当前内容保存至另一个文件,之后修改的还是之前编辑的文件-->
    :r file2     <!--读文件内容至当前文件-->
    :!command     <!--执行命令-->
    :r!command    <!--读入命令执行结果-->
    
    • 实验:
      1. 将当前编辑的文件另存为当前目录下的文件file3
        命令::w file3

        2.读取/etc/fstab文件内容至当前文件
        命令::r /etc/fstab

        3.在扩展命令模式下创建/app下的目录newdir,并用ls命令查看是否创建成功
        命令::!mkdir /app/newdir


        4.在扩展命令模式下读入/etc/password文件中用户ftp的行内容
        命令::r!grep "^ftp\>" /etc/passwd
    • vim编辑器的插入模式和扩展命令模式之间不能直接相互切换,需要通过命令模式过渡,vim编辑器三种模式的转换关系如下:

    三、vim 命令模式详解

    (一)光标跳转

    • 字符间跳转:
    h     <!--光标左移-->
    l     <!--光标右移-->
    j     <!--光标下移-->
    k     <!--光标上移-->
    #COMMAND     <!--跳转由#指定个数的字符-->
    
    • 单词间跳转:
    w     <!--下一个单词的词首-->
    e     <!--当前或下一单词的词尾-->
    b     <!--当前或前一个单词的词首-->
    #COMMAND     <!--由#指定一次跳转的单词数-->
    
    • 当前页跳转:
    H     <!--页首行首-->
    M     <!--页中间行行首-->
    L     <!--页底行首-->
    
    • 行首行尾跳转:
    ^     <!--跳转至行首的第一个非空白字符-->
    0     <!--跳转至行首-->
    $     <!--跳转至行尾-->
    
    • 行间移动:
    #G         <!--跳转至由#指定行-->
    G          <!--最后一行-->
    1G, gg     <!--第一行-->
    
    • 句间移动:
    )     <!--下一句-->
    (     <!--上一句-->
    
    • 段落间移动:
    }     <!--下一段-->
    {     <!--上一段-->
    

    (二)翻屏操作

    Ctrl+f     <!--向文件尾部翻一屏-->
    Ctrl+b     <!--向文件首部翻一屏-->
    Ctrl+d     <!--向文件尾部翻半屏-->
    Ctrl+u     <!--向文件首部翻半屏-->
    

    (三)编辑操作

    • 字符编辑:
    x     <!--删除光标处的字符,实质是剪切-->
    #x    <!--删除光标处起始的#个字符-->
    xp    <!--交换光标所在处的字符及其后面字符的位置-->
    ~     <!--转换大小写-->
    J     <!--删除当前行后的换行符-->
    
    • 替换命令 r:
    r     <!--替换光标所在处的字符-->
    R     <!--切换成REPLACE模式-->
    
    • 删除命令 d:
    d      <!--删除命令,可结合光标跳转字符,实现范围删除-->
    d$     <!--删除到行尾-->
    d^     <!--删除到非空行首-->
    d0     <!--删除到行首-->
    dw     <!--删除到下个单词词首-->
    de     <!--删除到本单词或下个单词词尾-->
    db     <!--删除到本单词或上个单词的词首-->
    dd     <!--删除光标所在的行-->
    #dd    <!--多行删除-->
    D      <!--从当前光标位置一直删除到行尾,留空行,等同于d$-->
    
    • 复制命令 y,语法类似删除 d:
    y$     <!--复制到行尾-->
    y^     <!--复制到非空行首-->
    y0     <!--复制到行首-->
    yw     <!--复制到下个单词词首-->
    ye     <!--复制到本单词或下个单词词尾-->
    yb     <!--复制到本单词或上个单词的词首-->
    yy     <!--复制行-->
    #yy    <!--复制多行-->
    Y      <!--复制整行-->
    
    • 粘贴命令 p:
    p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
    P:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面
    
    • 改变命令 c,删除后切换成插入模式
    c$     <!--删除到行尾,并切换成插入模式-->
    c^     <!--删除到非空行首,并切换成插入模式-->
    c0     <!--删除到行首,并切换成插入模式-->
    cw     <!--删除到下个单词词首,并切换成插入模式-->
    ce     <!--删除到本单词或下个单词词尾,并切换成插入模式-->
    cb     <!--删除到本单词或上个单词的词首,并切换成插入模式-->
    cc     <!--删除当前行,并切换成插入模式-->
    #cc    <!--删除多行,并切换成插入模式-->
    C    <!--删除当前光标到行尾,并切换成插入模式-->
    
    • 100istring Esc: 粘贴字符串string100遍

    • 撤销更改 u

    u          <!--撤销最近的更改-->
    #u         <!--撤销之前多次更改-->
    U          <!--撤消光标落在这行后所有此行的更改-->
    Ctrl-r     <!--重做最后的“撤消”更改-->
    .          <!--重复前一个操作-->
    n.         <!--重复前一个操作n次-->
    

    四、vim 扩展命令模式详解

    (一)地址定界

    • 定界描述方法
    #                <!--具体第#行,例如`2`表示第2行-->
    #1,#2            <!--从第#1行开始,到第#2行结束-->
    #1,+#2           <!--从第#1行开始,到第#1+#2行结束,例如\2,+3表示2到5行-->
    .                 <!--当前行-->
    $                 <!--最后一行-->
    .,$-1             <!--当前行到倒数第二行-->
    %                 <!--全文,相当于`1,$`-->
    /pat1/,/pat2/     <!--从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束-->
    #,/pat/          <!--从第#行开始,到第一次被pat匹配的行结束-->
    /pat/,$           <!--从第一次被pat匹配的行开始到最后一行-->
    
    • 使用方式:后跟一个编辑命令,如1,3d .,8y 4,+5w 8,$r

    (二)查找

    /PATTERN     <!--从当前光标所在处向文件尾部查找-->
    ?PATTERN     <!--从当前光标所在处向文件首部查找-->
    n            <!--与命令同方向-->
    N            <!--与命令反方向-->
    

    (三)查找并替换 s

    • 语法::%s/要查找的内容/替换为的内容/修饰符
    • 修饰符:
    i     <!--忽略大小写-->
    g     <!--全局替换;默认情况下,每一行只替换第一次出现-->
    gc    <!--全局替换,每次替换前询问-->
    
    • 查找替换中的分隔符/可替换为其它字符,如:%s/\/dev\/sda/\/dev\/sdb/g可以写成:%s@/dev/sda@/dev/sdb@g

    五、vim 编辑二进制文件

    • 以二进制方式打开文件
      vim -b binaryfile
    • 扩展命令模式下,利用xxd命令转换为可读的十六进制
      :%!xxd
    • 扩展命令模式下,利用xxd命令转换回二进制
      :%!xxd -r
    • 实验:
      1、vim打开/bin/cat可执行二进制文件;
      2、将内容转换为可读十六进制:%!xxd

      3、再将内容转换回二进制:%!xxd -r

    六、vim 可视化模式 v

    • 允许选择的文本块
    v          <!--面向字符-->
    V          <!--面向行-->
    ctrl-v     <!--面向块-->
    
    • 可视化键与移动键(h,j,k,l.etc)结合灵活选取编辑区域


    • 突出显示的文字可被删除,复制,变更,过滤,搜索,替换等

    七、vim 多文件模式

    • 打开:vim FILE1 FILE2 FILE3 ...
    • 操作:
    :next      <!--切换至下一个文件-->
    :prev      <!--切换至前一个文件-->
    :first     <!--切换至第一个文件-->
    :last      <!--切换至最后一个文件-->
    :wall      <!--保存所有文件-->
    :qall      <!--退出所有文件-->
    :wqall     <!--保存退出所有文件-->
    

    八、vim 多窗口

    • 多文件分割
    vim -o|-O FILE1 FILE2 ...
    -o: 水平分割
    -O: 垂直分割
    在窗口间切换:ctrl+w, Arrow
    
    • 单文件窗口分割:
    ctrl+w,s     <!--split,水平分割-->
    Ctrl+w,v     <!--vertical,垂直分割-->
    ctrl+w,q     <!--取消相邻窗口-->
    ctrl+w,o     <!--取消全部窗口-->
    

    九、vim 定制工作特性

    在扩展命令模式下的修改仅对当前vim进程有效,永久有效需要修改配置文件,对系统全局有效的配置文件为/etc/vimrc,对当前用户有效的配置文件为~/.vimrc

    • 行号
    :set number 或者 :set nu         <!--显示行号-->
    :set nonumber 或者 :set nonu     <!--取消显示行号-->
    
    • 括号成对匹配
    :set showmatch 或者 :set sm         <!--匹配-->
    :set noshowmatch 或者 :set nosm     <!--取消匹配-->
    
    • 自动缩进
    :set ai       <!--启用自动缩进-->
    :set noai     <!--禁用自动缩进-->
    

    前三行每行回车后光标自动跳至行首,没有与第一行对齐;启动自动缩进后,如最后三行每行回车后光标自动与上一行对齐

    • 高亮搜索
    :set hlsearch       <!--启用高亮搜索-->
    :set nohlsearch     <!--禁用高亮搜索-->
    
    • 语法高亮
    :syntax on      <!--启用语法高亮-->
    :syntax off     <!--禁用语法高亮-->
    
    • 忽略字符的大小写
    :set ic       <!--忽略字符的大小写-->
    :set noic     <!--不忽略字符的大小写-->
    
    • 文件格式
    :set fileformat=dos      <!--启用windows格式-->
    :set fileformat=unix     <!--启用unix格式-->
    
    • 设置文本宽度
    :set textwidth=65     <!--设置文本宽度-->
    :set wrapmargin=15     <!--设置页边距-->
    

    十、vim 帮助

    :help option-list     <!--选项列表-->
    :help topic           <!--按照关键词搜索帮助文档-->
    vimtutor              <!--vim指导手册-->
    

    相关文章

      网友评论

        本文标题:20170727 vim编辑器

        本文链接:https://www.haomeiwen.com/subject/pyiakxtx.html