zoukankan      html  css  js  c++  java
  • 4-2 编辑器之神--vim

    vim

    vi:Visual editor文本编辑器
    文本:ascii,Unicode
    vim:VIsual editor iMproved
    官网:www.vim.org
    帮助网站:Vimhelp.org

    vim -d FILE1 FILE2                      #对比两个文件
    vim +$ FILE                             #打开文件后,让光标处于第$行的行首
    vim +/PATTERN FILE                      #让贯标处于第一个被PATTERN匹配到的行的行首
    vim -b FILE                             #二进制方式打开文件
    vim -m FILE                             #只读文件打开文件
    vim -e FILE                             #直接进入ex模式
    

    注意:

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

    vim的三种模式

    命令模式:默认模式,移动贯标,剪切粘贴文本等
    插入模式或编辑模式:修改文本
    扩展命令模式:保存,退出等
    Esc键:退出当前模式
    Esc键,Esc键:总是放回到命令模式

    模式转换

    命令模式-->插入模式
    i               #insert,在光标所在处输入
    I               #在当前光宝所在行的行首输入
    a               #append,在光标所在处后面输入
    A               #在当前光标所在行的行尾输入
    o               #在当前贯标所在行的下方打开一个新行
    O               #在当前光标所在行的桑放打开一个新行
    插入模式-->命令模式
    ESC
    命令模式-->扩展命令模式
    :
    扩展命令模式-->命令模式
    ESC,enter
    
    关闭文件
    扩展命令模式:
    :q              #退出
    :q!             #强制退出,丢弃做出的修改
    :wq             #保存退出
    :x              #保存退出
    命令模式:
    ZZ              #保存退出
    ZQ              #不保存退出
    
    扩展命令模式:
    按“:”进入Ex模式
    创建一个命令提示符:处于底部的屏幕左侧
    常见命令:
    w               #写(存)磁盘文件
    wq              #写入并退出
    x               #写入并退出
    q               #退出
    q!              #不存盘退出,丢弃修改内容
    r FILENAME      #读文件内容到当前文件中
    w FILENAME      #将当前文件内容写入另一个文件
    !COMMAND        #执行命令
    r!COMMAND       #读入命令的输出
    
    命令模式光标跳转:
    字符间跳转:
    h               #向左一格
    l               #向右一格
    j               #向下一行
    k               #向上一行
    @COMMAND        #跳转由@指定的个数的字符
    单词间跳转:
    w               #下一个单词词首
    e               #当前或下一单词的词尾
    b               #当前或前一个单词的词首
    @COMMAND        #由@指定一个条状的行数
    当前页跳转:
    H               #跳转至页首
    M               #跳转至页中间行
    L               #跳转至页底
    zt              #将光标所在当前行一道屏幕顶端
    zz              #将光标所在当前行一道屏幕中间
    zb              #将光标所在当前行一道屏幕底端
    行首行尾跳转:
    ^               #跳转至行首的第一个空白字符
    0               #跳转至行首
    $               #跳转至行尾
    行间移动:
    @G              #跳转至第@行
    :@              #跳转至第@行
    G               #跳转至最后一行
    1G,gg           #跳转至第一行
    句和段间移动:
    (               #上一句
    )               #下一句
    {               #上一段
    }               #下一段
    
    命令模式翻屏操作:
    Ctrl+f          #向文件尾部翻一屏
    Ctrl+b          #向文件首部翻一屏
    Ctrl+d          #向文件尾部翻半屏
    Ctrl+u          #向文件首部翻半屏
    
    命令模式操作(将删除或复制结合跳转实现快捷功能):
    删除命令:
    d               #删除命令,可结合贯标跳转字符,实现范围删除
    d$,D            #删除到行尾
    d^              #删除到非空行首
    d0              #删除到行首
    dw              #删除到下一个单词词首
    de              #删除到下一个单词词尾
    db              #删除到当前或前一个单词词首
    dd              #删除所在的行
    @dd             #从当前行开始,删除@行
    复制命令(y,yank):
    y               #复制,行为相似于d命令
    y$              #复制到行尾
    y0              #复制到行首
    y^              #复制到非空行首
    ye              #复制到下一个单词词尾
    yw              #复制到下一个单词词首
    yb              #复制到当前或前一个单词词首
    yy              #复制当前行
    @yy             #从当前行开始,复制@行
    Y               #复制整行
    粘贴命令(p,paste):
    p               #缓冲区存的如果为正航,则粘贴当前贯标所在的行下方;否则则粘贴至当前贯标所在处的后面
    P               #缓冲区存的如果为整行,则粘贴当前贯标所在行的上方;否则则粘贴在当前光标所在处的前面
    改变命令(c,change):
    c$
    c^
    c0
    cb
    ce
    cw
    cc              #删除当前行并输入新内容,相当于S
    @cc             #从当前行开始删除@行,并且还成插入模式
    C               #删除当前贯标到行尾,并切换成插入模式
    查找:
    /PATTERN        #从单签光标所在处向文件尾部查找
    ?PATTERN        #从当前光标所在处向文件首部查找
    n               #下一个,与命令方向相同
    N               #下一个,与命令方向相反
    撤销更改:
    u               #撤销最近的更改
    @u              #撤销之前的@次更改
    U               #撤销光标落在这行后所有慈航的更改
    Ctrl+r          #重做最后的“撤销”更改
    .               #重复前一个操作
    @.              #重复前一个操作@次
    常见命令:
    100iCHAR[ESC]   #粘贴CHAR100次
    <start position><command><end position>         #先指定其实位置,输入命令,在指定结束位置
    yi(             #光标在()之间,则复制()之间的内容
    vi[             #光标在[]之间,则选中[]之间的内容
    dtx             #删除字符知道遇见光标后的第一个x字符
    ytx             #复制字符知道遇见光标后的第一个x字符
    di"             #光标在""之间,则删除“”之前的内容
    

    vim的寄存器

    • vim由26个命名寄存器和1个无命名寄存器,常存放不同的剪贴板内容,可以不同会还间共享
    • 寄存器名称a,b,...,z格式:"寄存器 放在数字和命令之间,例如:
      • 3"tyy表示复制3行到t寄存器中
      • "tp表示将t寄存器内容粘贴
    • 未指定,将使用无命名寄存器
    • 有10个数字寄存器,用0,1,...,9表示,0存放最近复制的内容,1存放最近删除内容。当新的文本变更和删除时,1庄村到2,2转存到3,以此类推,数字寄存器不能再不同绘画间共享

    vim标记和宏(macro)

    qa              #录制宏a,a为宏名称
    q               #停止录制宏
    @a              #执行宏a
    @@              #重新执行上次执行的宏
    ma              #将当前位置标记为a,26个字母均可做标记,mb/mc等等
    'a              #跳转到a标记的位置,使用的文档内标记方法,文档中跳跃编辑时很有用
    

    扩展命令模式

    地址定界

    ;start_pos,end_pos
    @               #具体第@行,例如2表示第2行
    @,@             #从左侧@表示的其实行,加上右侧@表示的行数   示例:2,+3 表示2到5行
    .               #当前行
    $               #最后一行
    .,$-1           #当前行到倒数第二行
    %               #全文,相当于1,$
    /pattern/       #匹配pattern的行
    /pat1/,/pat2/   #从第一次被pat1模式匹配到的澳航开始,一直到第一次配pat2匹配到的行结束   #,/pat/  /pat/,$
    使用方式:后跟一个编辑命令
    d
    y
    w file:将范围内的行另存至指定文件中
    r file:再指定位置插入指定文件中的所有内容
    

    查找并替换

    在扩展命令模式下完成查找替换操作

    格式:s/要查找的内容/替换为的内容/修饰符
    要查找的内容:可使用模式
    替换为的内容:不能使用模式,但可以使用1,2,等后巷引用符号;还可以使用"&"引用前面查找时查找到的整个内容

    修饰符:

    i               #忽略大小写
    g               #全局替换,默认情况下,每一行至替换第一次出现
    gc              #全局替换,每次体寒奇拿询问
    

    查找替换中的分隔符/可替换为其他字符

    s@/etx@/var@g
    s#/boot#/#i
    

    编辑二进制文件

    以二进制方式打开文件:

    vim -b binaryfile

    扩展命令模式下,利用xxd命令转换为刻度的十六进制

    :%!xxd

    插入模式下,编辑二进制文件:
    扩展命令模式下,利用xxd命令转换回二进制

    :%!xxd -r

    保存退出

    可视化模式

    允许选择的文本快

    v               #面向字符
    V               #面向行
    Ctrl+v          #面向块
    可视化可用于与移动键结合使用
    w)}             #和跳跃键一起用
    突出显示的文字可悲删除,复制,变更,过滤,搜索,替换等
    

    使用多个创库

    多文件分割:

    vim -o|-O FILE1 FILE2
    -o              #水平分割
    -O              #垂直分割(vim only)
    Ctrl+w,方向键   #在窗口间切换
    

    单文件窗口分割:

    Ctrl+w,s        #split,水平分割
    Ctrl+w,v        #vertical,垂直分割
    Ctrl+w,q        #取消相邻窗口
    Ctrl+w,o        #取消全补窗口
    :wqall          #全部保存退出
    

    定制vim的工作特性

    配置文件:永久有效

    全局:/etc/vimrc
    个人:~/,vimrc

    扩展命令模式:当前vim进程有效

    1. 行号
      显示:setnumber,简写set nu
      取消显示:set nonumber,简写:set nonu
    2. 忽略字符的大小写
      启动:set ignorecase,简写set ic
      不忽略:set noic
    3. 自动缩进
      启动:set autoindent,简写set ai
      禁用:set noai
    4. 复制保留格式
      启用:set paste
      禁用:set nopaste
    5. 显示Tab和换行符^I和$显示
      启动:set list
      禁用:set nolist
    6. 高亮搜索
      启用:set hlsearch
      禁用:set nohlsearch
    7. 语法高亮
      启用:syntax on
      禁用:syntax off
    8. 文件格式
      启用windows格式:set fileformat=dos
      启用unix格式:set fileformat=unix
      简写:set ff=dos|unix
    9. 设置文本宽度
      set textwidth=65(vim only)
      set wrapmargin=15
    10. 设置光标所在行的标识线
      启用:set cursorline,简写:set cul
      禁用:set nocursorline

    了解更多

    #set帮助
    :help option-list  
    :set
    :set all
    #vi/vim内置帮助
    :help
    :help topic
    Use:q to exit help
    #vim练习程序
    vimtutor
    
  • 相关阅读:
    分页类
    验证码扭曲类
    model 概念(笔记)
    php单例模式
    php 无限极分类查找家谱树
    数组的合并
    无限极分类之查找子孙树
    android xml中的xliff属性
    android 悬浮覆盖状态栏的相关建议
    【jzoj】20190323比赛总结
  • 原文地址:https://www.cnblogs.com/kjalbert/p/11594428.html
Copyright © 2011-2022 走看看