O que os comandos f e t fazem no Vim?

126

Alguém pode me explicar o que os comandos fe tfazem no vim e exatamente como eles funcionam? Não consigo encontrar essas informações, mas as pessoas continuam me dizendo que são muito úteis. Realmente apreciaria uma resposta com um exemplo, se possível, obrigado!

Dan
fonte

Respostas:

204

Sua primeira parada com perguntas como essas deve ser a ajuda interna do vim, :h fe :h t. No entanto, nesse caso, essas entradas são um pouco enigmáticas sem um exemplo. Suponha que tivéssemos esta linha ( ^= posição do cursor):

The quick brown fox jumps over the lazy dog.
^

Esses comandos encontram caracteres em uma linha. Então fbcolocaria o cursor aqui:

The quick brown fox jumps over the lazy dog.
          ^

té como, fmas coloca o cursor no caractere anterior. Então tb, daria a você:

The quick brown fox jumps over the lazy dog.
         ^

Você pode se lembrar desses comandos como find e tdoente. Além disso, você pode acrescentar os comandos com um número para passar para a enésima ocorrência desse caractere. Por exemplo, 3fbmoveria para o terceiro b à direita do cursor. No entanto, minha sentença de exemplo possui apenas um b, para que o cursor não se mova.

Michael Kristofik
fonte
4
Muito obrigado, foi perfeito, eu esqueci completamente o comando: h, esta é minha primeira semana usando o Vim, essa foi uma grande ajuda, obrigado!
Dan
1
Enquanto faço 'fb', sou levado para b (rown). Como eu chegaria diretamente ao b (r) próprio? Existe uma maneira, sem hjkl?
dangdis
15
E se você escrever as letras em maiúsculas, elas saltam para trás. Então, por exemplo Fbou Tb.
ser-Ndee
2
@ancm como be-ndee disse, Fx ou Tx, onde x é o caractere a ser pesquisado.
mickey
1
provavelmente vale a pena ir fácil para iniciantes por não depender :help, pois nem sempre fornece a melhor explicação para a multidão não-esotérica. o que to [count]'thsignifica mesmo?
Tycholiz 6/01
121

Apenas para adicionar à resposta de Michael Kristofik , nenhuma descrição fou té completa sem mencionar também ;.

A partir desta folha de fraude Vim :

; "Repita as últimas vezes f, t, F ou T [contagem]."

Então, para continuar o tema do @ MichaelKristofik:

The quick brown fox jumps over the lazy dog.
^

digite fopara ir para o primeiro 'o':

The quick brown fox jumps over the lazy dog.
            ^

e depois ;para a próxima:

The quick brown fox jumps over the lazy dog.
                 ^
LondonRob
fonte
1
a ; tip é bastante útil, embora eu não veja como ele funciona com 't'. Eu tentei e estou preso na mesma posição, não importa quantas vezes o comando t seja repetido.
Peter Perháč 13/08/16
@ PeterPerháč Pressione ponto e vírgula várias vezes. Funciona para mim.
usar o seguinte código
@ PeterPerháč, acho que é mais complicado com o comando t, pois ao procurar x, o ponto-e-vírgula encontrará o mesmo x toda vez que você pressionar; portanto, não se moverá. Se você pressionar l uma vez e, em seguida, ponto e vírgula, deve funcionar.
mickey
@ PeterPerháč Verifique se você não está na (um caractere anterior) a última ocorrência na linha e ela deve encontrar a próxima ocorrência.
Adam Evans
51

Acho fe tmuito útil em combinação com de c. Por exemplo, ct:permitirá que você substitua tudo, do cursor até os próximos dois pontos, mas não exclua os dois pontos. Você pode se lembrar como "mudar para dois pontos".

Vaughn Cato
fonte
5
+1! Idiomas como ct,ou ct)substituir rapidamente um ou último argumento de uma chamada de função são maravilhosos de se usar.
N26325681
15
Eu prefiro vt:cporque você não vê sempre que cada ocorrência de uma determinada letra está 100% correta. Com vvocê pode ver a seleção visual, uma boa dica visual.
Bentley4
1
Eu prefiro o mnemônico, "mude até dois pontos"
Patrick Michaelsen
34

fxpula para o próximo x na linha.

txpula para o personagem logo antes do próximo x na linha.

Você pode usar Fxe Txalcançar o anterior x .

Você pode usar 2fxpara pular para o segundo xna linha.

Portanto, fFe tTsão úteis quando você deseja ir rapidamente para o próximo conjunto de parênteses ( f() ou excluir tudo do cursor até, mas excluindo o anterior =( dT=) e assim por diante…

Veja :h motion.txt. Isso vai explodir sua mente.

romainl
fonte
2
obrigado por mencionar essa 2fxcoisa. Eu sempre confundi-lo comf2x
Yar