Vim除了<'之外还用于恢复'gv'上的视觉选择。和>分数?

时间:2014-05-07 21:52:29

标签: vim selection

gv可用于使用先前的选择启动可视模式。边界存储在<>标记中。但标记仅包含文件的(行,列),这不足以恢复视觉选择区域。

例如,< =(1,0)和> =(2,2)可能意味着可视块选择区域:

XXX foo bar
XXX quux

或视觉角色选择区域:

XXX XXX XXX
XXX quux

或视线选择区域:

XXX XXX XXX
XXX XXXX

此外,还必须恢复光标位置。

Vim在哪里存储有关最后一个Visual子模式和光标位置的信息以恢复视觉选择?

3 个答案:

答案 0 :(得分:3)

  • 开始和结束位置存储在'<'>标记中。
  • 视觉模式的类型存储在别处;从Vimscript您可以通过visualmode()
  • 访问此信息
  • 光标位置存储在内部;我不认为这可以从Vimscript访问(除了gv之外)。

如果这不仅仅是一个理论问题,请告诉我们您要实现的目标。

答案 1 :(得分:1)

它仅在源代码中存储它,它不公开

答案 2 :(得分:1)

这里提出的问题是“你想要实现的目标”。你想知道这个是什么?

运营商待处理/可视模式映射

然后vimdoc中有样本:http://vimdoc.sourceforge.net/htmldoc/map.html#:map-operator

  if a:0  " Invoked from Visual mode, use '< and '> marks.
    silent exe "normal! `<" . a:type . "`>y"
  elseif a:type == 'line'
    silent exe "normal! '[V']y"
  elseif a:type == 'block'
    silent exe "normal! `[\<C-V>`]y"
  else
    silent exe "normal! `[v`]y"
  endif

其他

您最好查看来源