我正在尝试弄清楚如何dt
或df
字符串中最后一次出现的字符。
例如,假设我有以下行:
foo not.relevant.text.bar
如果我f df.
我希望获得foo relevant.text.bar
,但我想获得foo bar
。使用f 3df.
不是一个选项,因为我不知道该字符串中有多少个字符。另外,我可能希望获得foo .bar
(f 3dt.
),或者如果该行以点结尾,我可能想获得foo .
。我想总是找到最后一个,无论有多少。
这可能没有正则表达式吗?我想我可以使用正则表达式,但我希望有一个简单的vim命令,我错过了。我发现自己经常尝试这样做。
答案 0 :(得分:13)
单向没有使用正则表达式, 计算“点”(可能是其他字母)..看看别人是否有更好的方法..
foo[I]not.relevant.text.bar
([I] is cursor
)
lmm$T.d`m
或以这种格式,可能看起来更好?
升 米 米 $ Ť d ` 米
这将完成这项工作。如果你经常使用它,你可以创建一个映射。
修改强>
我添加了一个GIF动画来显示它是否有效。 :)
注意强>
我将光标移动到正确的起点(@=
)后,在正常模式下键入 f(space)
,以显示我在命令行中按下的键。
答案 1 :(得分:8)
您可以使用我的JumpToLastOccurrence plugin。它提供了,f
/ ,F
/ ,t
/ ,T
命令。
答案 2 :(得分:4)
我会使用f df...
键入时不一定要短,但我发现使用“重复上一个命令”比预先计算我要删除的单词/句子数更容易。
然后,您可以调整您输入的.
的数量,以调整您要删除的字符串的长度。
答案 3 :(得分:0)
在视觉模式中:
$F.d^
$转到当前行的末尾,F向后搜索一段时间,d ^删除直到行的开头。
答案 4 :(得分:0)
例如: E T 。 d B
foo not.relevant.text.bar
只要光标位于“ foo”之后的文本内的任意位置,它就可以工作。
我用它来剥离除尾随文件名以外的所有路径名。
从 /some/long/path/filename.ext 剥离路径,仅保留文件名。
只要:
该词中没有空格
E 到末尾(因为没有空格-如果不是最后一行,也可以使用)
T / 查找最后一个/
(在其后停止,因此也会被删除)
d B 删除到单词开头