f和t命令在Vim中做什么?


126

有人能向我解释什么f,并t命令做VIM,这也正是他们的工作?我似乎找不到这些信息,但是人们不断告诉我它们非常有用。如果可能的话,非常感谢您提供示例答案,谢谢!

Answers:


204

遇到此类问题的第一站应该是vim的内部帮助,:h f并且:h t。但是,在这种情况下,没有示例,这些条目是有点神秘的。假设我们有这条线(^=光标位置):

The quick brown fox jumps over the lazy dog.
^

这些命令在一行上查找字符。因此fb将光标放在这里:

The quick brown fox jumps over the lazy dog.
          ^

t就像f但是将光标放在前一个字符上。所以tb会给你:

The quick brown fox jumps over the lazy dog.
         ^

您可以将这些命令记为find和till。另外,您可以在命令前添加一个数字,以移至该字符的第n个出现位置。例如,3fb将移动到光标右侧的第三个b处。我的例句虽然只有一个b,所以光标根本不会移动。


4
非常感谢,这太完美了,我完全忘记了:h命令,这是我使用Vim的第一周,这对我有很大帮助!
2012年

1
在执行“ fb”时,我被带到b(rown)。我将如何直接获得b(r)own?有没有办法,没有hjkl?
dangdis 2014年

15
如果您将字母大写,则它会向后跳。因此,例如FbTb
be-ndee '16

2
@ancm,如be-ndee所说,Fx或Tx,其中x是要搜索的字符。
米奇

1
对于初学者来说,不依赖可能很容易:help,因为它并不总是为非深奥人群提供最佳解释。to [count]'th甚至是什么意思?
Tycholiz

121

仅添加到Michael Kristofik的答案中,没有提及也没有描述ft不完整;

从此Vim速查表

; “重复最近的f,t,F或T [count]次。”

因此,继续@MichaelKristofik的主题:

The quick brown fox jumps over the lazy dog.
^

输入fo第一个“ o”:

The quick brown fox jumps over the lazy dog.
            ^

然后;转到下一个:

The quick brown fox jumps over the lazy dog.
                 ^

1
的; 提示非常有用,尽管我不知道它如何与“ t”一起使用。我尝试过,无论t命令重复多少次,我都被卡在同一位置。
彼得·佩拉奇(PeterPerháč)

@PeterPerháč多次按分号。为我工作。
LondonRob

@PeterPerháč,我猜想用t命令比较麻烦,因为当向前搜索x时,分号将在您每次单击;时找到相同的x,因此不会移动。如果您按过一次l然后分号,它应该可以工作。
米奇

@PeterPerháč确保您尚未位于行中的最后一个出现位置(之前一个字符),并且它应该找到下一个出现位置。
亚当·埃文斯

51

我发现ft结合是非常有用的dc。例如, ct:将使您替换从光标到下一个冒号的所有内容,但不删除冒号。您可以将其记住为“更改为冒号”。


5
+1!习惯于ct,或喜欢ct)快速替换函数调用中一个或最后一个参数的惯用法让人感觉很棒。
nperson325681 2012年

15
我更喜欢,vt:c因为您不会总是发现每次出现的给定字母都是100%正确的。随着v您可以看到视觉选择,一个不错的视觉提示。
Bentley4 2013年

1
我更喜欢助记符,“变到冒号”
Patrick Michaelsen

34

fx跳到下一 x行。

tx跳转到该行中下一个 字符之前的字符x

您可以使用FxTx到达上一个 x

您可以使用2fx跳到第二x行。

所以,fFtT当你要赶快去(下一组括号是有用的f(),或删除一切从游标,但不包括以前的=dT=)等...

请参阅:h motion.txt。它会让你大吃一惊。


2
感谢您提到那2fx件事。我总是把它与f2x
Yar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.