MENU

VIM 常用命令

August 18, 2018 • 分享

采用的 vim 配置为 k-vim。

原图下载

  • qa = 用注册符 a 开始录制一个宏

  • q = 结束录制

  • @a = 回放注册符 a 的宏

插入模式

  • i = 在光标位置插入

  • a = 在光标位置插入

  • I = 在行首插入

  • A = 在行尾插入

  • o = 光标下方插入一行

  • O = 光标上方插入一行

  • Esc = 返回普通模式

  • Ctrl + p = 向上选择候选词

  • Ctrl + n = 向下选择候选词

因为配置了箭头的全局快捷键,所以比较少用

文本编辑

  • r = 替换单个字符(不进行插入模式)

  • J = 将下一行连接到本行末尾

  • cc = 删除本行并进入插入模式编辑

  • cw = 删除当前单词(从当前光标开始)并进入插入模式

  • caw = 删除当前单词(整个单词)并进入插入模式

  • c0 = 删除从行首到光标前的字符,并进行插入模式(自定义cH)

  • c$ = 删除从光标到行尾的字符,并进行插入模式(自定义cL)

  • s = 删除当前光标字符并进行插入模式

  • S = 删除当前光标所在行并进行插入模式

  • p = 粘贴文本(“” 或 “0 寄存器中的内容)

  • xp = 交换当前光标下字符与其后字符位置

  • ddp = 交换当前行与下一行

  • yyp = 创建当前行的副本

  • u = 撤消

  • Ctrl + r = 恢复(与 u 相反)

  • . = 重复最近命令

  • ~ = 改变当前字符大小写

  • g~aw = 变换当前单词大小写

  • gUaw = 将当前单词转为大写

  • guaw = 将当前单词转为小写

  • :m + n = 将当前行向下移动 n 行(:m+ 为向下移动一行)

  • :m - 2 = 当前行向上移动一行

  • >> = 向右缩进

  • << = 向左缩进

  • == 自动缩进

剪切粘贴(删除 = 剪切)

  • dd = 删除当前行(剪切)

  • dw = 删除当前单词(daw)

  • x = 删除当前单词

  • X = 删除前一个字符

  • D = 删除到行尾

  • yy = 复制当前行

  • 2yy = 复制从当前行开始的 2 行 (nyy)

  • yw = 复制当前单词(yaw)

  • y$ = 复制从当前光标到行尾字符

  • p = 复制到当前光标 / 当前行 之后

  • P = 复制到当前光标 / 当前行 之前

  • 复制寄存器


    • “ayy = 复制当前行的内容,标记为 a

    • “ap = 粘贴标记为 a 的寄存器内容

    • :reg “a = 查看标记为 a 的寄存器内容

    • :reg = 查看所有寄存器内容

    • qaq = 删除标记为 a 的寄存器内容

tips:大写字母为追加内容,小写字母为覆盖内容。

多文件编辑

  • :e filename = 在新 buffer 中编辑 filename

  • :bn = 下一个 buffer

  • :bd = 删除 buffer(关闭文件)

  • :sp filename = 在新 buffer 中 开 filename 文件并水平分隔窗口

  • :vs filename = 在新 buffer 中 开 filename 文件并垂直分隔窗口

  • Ctrl-w 命令


    • Ctrl-w s = 水平分隔窗口

    • Ctrl-w v = 垂直分隔窗口

    • Ctrl-w w = 切换窗口

    • Ctrl-w q = 退出窗口

  • Tab 命令


    • :tabe filename = 在新 tab 中编辑 filename 文件

    • gt = 下一个 tab

    • gT = 上一个 tab

    • :tabr = 第一个 tab

    • :tabl = 最后一个 tab

    • :tabm[N] = 将当前 tab 移动到第 N 个tab 之后

