什么f和t命令在 vim 中做什么以及它们是如何工作的?
5 回答
遇到此类问题的第一站应该是 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,所以光标根本不会移动。
只是为了补充迈克尔克里斯托菲克的回答,没有描述f或t不完整,也没有提及;。
从此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.
^
我发现f和与和t结合使用非常有用。例如, 将允许您替换从光标到下一个冒号的所有内容,但不能删除冒号。您可以将其记住为“更改为冒号”。dcct:
fx跳到下一个 x就行了。
tx跳转到该行下一个 字符之前的字符x。
您可以使用FxandTx来达到前面 x的.
你可以用2fx跳到第二个x就行了。
因此,fF当tT您想要快速转到下一组括号 ( f() 或删除从光标到但不包括前一个=( dT=) 等的所有内容时非常有用……</p>
见:h motion.txt。它会让你大吃一惊。
由于 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] 次。