Skip to content
On this page

总结

  • 逐字逐行
    • j:向下一行
    • k:向上一行
    • h:向左一个字符
    • l:向右一个字符
    • 0:移至行首。
    • $:移至行尾。
    • ^:移动至行首第一个非空字符
    • g_:移动至行尾最后一个非空字符,但行尾最后严禁多余的空格。
  • 逐词移动
    • w:移动至下一个 word 首部
    • W:移动至下一个 WORD 首部
    • b:移动至上一个 word 首部
    • B:移动至上一个 WORD 首部
    • e:移动至下一个 word 尾部
    • E:移动至下一个 WORD 尾部
  • 查词移动
    • f<char>:移动至下个字母位置。如 fa,则是移动至下一个字母 a 的位置。
    • F<char>:移动至上个字母位置。如 Fa,则是移动至上一个字母 a 的位置。
    • t<char>:移动至下个字母位置前一个字符。
    • T<char>:移动至上个字母位置后一个字符。
    • ;:重复上次查词移动操作
  • 高频移动
    • G:移至最后一行
    • gg:移至首行
    • <n>G:移至第 n
    • :n<br>:移至第 n 行。<br> 为回车
    • <ctrl-o>:移至上次光标出现位置
    • <ctrl-i>:移至下次光标出现位置
    • '': 上次切换处, 类似 Ctrl + o
    • '.: 上次编辑处
    • *:光标选中词匹配下一个;
    • #:光标选中词匹配上一个;
    • gd: 前往定义处
    • m<char>: 标记,随后使用 '<char> 就可以跳转到标记处

1. 前提提要、场景

vim 中在 insert mode 模式下是无法移动光标的,只能在 normal mode 下移动。除了 hjkl 移动光标,还有许多快捷的方式移动光标

2. 逐字逐行

  • j:向下一行
  • k:向上一行
  • h:向左一个字符
  • l:向右一个字符
  • 0:移至行首。
  • $:移至行尾。
  • ^:移动至行首第一个非空字符
  • g_:移动至行尾最后一个非空字符,但行尾最后严禁多余的空格。

Tip:小技巧,在 vim 中通过命令 :set list,可显示非空字符等特殊字符。如果取消显示,可使用 :set nolist。:set number 显示行号

3. 逐词移动

vim 关于词的两个概念:

  • word:数字、字符、下划线构成的词。比如 yarn.lock 是三个 word。
  • WORD:非空字符构成的词。比如 yarn.lock 是一个 WORD。

快捷键:

  • w:移动至下一个 word 首部
  • W:移动至下一个 WORD 首部
  • b:移动至上一个 word 首部
  • B:移动至上一个 WORD 首部
  • e:移动至下一个 word 尾部
  • E:移动至下一个 WORD 尾部

4. 查词移动

有时,直接定位到某个字符更加方便。以下命令只对当前行有效

  • f<char>:移动至下个字母位置。如 fa,则是移动至下一个字母 a 的位置。
  • F<char>:移动至上个字母位置。如 Fa,则是移动至上一个字母 a 的位置。
  • t<char>:移动至下个字母位置前一个字符。
  • T<char>:移动至上个字母位置后一个字符。

如此之外,还有一个 ;,可重复上次查词动作。比如,想查找字符 a 第三次出现位置,除了使用 3fa,还可以使用 ;;

  • ;:重复上次查词移动操作

5. 高频移动

工作中常见的较为高频的移动操作。

  • G:移至最后一行
  • gg:移至首行
  • <n>G:移至第 n
  • :n<br>:移至第 n 行。<br> 为回车
  • <ctrl-o>:移至上次光标出现位置
  • <ctrl-i>:移至下次光标出现位置
  • '': 上次切换处, 类似 Ctrl + o
  • '.: 上次编辑处
  • *:光标选中词匹配下一个;
  • #:光标选中词匹配上一个;
  • gd: 前往定义处
  • m<char>: 标记,随后使用 '<char> 就可以跳转到标记处