VIM

单行内移动

单行单词为单位移动

  • e:移动到当前单词(即程序变量)的尾部
  • E:移动到当前单词的最后一个字母(即空格分割的单词)的尾部
  • b:移动到这个单词(即程序变量)的头部
  • B:移动到这个单词(即空格分隔的单词)的头部
  • w:移动到下一个单词(即程序变量)的头部
  • W:移动到下一个单词(即空格分隔的单词)的头部

image.png

单行特殊位置移动

  • %: 匹配括号移动,包括 (, {, [,需要把光标先移到括号上
  • 和#: 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(是下一个,#是上一个)
  • 0 → 到行头
  • ^ → 到本行的第一个非 blank 字符
  • $ → 到行尾
  • g_ → 到本行最后一个不是 blank 字符的位置。
  • fa → 到下一个为 a 的字符处,你也可以 fs 到下一个为 s 的字符。
  • t, → 到逗号前的第一个字符。逗号可以变成其它字符。
  • 3fa → 在当前行查找第三个出现的 a。
  • F 和 T → 和 f 和 t 一样,只不过是相反方向,通过,;返回上次查找和再次查找。

image.png

区域选择 ai

在 visual 模式下,这些命令很强大,其命令格式为aiaction 可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择)。object 可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:”、 ‘、 )、 }、 ]。假设你有一个字符串 (map (+) (“foo”)).而光标键在第一个 o 的位置。

  • vi” → 会选择 foo.
  • va” → 会选择 “foo”.
  • vi) → 会选择 “foo”.
  • va) → 会选择(“foo”).
  • v2i) → 会选择 map (+) (“foo”)
  • v2a) → 会选择 (map (+) (“foo”))
  • image.png

    大范围移动

  • NG → 跳到第 N 行(:N也是可行的)

  • gg → 跳到第一行
  • G → 跳到最后一行
  • → 向上跳半页(up)
  • → 向下跳半页(down)
  • → 向前跳一页(front)
  • → 向后跳一页(back)

    块操作(即多光标)

    块操作: ,典型的操作: 0 I— [ESC]

  • ^ → 到行头

  • → 开始块操作
  • → 向下移动 (你也可以使用 hjkl 来移动光标,或是使用%,或是别的)
  • I— [ESC] → I 是插入,插入“—”,按 ESC 键来为每一行生效。在 Windows 下的 vim,你需要使用 而不是 是拷贝剪贴板。

    杂项

  • → 重做

  • u → 撤销
  • . → 重复上一次命令
  • n/N→重复查找的上一个单词或下一个单词
  • →代码提示