假设有如下一行:
grep -ir "$@" * | grep -v "/.svn/" | grep -v "/inc/help/" | head -n 100
如果光标在第一个|
,我想删除直到head
,我该如何使用 t 来做到这一点?我知道我可以v/hea
选择直到hea
,但当我删除文本时,我也会删除前导h
。head
我可以直接h
向后移动一个字符,但这现在是一系列的解决方法。它有效,但我想知道是否有更好的方法。
有没有办法可以t
依赖两个或多个字符而不是单个字符?
答案1
尝试这个:
:vnoremap / //b-1<left><left><left><left>
当你键入v
以可视方式选择一个区域,然后键入/
以开始搜索该区域的结尾时,Vim 将输入
//b-1
将光标放在第二个 上,进入命令行/
。然后输入 2 个或更多字符,以结束该区域并按 Enter。 告诉b-1
Vim 搜索该模式并将光标放在匹配开始前一个字符 ( -1
) 。请参阅b
:help search-offset
您不必映射/
。您可以映射t
或其他字符。
答案2
如果你可以交互地进行操作,你可以尝试easymotion 插件:
d;;fh
-> 将使所有文本变灰并将所有h
字母标记为红色,但用 替换它们a,b,c,…
,然后您可以点击b
删除到第二个h
。
我知道这个描述有点神秘 - 看一下Youtube 视频
附言:我忘了说;
我的领导钥匙
答案3
d2fh
将在你的示例中做到这一点。
答案4
不,t
只接受一个字符。我会这么做vththd
。