VIM:带有两个或更多字符的“t”动作

VIM:带有两个或更多字符的“t”动作

假设有如下一行:

grep -ir "$@" * | grep -v "/.svn/" | grep -v "/inc/help/" | head -n 100

如果光标在第一个|,我想删除直到head,我该如何使用 t 来做到这一点?我知道我可以v/hea选择直到hea,但当我删除文本时,我也会删除前导hhead我可以直接h向后移动一个字符,但这现在是一系列的解决方法。它有效,但我想知道是否有更好的方法。

有没有办法可以t依赖两个或多个字符而不是单个字符?

答案1

尝试这个:

:vnoremap / //b-1<left><left><left><left>

当你键入v以可视方式选择一个区域,然后键入/以开始搜索该区域的结尾时,Vim 将输入

//b-1

将光标放在第二个 上,进入命令行/。然后输入 2 个或更多字符,以结束该区域并按 Enter。 告诉b-1Vim 搜索该模式并将光标放在匹配开始前一个字符 ( -1) 。请参阅b

:help search-offset

您不必映射/。您可以映射t或其他字符。

答案2

如果你可以交互地进行操作,你可以尝试easymotion 插件

d;;fh-> 将使所有文本变灰并将所有h字母标记为红色,但用 替换它们a,b,c,…,然后您可以点击b删除到第二个h

我知道这个描述有点神秘 - 看一下Youtube 视频

附言:我忘了说;我的领导钥匙

答案3

d2fh将在你的示例中做到这一点。

答案4

不,t只接受一个字符。我会这么做vththd

相关内容