繁体   English   中英

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

[英]Vim visual mode scripting: searching the text surrounding the visual selection

我将以身作则。

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

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

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

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

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

另外,我需要在不中断视觉选择或移动光标的情况下执行此操作(或者,如果确实无法避免,请同时恢复选择和光标位置)。

这个问题仅在汉尼拔·莱克特博士的另一个问题的背景下才有意义。

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

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

  1. 检查当前选择可能代表什么(dwc描述的标记'<和'>,并且vim函数应该对此有所帮助)。 必须回答这样的问题:'<和'>是否在同一行? 所有字母是否都在'<和'>等关键字字符之间? 选择的第一个和最后一个字符是否是特殊定界符,例如'{','('等?),依此类推-没有内置的功能可以自动检查此内容。另请参见:help visualmode(

  2. 确定这一点后,您必须思考一下,然后您想如何进一步扩展选择范围-但是,此逻辑在ReSharper中有效。

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

通常,:help eval.txt中提供的命令将有助于实现此目的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM