美文网首页
Vim 编辑器

Vim 编辑器

作者: 镇虎 | 来源:发表于2020-12-24 12:59 被阅读0次

    vim 编辑器

    初学 vi/vim,应该通过学习附属 vim 安装的 vimtutor (或 vimtutor zh)来对 vim 各方面有个初步的了解。

    以下节选可在较多环境下使用的功能,应该根据自己的需求做相应的整理。

    Vim 的几种模式

    普通模式:可以使用操作符、快捷键命令。在其它模式下按 ESC 可以返回普通模式。
    底部命令模式:可在普通模式下按冒号(:)进入,以执行命令或临时配置 vim。
    替换模式:在普通模式下,按 R 等进入。
    插入模式:在普通模式下,按 i 等进入。
    可视模式:在普通模式下,按 v 等进入,以区块高亮选择文本。
    

    普通模式(Normal mode)

    光标定位或操作符作用域

    h,j,k,l 左、下、上、右移。
    
    {[ home | 0 | ^ ] | [ end | $ ]}          行首/行尾;
    { gg | G }      首行/末行;
    
    { w | W } 右移一个单词/字符串位,光标停在首字符;
    { e | E } 右移一个单词/字符串位,光标停在尾字符;
    { b | B } 左移一个单词/字符串位,光标停在首字符;
    
    { f|tchar } 移动到当前行 char 字符位/前,再输入分号 ; 以移动到下一个匹配位。
    { F|Tchar } 同上,只是反向。
    
    { H | M | L } 移动到屏幕页首/页中/页尾。
    [ nG | ngg ] 移动到第 n 行。
    

    注:可在以上作用域前指定数字倍数,但改变、剪切和复制操作符必须在最前面。
    操作符 数字倍数 作用域 (字段间没有空格)

    ctrl + G 显示光标所在位置及文件状态。


    可视模式(Visual mode):

    普通模式按 v 进入可视模式, 高亮选取文本。
    按 V,高亮按行选取。
    按 ctrl + v,高亮按块选取。

    文本块

    {aw | as | ap } 一个词/一句/一段

    {ab | ib | aB | iB} 小括号块/不含括号/花括号块/不含括号。

    可视模式 [数字倍数 作用域] | [文本块] 操作符 (字段间没有空格)

    v motion :w filename 保存所选行到指定文件。


    插入模式(Insert mode)

    i | I | a | A 在光标处/行首/光标后/行尾插入。
    o | O 在下/上一行插入。


    操作符(Operator)

    改变/剪切/复制/粘贴:

    c、d、y 分别为改变、剪切和复制操作符。

    操作符 [数字倍数 作用域] | [文本块](字段间没有空格)

    { p | P } 粘贴到所在行下/上。

    { yy | [ dd | D ]} 复制/删除(剪切)所在行。
    [n]dd 删除(剪切)n 行。


    替换模式(Replace mode)

    r 替换光标处的字符,同样支持汉字。
    R 进入替换模式,按 esc 回到普通模式。


    撤消与重做(Undo and redo)

    U 取消在当前行中所作的所有改动。
    [n]u 取消 一/n 个改动。
    :undo 5 撤销 5 个改变。
    :undolist 你的撤销历史。
    . 重复
    ctrl + r 反撤销。
    :earlier 6m 回到6分钟前。
    :later 19s 前进19秒。
    

    底部命令模式(Command at bottom mode)

    匹配搜索

    /keyword 向后查找 keyword, n 下一个; N 前一个。
    ?keyword 向前查找 keyword, n 下一个; N 前一个。
    % 光标停在单个任意括号字符下,按 % 查找配对的括号。
    { * | # } 在任何单词下按 */# 号,则向后/前查找此单词。
    

    匹配替换

    :s/old/new 在当前行用 new 替换第一个 old。
    :s/old/new/g 在当前行用 new 替换所有的 old。
    :n1,n2s/old/new/g 在 n1 和 n2 用 new 替换所有的 old。
    :%s/old/new/g 用 new 替换文件中所有的 old。
    :%s/old/new/gc 同上,但每次替换都提示确认。
    
    :%s/^/#/g 在每一行的行首插入 #,^ 表示行首。
    :%s/$/66/g 在每一行的行尾插入 66,$ 表示行尾。
    

    综合命令

    :! command 执行 Linux 命令。
    :m,nw !cmd 将文件的 m 行到 n 行之间的内容做为命令输入执行命令。

    :m,nd 剪切 m 行到 n 行的内容。

    :r filename 在光标位置下插入指定文件的内容。
    :r !command 在光标位置下插入命令的输出。

    :e [filename]| :e! [filename] 重新载入文件/强制重新载入。

    :pwd 显示 vim 当前工作目录。
    :cd path 改变 vim 工作目录。

    文档保存/退出

    {:w | :w filename} 保存/按指定文件名保存。
    {:q | :q!} 退出/强行退出。
    {:wq | :wq!} 保存并退出/强行退出。
    

    常用设置:

    :{set nu[mber] | set nonu[mber]} 开启/关闭显示行号。
    :{set hlsearch | set nohlsearch} 开启/关闭高亮搜索。
    :{syntax on | syntax off} 开启/关闭语法高亮。
    :{set list | set nolist} 开启/关闭显示非打印字符。
    :{set si | set nosi} 开启/关闭智能缩进。
    :{set ai | set noai} 开启/关闭自动对齐。
    :{set ic | noic} 开启/关闭忽略大小写。
    :set autochdir 根据所编辑文件的位置自动切换 vim 工作目录。
    

    多窗口

    :sp[lit] file - 在新缓存中打开指定文件并分割窗口。
    :vs[plit] file - 在新缓存中打开指定文件并垂直分割窗口。
    Ctrl + ws - 水平分割窗口。
    Ctrl + wv - 垂直分割窗口。
    Ctrl + ww - 切换窗口。
    Ctrl + wq - 退出窗口。
    Ctrl + wx - 与下一个窗口切换位置。
    Ctrl + w= - 让所有窗口的高和宽相等。
    

    寄存器(Register)

    用寄存器来保存或调用寄存器中的内容来应用剪切、复制或粘贴。

    :reg 显示所有寄存器的内容。
    
    a-z 为有名寄存器
    
    "a-z 在剪切、复制或粘贴前都可以使用 a-z 有名寄存器。
    "A-Z 用大写字母 A-Z 表示在相应的寄存器中追加内容。
    
    "" 默认寄存器,每次使用 c,d,y,p 的内容。
    
    0-9 为无名寄存器。
    
    "0 保存最新复制的内容。
    "1-9  c,d,y,p 操作记录序列。
    
    ".,"%,":,"# 只读寄存器。
    
    ". 最后插入的文本。
    "% 当前文件名。
    ": 最近执行的命令。
    "# 替代的文件名。
    
    其它寄存器
    
    "- 最近小于一行的删除。
    "/ 最近的搜索匹配。
    "= 最近的表达式扩展。
    "_ 黑洞寄存器,使用此寄存器的内容将不会被记录。
    "* 系统剪贴版(X11 primary)。 
    "+ 系统剪贴板(X11)。
    

    排版

    基本排版

    << 向左缩进一个 shiftwidth
    >> 向右缩进一个 shiftwidth
    :ce(nter) 本行文字居中
    :le(ft) 本行文字靠左
    :ri(ght) 本行文字靠右
    gq 对选中的文字重排,即对过长的文字进行断行
    gqq 重排当前行
    gqnq 重排 n 行
    gqap 重排当前段
    gqnap 重排n段
    gqnj 重排当前行和下面 n 行
    gqQ 重排当前段对文章末尾
    J 拼接当前行和下一行
    gJ 同 J,不过合并后不留空格。
    

    拼写检查

    :set spell 开启拼写检查功能。
    :set nospell 关闭拼写检查功能。
    ]s 移到下一个拼写错误的单词。
    [s 反向。
    z= 显示一个有关拼写错误单词的列表。
    zg 指示拼写检查器该单词拼写正确。
    zw 指示拼写检查器该单词拼写错误。
    

    自动补全:

    在输入模式下输入部分字符然后输入
    ctrl + x 和 ctrl + n 用正在编辑的文件的内容作为关键字补齐。
    ctrl + x 和 ctrl + f 以当前目录内的文件名作为关键字补齐。
    ctrl + x 和 ctrl + o 以扩展名作为语法填充,以 vim 内建的关键词补
    齐。(必须要写对文件扩展名,比如 .html, .php 等等)
    

    相关文章

      网友评论

          本文标题:Vim 编辑器

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