在vim中跳过用户定义的文本对象

在vim中跳过用户定义的文本对象,vim,Vim,我使用kana/vim textobj用户定义一些自定义用户对象,但问题是我无法跳过它们:这就是一个很好的例子 假设我使用的是相同的缩进文本对象,它由ai和ii 我想在正常模式下跳转文本,比如]I和[I 目前,我正在使用一种非常粗糙的方式来选择和退出视觉模式 因此,有一种简单的方法可以做到这一点,并对所有其他用户文本对象进行某种映射。 类似于]{text object}的文本对象仅用于应用命令(例如gU)或直观地选择文本区域。到下一个引用的运动高度相关,但命令不同。我认为vim textobj用

我使用kana/vim textobj用户定义一些自定义用户对象,但问题是我无法跳过它们:这就是一个很好的例子 假设我使用的是相同的缩进文本对象,它由
ai
ii
我想在正常模式下跳转文本,比如
]I
[I
目前,我正在使用一种非常粗糙的方式来选择和退出视觉模式 因此,有一种简单的方法可以做到这一点,并对所有其他用户文本对象进行某种映射。 类似于
]{text object}

的文本对象仅用于应用命令(例如
gU
)或直观地选择文本区域。到下一个引用的运动高度相关,但命令不同。我认为vim textobj用户插件只提供前者,而不提供后者

My与之非常相似,它提供了基于正则表达式设置文本对象和跳转的命令

我使用kana/vim textobj用户定义一些自定义用户对象 [...] 假设我使用的是相同的缩进文本对象,它由
ai
ii
我想在正常模式下跳转文本,比如
]I
[I

Vim有一系列内置命令,如
]m
[m
,等等。所以我想你的意思是
]I
/
[I
将光标移动到下一个/上一个文本对象。如果是这样,Vim textobj用户从第一次发布以来就支持和到文本对象。但这不是自动的。至少你必须声明哪些键(例如,
]i
/
[i
)用于命令

但我想知道以下几点:

目前,我正在使用一种非常粗糙的方式来选择和退出视觉模式

因此,您键入了
vaio
vai
?您要做的是将光标移动到光标下文本对象的第一行/最后一行?如果是这样,vim textobj用户目前不提供API来定义此类命令


在这种情况下,可能会自动定义键映射,如
nmap]我是vai的
。但它似乎很脆弱,覆盖了几个内置命令。

我理解这一点,但我只是想知道,如果类似的事情已经通过某种插件或隐藏的vim功能完成了,因为我们在这里使用了很多公司定义的语言,并且我已经为它们中的大多数定义了用户对象,因此我觉得这有点奇怪坦白地说,我希望这种特性已经存在,但如果没有,我可能会考虑实现一个(尽管在python中,我并不真正喜欢vimscript)正如我所说,我的插件同时提供了这两种功能,因此这应该符合您的期望。您仍然需要两个调用来定义这两种功能,但是regexp大部分是可以重用的,因此它只定义了一次。