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

Editor Vim视觉模式脚本:搜索视觉选择周围的文本,editor,vim,Editor,Vim,我将试着举例说明 如果我们在vim中有这样一段代码: if ($feck == true && $drink == false) { echo 'They lie in wait like wolves..'; } 我进入视觉模式并选择“$drink”例如,有没有办法: 检测当前选择是否为vim之一 文本对象(单词、单词、内部{等) 在选择的两侧进行查找,以检查下一个可用的vim文本对象(同样,word、word、块、内部”等) 请注意,我考虑的是vim脚本而不仅仅

我将试着举例说明

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

if ($feck == true && $drink == false)
{
    echo 'They lie in wait like wolves..';
}
我进入视觉模式并选择“
$drink
”例如,有没有办法:

  • 检测当前选择是否为vim之一 文本对象(单词、单词、内部{等)
  • 在选择的两侧进行查找,以检查下一个可用的vim文本对象(同样,word、word、块、内部”等)
请注意,我考虑的是vim脚本而不仅仅是简单的编辑,因此这两个“操作”都将在一个函数中,源于my.vimrc


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

在进行视觉选择后,
”此问题仅在汉尼拔·莱克特博士提出的上下文中才有意义

我认为你想要达到的目标是可能的,但这需要一些努力。在另一个答案中给出的信息和对你帖子的评论已经指向了正确的方向

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

  • 检查当前选择可能代表什么(如dwc所描述的标记“<和”),vim函数应该对此有所帮助)。必须回答这样的问题:“<和'>在同一行上吗?之间的所有字母都是关键字字符吗?选择的第一个和最后一个字符是否是特殊的分隔符,如“{,”(')等?等等-没有自动检查此项的内置功能。另请参阅:help visualmode(

  • 一旦确定了这一点,您必须思考,然后您希望如何进一步扩展您的选择-然而,在ReSharper中,这一逻辑是有效的

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


  • 一般来说,在:help eval.txt中显示的命令将有助于实现这一点。

    您确定视觉选择是正确的开始位置吗?这实际上与我的第一个问题有关,所以非常肯定:)我到处都找过了(即谷歌搜索),但找不到与此类型脚本类似的内容。:-/Hello,我的同胞们。我正在尝试找出您想要实现的目标。您确定您在这里采取了正确的方法。虽然您尝试的方法在理论上是可能的,但vim还有其他方法(我可以补充说,非常好)选择选择的方法。即使这样,我也看不出这有什么用。Vim的单词是可变的。你可以改变单词的组成(请参阅:hisKeyword)。就脚本编写而言,vimscript的编写方式是,你所做的任何事情都可以编写脚本(因为它是一样的).Vimscript更像是一个vim宏。现在,最后一部分——只要保持光标在原位,就不能真正打破位置。但是,您可以标记它,然后使用单引号标记(不同于引号标记)、ma,然后使用'a或'a.Hey Idigas(cro?:))。我的想法是检查当前视觉选择的范围,然后检查周围区域是否有下一个可用的“范围”选择。在上面的示例中,如果我选择了$饮料,我的下一个可能的候选对象将是“I”或“a”)",然后是整个if块。当然,想法与我之前的问题相同:使用一个快捷方式扩展当前选择,无论该选择可能是ATM。非常好,正是我需要开始的提示。谢谢。嘿,刚刚偶然发现了这个问题。你有没有花时间来获取此wo的脚本什么?