跳到主要内容

Vim mode — 限制事项

表格相关​

  • w/b/e 的计数在跨越单元格或行边界时会停止:即使加上像 5w 这样的计数,一旦跨越单元格或行的边界,剩余的计数就会失效。
  • gj/gk 的计数在跨越行边界时会在途中停止:同样,像 5gj 这样的计数在同一个单元格内跨越多个显示行时可以正常工作,但一旦跨越行边界或进出表格,剩余的计数就会失效。
  • 带计数的 $ 不会跨越表格的行:3$ 不会像在表格外一样移动到下方第几行的行尾,而是停留在当前单元格内。
  • 从普通文本进入表格时,通常会进入最左侧的单元格:使用 j/k/gj/gk 从表格正上方(或正下方)的普通文本行进入表格时,通常会进入该行最左侧的单元格。
    • 因为光标落点之前的实时预览表格无法返回逐字符的位置信息,所以没有依据判断应该进入第几个单元格。插件会尽量在最左侧单元格的范围内保持光标的横向位置,但不会进入第二个及以后的单元格(即使尽可能靠右,也只会到达最左侧单元格的末尾)。进入表格前的光标横向位置会被记住,之后上下移动时也会保持这个横向位置。
    • 但有一个例外:如果在用 $ 移动到行末(吸附状态)之后立即进入表格,则会进入最右侧的单元格。(详情请参阅命令参考中的 $ 条目。)
  • 用 gj/gk 脱出表格落在检查框行(- [ ] ...)上时,可能会导致接下来的 gj/gk 横向位置向左偏移:检查框行在实时预览中会被渲染为比实际字符数更窄的控件,但记忆、还原横向位置的机制没有考虑到这种显示上的缩短,因此产生了偏移。除检查框以外,包含同样会被渲染得更窄的控件的其他行也可能出现同样的情况。

设置与其他插件的关系​

  • 开启设置开关后,会覆盖你为相同按键自行设置的内容:如果你已经自定义过这些按键,那么在该开关开启期间,你的自定义设置会被覆盖。
  • 在 Leader 键为 Space 期间,无法使用 Space 单独按下时原本的动作:只要开启过一次 Table structure 或 Table navigation,Space 单独按下时原本的动作(向右移动)就会失效,直到重启 Obsidian 为止。即使关闭开关,原本的动作也不会恢复,这期间单独按下 Space 和开启时一样不会发生任何操作(不会输入空格)。如果将 Leader 键设为 \,则不受影响。详情请参阅 设置。
  • 未考虑与自行替换 Vim 表格单元格内行为的插件一起使用:本插件面向的是 Obsidian 标准的 Vim mode。

非本插件导致的问题​

  • 开启 IME(中文输入法)时,Vim 的按键输入可能会被误识别:在中文输入法启用的状态下,仅按一次 Vim 的移动键(主要是 g、j、k),也可能被误判为连续输入两次。例如,仅按一次 g 却被当作 gg 处理,j/k 会移动 2 行而不是 1 行。这是 Obsidian 内部使用的 Vim 引擎(codemirror-vim)的已知问题(issue #178),即使完全禁用本插件,在 Obsidian 标准的 Vim mode 下也会同样复现。解决方法: 在使用 Vim 的移动操作之前,先切换到英文输入模式。