Vim可视化模式脚本:搜索视觉选择周围的文本

时间:2009-05-27 19:46:19

标签: editor vim

我会试着通过例子解释..

如果我们在vim中有这样的代码:

if ($feck == true && $drink == false)
{
    echo 'They lie in wait like wolves..';
}

我进入视觉模式并选择“$drink”例如,有没有办法:

  • 检测当前选择是否是vim之一 文本对象(单词,WORD,内部{等等)
  • 在选择的两边进行查找以检查下一个可用的vim文本对象(再次,单词,WORD,块,内部“等等。)

请注意我正在考虑vim脚本而不仅仅是简单的编辑,所以这两个“动作”都在一个函数中,源自我的.vimrc

另外,我需要在不破坏视觉选择或移动光标的情况下执行此操作(或者,如果确实无法避免,则还原选择和光标位置)。

2 个答案:

答案 0 :(得分:1)

这个问题在Hannibal Lecter博士this other question的背景下才有意义。

我认为你想要实现的目标是可能的,但它需要一些工作。其他答案中给出的信息以及对帖子的评论已经指出了正确的方向。

从“扩展选择”键映射调用的vim函数必须执行以下操作:

  1. 检查当前选择可能代表的内容(标记'<和'>,因为dwc描述和vim函数应该对此有所帮助)。必须回答这样的问题:是'<和'>在同一条线上? '<之间的所有字母都是和'> iskeyword字符?选择的第一个和最后一个字符是特殊分隔符,如'{','('等等?等等 - 没有内置功能可以自动检查它。另请参阅:help visualmode(

  2. 确定之后,您必须考虑,然后您希望如何进一步扩展您的选择 - 但是这个逻辑在ReSharper中有效。

  3. 您需要注意将光标放回原位,具体取决于您用于扩展选择的命令。

  4. 通常,帮助eval.txt中显示的命令将有助于实现此目的。

答案 1 :(得分:0)

在进行视觉选择后,'<'>可用于接受“范围”的任何内容。