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

时间:2014-03-05 22:03:07

标签: vim

我使用kana / vim-textobj-user来定义一些自定义用户对象,但问题是我无法跳过它们:例如 假设我正在使用由aiii映射的相同缩进文本对象 我想在正常模式下跳转文本,例如]i[i 目前我正在使用一种非常黑客的选择和退出视觉模式的方式 那么有一种简单的方法可以做到这一点,并为所有其他用户文本对象提供某种映射。 像]{text-object}

这样的东西

2 个答案:

答案 0 :(得分:1)

文本对象仅用于应用命令(例如gU)或直观地选择文本区域。 动作与/下一次出现的动作高度相关,但是不同的命令。我认为vim-textobj-user插件只提供前者,但不提供后者。

我的CountJump plugin非常相似,并提供了根据正则表达式设置两个文本对象和跳转的命令。

答案 1 :(得分:1)

  

我正在使用kana / vim-textobj-user来定义一些自定义用户对象   [...]   让我们说我使用的是aiii映射的同一缩进文本对象   我希望以正常模式跳转文本,例如]i[i

Vim有一堆内置命令,如]m[M等。所以我认为你的意思是]i / [i将光标移动到下一个/上一个文本对象。如果是这样,vim-textobj-user自文本对象首次发布以来就支持selectingmoving。但它不是自动的。至少你必须声明要用于命令的键(例如]i / [i)。

但我想知道以下的事情:

  

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

您输入的内容有vaio<Esc>vai<Esc>吗?你想要做的是将光标移动到光标下文本对象的第一行/最后一行?如果是这样,vim-textobj-user目前还没有提供API来定义这样的命令。

在这种情况下,可能会自动定义像nmap ]i vai<Esc>这样的键映射。但它似乎很脆弱,并且覆盖了几个内置命令。