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

Dan*_*Dan 114 vim

有人能向我解释什么f,并t命令做VIM,这也正是他们的工作?我似乎无法找到这些信息,但人们一直告诉我它们非常有用.如果可能的话,真的很感谢一个例子,谢谢!

Mic*_*fik 183

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

The quick brown fox jumps over the lazy dog.
^
Run Code Online (Sandbox Code Playgroud)

这些命令在一行中查找字符.所以fb将光标放在这里:

The quick brown fox jumps over the lazy dog.
          ^
Run Code Online (Sandbox Code Playgroud)

t就像是f将光标放在前面的字符上.所以tb会给你:

The quick brown fox jumps over the lazy dog.
         ^
Run Code Online (Sandbox Code Playgroud)

你可以记住这些命令是find和till.此外,您可以在命令前加上一个数字,以移动到该字符的第n个匹配项.例如,3fb将移动到光标右侧的第三个b.我的例句只有一个b,所以光标根本不会移动.

  • 如果你用大写字母写字母,那么它会向后跳.例如,`Fb`或`Tb`. (14认同)
  • 非常感谢,这是完美的,我完全忘记了:h命令这是我使用Vim的第一周,这是一个巨大的帮助,谢谢! (3认同)
  • 如@ndcm所说,Fx或Tx,其中x是要搜索的字符。 (2认同)

Lon*_*Rob 111

只是为了补充Michael Kristofik的答案,没有提及也没有描述ft完整;.

这个Vim备忘单:

; "重复最新的f,t,F或T [计数]次."

那么,继续@ MichaelKristofik的主题:

The quick brown fox jumps over the lazy dog.
^
Run Code Online (Sandbox Code Playgroud)

输入fo第一个'o':

The quick brown fox jumps over the lazy dog.
            ^
Run Code Online (Sandbox Code Playgroud)

然后;去下一个:

The quick brown fox jumps over the lazy dog.
                 ^
Run Code Online (Sandbox Code Playgroud)

  • 这 ; tip 非常有用,但我不知道它如何与 't' 一起使用。我试过了,无论 t 命令重复多少次,我都被困在同一个位置。 (3认同)

Vau*_*ato 46

我发现ft结合是非常有用的dc.例如, ct:将允许您替换从光标到下一个冒号的所有内容,但不能删除冒号.你可以记住它是"改为冒号".

  • 我更喜欢`vt:c`因为你没有发现总是发现给定字母的每次出现100%正确.使用`v`,您可以看到视觉选择,一个很好的视觉提示. (14认同)
  • +1!像`ct,`或`ct)`这样的习惯用来快速替换函数调用的一个或最后一个参数感觉很棒. (5认同)

rom*_*inl 30

fx跳到下一 x行.

tx跳到下一 x行之前的角色.

您可以使用FxTx到达之前的 x.

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

所以,fFtT当你想很快地进入到下一组括号(有用f(),或删除一切从游标,但不包括以前的=(dT=)等...

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

  • 感谢您提到 `2fx` 的事情。我总是把它和‘f2x’混淆 (2认同)

rra*_*jik 15

既然 LondonRob 提到过;,我想对逗号命令的描述,是合适的。它经常与这些命令结合使用(当搜索超出时)。

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

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

Lorem ipsum dolor sit amet consectetur adipiscing elot sed do eiusmod tempor.
^
Run Code Online (Sandbox Code Playgroud)

我知道我必须替换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.
                                                                   ^
Run Code Online (Sandbox Code Playgroud)

现在,只需执行,两次即可在另一个方向重复此搜索。光标将到达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.
                                                     ^
Run Code Online (Sandbox Code Playgroud)

ri即可完成更换。

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

从手册中:

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