Qual é a diferença entre “find” e “till” no vim?

2

Eu vejo que posso usar t c ou T c para mover para o próximo / anterior caractere c

Eu também posso usar f c ou F c para mover para o caractere seguinte / anterior c

É a única diferença entre eles que t c coloca o cursor antes do caractere, T c ( voltando para trás) coloca o cursor após o caractere e f c / F c ambos colocam no personagem em si?

    
por Michael Durrant 27.07.2014 / 14:33

2 respostas

1

A única diferença entre eles é a posição do cursor. De :help motion.txt :

                                                  f
f{char}             To [count]'th occurrence of {char} to the right. The                                                         
                    cursor is placed on {char} inclusive.                                                                         
                    {char} can be entered as a digraph digraph-arg.                                                               
                    When 'encoding' is set to Unicode, composing                                                                  
                    characters may be used, see utf-8-char-arg.                                                                   
                    :lmap mappings apply to {char}.  The CTRL-^ command                                                           
                    in Insert mode can be used to switch this on/off                                                              
                    i_CTRL-^.                                                                                                     

                                                   F                                                                             
F{char}             To the [count]'th occurrence of {char} to the left.                                                           
                    The cursor is placed on {char} exclusive.                                                                     
                    {char} can be entered like with the f command.                                                                

                                                   t                                                                             
t{char}             Till before [count]'th occurrence of {char} to the                                                            
                    right.  The cursor is placed on the character left of                                                         
                    {char} inclusive.                                                                                             
                    {char} can be entered like with the f command.                                                                

                                                   T                                                                             
T{char}             Till after [count]'th occurrence of {char} to the                                                             
                    left.  The cursor is placed on the character right of                                                         
                    {char} exclusive.                                                                                             
                    {char} can be entered like with the f command.
    
por 27.07.2014 / 16:11
3

Sim, a principal diferença entre eles é a posição do cursor, como você disse.

Isso é útil quando você deseja excluir ou alterar alguns caracteres, por exemplo. Suponha que você tenha a seguinte linha:

print "Hello, world!\n"; exit

Suponha que você queira alterar tudo antes do ponto-e-vírgula. Para fazer isso, você vai para o início da linha ( ^ ) e então c muda tudo t para o ponto-e-vírgula.

Se, em vez disso, você quisesse remover o primeiro comando e simplesmente deixar o exit , você d eliminaria tudo por f , indicando o ponto-e-vírgula.

Em suma, f e t são o que vim chama de comandos de movimento. Eles ajudam a modificar o operador antes deles. Quando você move um operador com f ele opera em todos os caracteres entre a posição atual do cursor até e incluindo o caractere com o qual você moveu com f . Se você escolher t , seu operador operaria em tudo, desde a posição atual até e excluindo o caractere com o qual você apontou t . / p>     

por 27.07.2014 / 15:27