Vim的'(插入)VISUAL'模式?

时间:2013-04-24 22:47:15

标签: vim insert

从插入模式开始,可以通过 CTRL + O v 输入“(insert) VISUAL”模式。这进入可视模式,但在vim中显示为“(insert) VISUAL”,从此模式按 Esc 会返回插入模式,而不是正常模式。 “(insert) VISUAL”模式也是由插入模式中的移位箭头键输入的。

两个相关问题:

  1. 此特殊模式似乎没有太多文档。有没有简单的方法来搜索有关它的信息? (编辑:我知道 CTRL + O 通常会做什么。与视觉模式的交互似乎很特别。第一段是最简单的方式来引用什么这个模式是第一位的,因为我不知道它的可搜索名称。)

  2. 如何可靠地编写vmap映射?也就是说,是否有一种一致的方式来保持视觉模式并最终进入正常模式?或者始终以插入模式结束?

4 个答案:

答案 0 :(得分:14)

插入模式下,<C-o>允许您执行普通模式命令,而无需离开插入模式。 Vim尝试使用(insert)指示新状态。由于您现在暂时处于正常模式,因此点击v会使您进入可视模式,而Vim再次尝试使用{{1}来指示新状态}。 Vim处于这种状态只是因为执行的命令序列,并且正如其他人所指出的那样,行为被记录在案。此时,(insert) VISUAL会让您回到插入模式,这是正常的,因为这是您的原始模式。

对Vim有更深入理解的人可能会告诉你是否有一种可靠的方式来<Esc>来自normal - &gt; insert - &gt; (normal)但我会说整个想法听起来很可疑。

正确用法是:

  1. 正常模式执行操作
  2. 输入插入模式以“插入”某些内容
  3. 退出插入模式以返回正常模式
  4. 正常模式下执行更多操作
  5. 输入 visual 模式
  6. visual 模式进行操作
  7. 退出可视模式以返回正常模式
  8. 基本上,您不应该远离正常模式visual

    我无法想象在<Esc>之后使用v有任何意义的情况。

    使用Vim的最佳和首选方法是尽可能远离 insert 模式。使用<C-o>避免离开插入模式是一种非常糟糕的策略。我不知道你是做什么的,但如果你这样做,你应该尽快重新考虑这种方法。

    但是我怀疑你正在尝试做一些别的事情,不管怎样,你认为我们不需要知道。

答案 1 :(得分:6)

关于第二个问题:您可以使用<C-\><C-n>从任何其他模式切换到普通模式。没有命令可以通过这种方式可靠地切换到可视或插入模式,但是如果您只需要在视觉上切换到正常模式就足够了。请注意,大多数可视模式映射都在i<C-o>v特殊模式下工作,无需修改。

答案 2 :(得分:1)

它记录在:h Operator-pending,低于:h mode-switching的记录。可视模式的映射也适用于(插入)可视模式。有关模式映射的评论,请参阅:h map-modesvmap会针对视觉模式和选择模式进行映射,xmap将仅映射视觉但不映射,而smap将仅映射选择但不映射。通常,您应该使用这些映射命令的noremap版本来避免意外行为。

答案 3 :(得分:0)

关于第一个问题。

插入模式下的

CTRL + O 执行一个命令,然后退出回插入模式。见:h i_CTRL-O

关于第二个问题。

我认为你没有可靠的方式退出到某种模式。我认为最可靠的方式是从你想要结束的模式开始。