vim

@20190323 新版功能: 新建,编辑及插件

编辑操作

模式

  • Normal 模式:按下 Esc 键回到正常(Normal)模式

定位

  • 移动

    h
    j
    k
    l
  • 跳转

    • 可以用于编辑操作的跳转动作
    w 从当前光标位置到下一个单词起始处,不包括它的第一个字符。
    e 从当前光标位置到单词末尾,包括最后一个字符。
    b 从当前光标位置到单词起始,包括第一个字符。
    ^ 从当前光标位置到当前非空白字符行首。
    0 从当前光标位置到当前行首。
    $ 从当前光标位置到当前行末。
    #$ 从当前光标位置到下第 # 行末。
    gg 跳转到文件第一行。
    G 到文件的底部。
    % 匹配 {},(),[] 之间跳转。
    H 从当前光标位置到当前屏幕的顶部。
    M 从当前光标位置到当前屏幕的中部。
    L 从当前光标位置到当前屏幕的底部。
    #H 跳转到当前屏的第 # 行。
    #L 跳转到当前屏的到数第 # 行。
    ( 跳转到当前的段首。
    ) 跳转到当前的段尾。
    { 跳转到上一个空行。
    } 跳转到下一个空行。
    [{ 跳转到目前区块开头。
    ]} 跳转到目前区块结尾。
    zt 设置当前光标位置为屏顶。
    zz 设置当前光标位置为屏中。
    zb 设置当前光标位置为屏底。
    :# 跳转到第 # 行。
    #G 跳转到第 # 行。
    + b 向后翻一页。
    + f 向前翻一页。
    + u 向后翻半页。
    + d 向前翻半页。
    + e 向下滚动一行。
  • 选择

    V 选择一行。
    ^ + V 矩形选择。

编辑(增删改查)

  • 新增

    i 光标前插入
    I 在当前行首插入
    a 光标后插入
    A 当前行尾插入
    O 在当前行之前插入新行
    o 在当前行之后插入新行
  • 删除

    x 删除光标所在位置的字符
    X 删除光标所在位置前的字符
    D 删除到行尾
    dd 删除光标所在行。
    • d <number> motion,其中
      • d 删除操作符
      • number 可选数字,表示后续对象的个数
      • motion 操作符的操作对象,参考 跳转动作
        • aB {} 及其内的内容。
        • iB {} 中的内容。

    例如,d$ 表示从当前光标删除到行末。

  • 修改

    r 替换光标所在位置的字符。
    R 替换光标所到之处的字符。
    C 修改到行尾。
    s 替换当前一个光标所处字符。
    c i ' 修改配对标点中的文本内容。
    d i ' 删除配对标点中的文本内容。
    y i ' 复制配对标点中的文本内容。
    v i ' 选中配对标点中的文本内容。
  • 查找:

    / 输入关键字查找。n/N 向后/前继续。
    ? 输入关键字查找。n/N 向后/前继续。
    * 在当前页向后查找同一字。
    # 在当前页向前查找同一字。
  • 复制

    Y 复制当前行到缓冲区,同 yy
    p 将最后一次复制/删除的内容置入光标之后
  • 大小写转换

    gUU 将当前行的字母改为大写。
    guu 将当前行的字母改为小写。
    gUw 将当前光标后的单词改为大写。
    guw 将当前光标后的单词改为小写。
    gggUG 全文大写。
    ggguG 全文小写。
  • 其它:

    u 撤消最后执行的命。
    U 撤消对整行的修改。
    J 当前行和下一行合并成一行。
    + r 撤消以前的撤消命令,恢复以前的操作结果
  • 退出

:w <filename> 保存当前编辑的文件
:wq <filename> 保存当前编辑的文件后退出
:q! 退出不保存
:w !sudo tee % 保存无权限的已编辑文件

窗口操作

+ w p 在两个分割窗口之间来回切换。
+ w j 跳到下面的分割窗
+ w h 跳到左边的分割窗。
+ w k 跳到上面的分割窗。
+ w l 跳到右边的分割窗。

文件状态

  • + g 显示当前编辑文件中当前光标所在行位置以及文件状态信息

插件

~/.vim/pack/bundle:

  • start: added to your runtime path when Vim starts up.
  • opt: add these to your runtime path when you need them by using the :packadd command.