vim实用高级命令

光标移动

  • 下一个当前单词:*
  • 上一个当前单词:#
  • 下一个单词第一个字符:w
  • 当前单词最后一个字符:e
  • 下一个以空白字符为分隔的单词第一个字符:W
  • 当前以空白字符为分隔的单词最后一个字符:E
  • 前一个单词第一个字符:b
  • 前一个以空白字符为分隔的单词第一个字符:B
  • 下一个特定字符之前:t+字符 till
  • 上一个特定字符之后:T+字符
  • 下一个特定字符之上:f+字符 find
  • 上一个特定字符之上:F+字符
  • 当前行最后一个字符上:$
  • 当前行最后一个非空字符上:g_
  • 当前行第一个字符上:0
  • 当前行第一个非空字符上:^
  • 第一行:gg 或 :1
  • 最后一行:G
  • 第N行: :N
  • 迅速移动到下一句开头:)
  • 迅速移动到上一句开头:(
  • 迅速移动到下一段开头:}
  • 迅速移动到上一段开头:{

滚动屏幕

  • 向下翻页:<C+f> forward
  • 向上翻页:<C+b> backward
  • 向下翻半页:<C+d> down
  • 向上翻半页:<C+u> up
  • 光标不动,向下逐行滚动:<C+e> elder
  • 光标不动,向上逐行滚动:<C+y> younger
  • 光标不动,使光标所在行翻到屏幕最上方:zt title
  • 光标不动,使光标所在行翻到屏幕最下方:zb bottom
  • 光标不动,使光标所在行翻到屏幕中间:zz
  • 使光标移动到屏幕最上方:H high
  • 使光标移动到屏幕最下方:L low
  • 使光标移动到屏幕中间:M middle

文本修改

  • d 加动作来进行删除(dd 删除整行);D 则相当于 d$,删除到行尾。
  • c 加动作来进行修改(cc 修改整行);C 则相当于 c$,删除到行尾然后进入插入模式。
  • s 相当于 cl,删除一个字符然后进入插入模式;S 相当于 cc,替换整行的内容。
  • i 在当前字符前面进入插入模式;I 则相当于 ^i,把光标移到行首非空白字符上然后进入插入模式。
  • a 在当前字符后面进入插入模式;A 相当于 $a,把光标移到行尾然后进入插入模式。
  • o 在当前行下方插入一个新行,然后在这行进入插入模式;O 在当前行上方插入一个新行,然后在这行进入插入模式。
  • r 替换光标下的字符;R 则进入替换模式,每次按键(直到 )替换一个字符。
  • u 撤销最近的一个修改动作;U 撤销当前行上的所有修改。
  • gU gu 使用v选中字符后,输入gU或gu可使选中文本变成大写或小写

文本选择

  • i: 如:di), 删除()内所有内容,不包括()
  • a: 如:ca", 修改""内包括""在内的所有内容
  • 用v选中后
    • < >, 左右缩进
    • = 自动缩进
    • J 内联成一行
  • [C-v], 选中多行文本
    • 用A或I插入文本,输入ESC,会在选中的多行文本重复执行相同插入文本操作

重复执行

  • ; 重复最近的字符查找(f、t 等)操作
  • , 重复最近的字符查找操作,反方向
  • n 重复最近的字符串查找操作(/ 和 ?)
  • N 重复最近的字符串查找操作(/ 和 ?),反方向
  • . 重复执行最近的修改操作

多文件操作

  • :args 列出打开文件列表
  • :n 打开下一个文件
  • :N 打开上一个文件
  • :ls 列出缓冲区列表
  • :bnext 切换到下一个缓冲区
  • :bprev 切换到前一个缓冲区
  • :b 序号 切换到对应序号的缓冲区
  • [C-^] 在最近编辑的文件之间切换Aug 16, 2020S

多窗口操作

  • :sp 或 [C+w]s 水平拆分
  • :vs 或 [C+w]v 垂直拆分
  • [C+w]w 窗口切换
  • [C+w]c 关闭窗口,最后一个窗口无效
  • [C+w]q 退出窗口,最后一个窗口退出整个vim
  • [C+w]= 平均调整每个窗口大小
  • :tabnew 新建标签页
  • :gt, :gT 切换标签页