149

什么ft命令在 vim 中做什么以及它们是如何工作的?

4

5 回答 5

255

遇到此类问题的第一站应该是 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,所以光标根本不会移动。

于 2012-09-19T13:17:35.487 回答
137

只是为了补充迈克尔克里斯托菲克的回答,没有描述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.
                 ^
于 2014-04-22T15:26:10.403 回答
63

我发现f和与和t结合使用非常有用。例如, 将允许您替换从光标到下一个冒号的所有内容,但不能删除冒号。您可以将其记住为“更改为冒号”。dcct:

于 2012-09-19T13:26:52.060 回答
35

fx跳到下一个 x就行了。

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

您可以使用FxandTx来达到前面 x的.

你可以用2fx跳到第二个x就行了。

因此,fFtT您想要快速转到下一组括号 ( f() 或删除从光标到但不包括前一个=( dT=) 等的所有内容时非常有用……</p>

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

于 2012-09-19T13:23:29.280 回答
7

由于 LondonRob 提到;了 ,我想逗号,命令的描述是有序的。它与这些命令非常结合使用(当搜索过冲时)。

f使用、或执行搜索后F,可以使用以相反方向重复搜索。tT,

假设我们在这句话的开头,我们想将elot更改为elit

Lorem ipsum dolor sit amet consectetur adipiscing elot sed do eiusmod tempor.
^

我知道我必须替换o,所以我立即执行fo(find o) 。光标停留在行中的某个早期o!点击;以在同一方向重复搜索。类型类型类型...我应该只写五次,但假设我超调并键入;六次。我在这里结束:

Lorem ipsum dolor sit amet consectetur adipiscing elot sed do eiusmod tempor.
 ^ 
Lorem ipsum dolor sit amet consectetur adipiscing elot sed do eiusmod tempor.
             ^ 
Lorem ipsum dolor sit amet consectetur adipiscing elot sed do eiusmod tempor.
               ^ 
Lorem ipsum dolor sit amet consectetur adipiscing elot sed do eiusmod tempor.
                            ^ 
Lorem ipsum dolor sit amet consectetur adipiscing elot sed do eiusmod tempor.
                                                    ^ 
Lorem ipsum dolor sit amet consectetur adipiscing elot sed do eiusmod tempor.
                                                            ^ 
Lorem ipsum dolor sit amet consectetur adipiscing elot sed do eiusmod tempor.
                                                                   ^

现在,只需执行,两次即可在另一个方向重复此搜索。光标将到达elot中的o

Lorem ipsum dolor sit amet, consectetur adipiscing elot, sed do eiusmod tempor.
                                                              ^        
Lorem ipsum dolor sit amet, consectetur adipiscing elot, sed do eiusmod tempor.
                                                     ^

ri完成更换。

与大多数移动命令一样,,也要数一数:[count],

从手册:

以相反的方向重复最近的 f、t、F 或 T [count] 次。

于 2020-10-22T05:42:42.083 回答