6

" (insert) VISUAL" 模式可以通过CTRL+进入Ov从插入模式开始。这将进入可视模式,但(insert) VISUAL在 vim 中显示为“”,Esc从该模式按下会带您回到插入模式,而不是正常模式。“ (insert) VISUAL”模式也可以通过从插入模式移动的箭头键进入。

两个相关问题:

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

  2. 你怎么写vmap可靠地编写映射?即,是否有一致的方法可以离开视觉模式并最终进入正常模式?还是始终以插入模式结束?

4

4 回答 4

14

插入模式下,<C-o>允许您在不离开插入模式的情况下执行普通模式命令。Vim 尝试用 来指示新状态。由于你现在暂时处于正常模式,点击会让你进入可视模式,Vim 再次尝试用. Vim 处于这种状态只是因为您执行了一系列命令,并且正如其他人所指出的那样,该行为已记录在案。此时,将您重新置于插入模式是正常且预期的,因为那是您的原始模式。(insert)v(insert) VISUAL<Esc>

比我更深入了解 Vim 的人可能会告诉你是否有可靠的方法normalinsert-> (normal)->结束,visual但我想说整个想法对我来说听起来很可疑。

正确的用法是:

  1. 在正常模式下做事
  2. 进入插入模式以“插入”一些东西
  3. 退出插入模式以返回正常模式
  4. 在正常模式下做更多的事情
  5. 进入视觉模式
  6. 在视觉模式下做事
  7. 退出视觉模式以返回正常模式
  8. 等等

基本上,你不应该<Esc>正常模式更远。

我无法想象使用vafter<C-o>有任何意义的场景。

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

但我怀疑你正在尝试做一些你不知何故认为我们不需要知道的事情。

于 2013-04-25T05:30:22.720 回答
6

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

于 2013-04-25T04:12:39.787 回答
1

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

于 2013-04-25T03:59:53.580 回答
0

对于第一个问题。

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

对于第二个问题。

我认为您没有一种可靠的方法可以退出一种或另一种模式。我认为最可靠的方法是以您想要结束的模式开始。

于 2013-04-25T00:33:01.347 回答