退出

  • :w = 保存

  • :wq = 保存退出

  • :x = 保存退出

  • :q = 退出,未保存会失败

  • :q! = 强制退出

  • ZZ = 若无改动,直接退出,有改动则保存后退出

  • :w !sudo tee % = 用 sudo 强制保存

  • :! command = 不退出 vim,执行 Shell 命令

光标移动

  • h, i, j, k

  • 翻页


    • Ctrl + f = 上翻页

    • Ctrl + b = 下翻页

    • 推荐:Ctrl + u = 向上翻半页

    • 推荐:Ctrl + d = 向下翻半页

    • Ctrl + e = 逐行上滚

    • Ctrl + y = 逐行下滚

  • 文件内


    • 句子跳转


      • ( = 上一句,英文句号为标识
      • ) = 下一句,英文句号为标识
    • 文件内跳转


      • gg = 到达第一行

      • G = 到达最后一行

      • :n = 跳到第 n 行

      • gd = 高亮相同字符(可用于寻找函数定义等,:nohl 取消高亮)

    • 文件内单词跳转


      • * = 读取光标下单词,并到达下一处(n 为向上跳,N 为向下跳)

      • # = 读取光标下单词,并到达下一处(N 为向上跳,n 为向下跳)

    • 光标跳转


      • g; = 返回上次修改过的位置

      • g, = 与 g; 对应,跳回

      • `. = 与 g; 相同,不过只能跳转一次

      • `` = 在现在光标位置与最后编辑位置间跳转

      • Ctrl + o = 返回上个光标位置(非光标移动)

      • Ctrl + i = 返回下个光标位置(非光标移动)

    • % = 跳到匹配的符号

  • 行内


    • 行内单词跳转


      • 推荐:w = 跳到下一单词(包含标点符号)的开头

      • 推荐:e = 跳到下一单词(包含标点符号)的结尾

      • 推荐:b = 与 w 反向(向前跳跃)

      • 推荐:ge = 与 e 反向(向前跳跃)

      • W = 跳到下一单词(不包含标点符号)的开头

      • E = 跳到下一单词(不包含标点符号)的结尾

      • B = 与 W 反向(向前跳跃)

      • gE = 与 E 反向(向前跳跃)

    • 行内跳转


      • 0 = 跳到行首(自定义为 H)

      • $ = 跳到行尾(自定义为 L)

      • ^ = 行第一个非空字符

    • 行内搜索


      • 推荐:fx = 移动光标到本行下一个出现字符 x 的位置

      • 推荐:Fx = 移动光标到本行上一个出现字符 x 的位置

      • tx = 移动光标到本行下一个出现字符 x 的前一字符位置

      • Tx = 移动光标到本行下一个出现字符 x 的后一字符位置

      • ; = 重复上一个 f 或 t 命令

      • , = 逆向重复上一个 f 或 t 命令

    • 跳转插件:vim-easymotion

查找替换

  • /pattern = 向后查找 pattern

  • ?pattern = 向前查找 pattern

  • n = 当前方向重复查找

  • N = 当前反方向重复查找

  • :%s/old/new/g = 全局范围内用 new 替换 old

  • :n1, n2/old/new/g 在 n1 到 n2 行内用 new 替换 old

视图模式

  • 标记文本


    • v = 开启视图模式

    • V = 开启行视图模式

    • Ctrl-v = 开启块视图模式

    • o = 移动到标记区块的对角

    • aw = 标记一个单词

    • O = 移动到标记区块的另一个角(同行)

    • ab = 标记 () 的内容(包括符号)

    • aB = 标记 {} 的内容(包括符号)

    • ib = 标记 () 内的内容(不包括符号)

    • iB = 标记 {} 内的内容(不包括符号)

  • 命令


    • > = 向右移动

    • < = 向左移动

    • ~ = 转换大小写

    • y = 复制

    • d = 删除(剪切)

Last Modified: January 11, 2019
Archives QR Code
QR Code for this page
Tipping QR Code
Leave a Comment