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

Ein*_*Ein 5 vim insert

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

两个相关问题:

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

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

rom*_*inl 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>以避免插入模式是一种非常糟糕的策略.我不知道你是做什么的,但如果你这样做,你应该尽快重新考虑这种方法.

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


ZyX*_*ZyX 6

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