Co robią polecenia f i t w Vimie?

126

Czy ktoś mógłby mi wyjaśnić, co fi tpolecenia zrobić w vim i dokładnie jak one działają? Nie mogę znaleźć tych informacji, ale ludzie powtarzają mi, że są bardzo przydatne. Naprawdę doceniłbym odpowiedź z przykładem, jeśli to możliwe, dzięki!

Dan
źródło

Odpowiedzi:

204

Twoim pierwszym przystankiem z takimi pytaniami powinna być wewnętrzna pomoc vima, :h fa :h t. Jednak w tym przypadku wpisy te są nieco tajemnicze bez przykładu. Załóżmy, że mamy taki wiersz ( ^= pozycja kursora):

The quick brown fox jumps over the lazy dog.
^

Te polecenia znajdują znaki w linii. Więc fbumieść kursor tutaj:

The quick brown fox jumps over the lazy dog.
          ^

tjest podobne, fale umieszcza kursor na poprzedzającym znaku. Więc tbdałby ci:

The quick brown fox jumps over the lazy dog.
         ^

Możesz zapamiętać te polecenia jako chore fi tchore. Możesz także poprzedzić polecenia liczbą, aby przejść do n-tego wystąpienia tego znaku. Na przykład, 3fbprzejdzie do trzeciego b na prawo od kursora. Moje przykładowe zdanie ma jednak tylko jedno b, więc kursor w ogóle się nie porusza.

Michael Kristofik
źródło
4
Wielkie dzięki, było idealnie, zupełnie zapomniałem o komendzie: h to mój pierwszy tydzień używania Vima, to była ogromna pomoc, dzięki!
Dan,
1
Robiąc fb, przenoszę się do b (rown). Jak mógłbym bezpośrednio przejść do b (r) own? Czy jest sposób, bez hjkl?
dangdis,
15
A jeśli napiszesz litery dużymi literami, przeskakuje do tyłu. Na przykład Fblub Tb.
be-ndee
2
@ancm, jak powiedział be-ndee, Fx lub Tx, gdzie x jest znakiem do wyszukania.
mickey
1
prawdopodobnie warto pójść na łatwiznę dla początkujących, ponieważ nie polegają na tym :help, ponieważ nie zawsze zapewnia to najlepsze wyjaśnienie nie-ezoterycznego tłumu. co to w to [count]'thogóle znaczy?
Tycholiz
121

Aby dodać do odpowiedzi Michaela Kristofika , nie ma opisu fani nie tjest kompletny bez wzmianki ;.

Z tego ściągawki Vim :

; „Powtórz ostatnie razy f, t, F lub T [count]”.

Kontynuując temat @ MichaelKristofik:

The quick brown fox jumps over the lazy dog.
^

wpisz, foaby przejść do pierwszego „o”:

The quick brown fox jumps over the lazy dog.
            ^

a następnie ;przejść do następnego:

The quick brown fox jumps over the lazy dog.
                 ^
LondonRob
źródło
1
the; wskazówka jest całkiem przydatna, chociaż nie wiem, jak to działa z „t”. Próbowałem i utknąłem w tej samej pozycji, bez względu na to, ile razy polecenie t zostało powtórzone.
Peter Perháč
@ PeterPerháč Naciśnij kilkakrotnie średnik. Pracuje dla mnie.
LondonRob
@ PeterPerháč, wydaje mi się, że jest to trudniejsze z poleceniem t, ponieważ podczas wyszukiwania x do przodu średnik znajdzie to samo x za każdym razem, gdy trafisz;, więc nie porusza się. Jeśli raz uderzysz l, a potem średnik, powinno działać.
mickey
@ PeterPerháč Upewnij się, że nie znajdujesz się już (jeden znak przed) ostatnim wystąpieniem w linii i powinno znaleźć następne wystąpienie.
Adam Evans
51

Uważam fi tbardzo przydatna w połączeniu z da c. Na przykład ct:pozwoli ci zamienić wszystko od kursora do następnego dwukropka, ale nie usunie dwukropka. Możesz to zapamiętać jako „zmianę na dwukropek”.

Vaughn Cato
źródło
5
+1! Idiomy takie jak ct,lub, ct)aby szybko zamienić jeden lub ostatni argument w wywołaniu funkcji, są cudowne w użyciu.
nperson325681
15
Wolę, vt:cponieważ nie zawsze dostrzegasz każde wystąpienie danej litery w 100%. Z vmożna zobaczyć wybór wizualnej, piękny wizualnego.
Bentley4
1
Wolę mnemonik „zmień do okrężnicy”
Patrick Michaelsen
34

fxprzeskakuje do następnego x wiersza.

txprzeskakuje do znaku tuż przed następnym x w wierszu.

Możesz użyć Fxi, Txaby dotrzeć do poprzedniego x .

Możesz użyć, 2fxaby przejść do drugiego xna linii.

Tak więc fFi tTsą przydatne, gdy chcesz szybko przejść do następnego zestawu nawiasów ( f() lub usunąć wszystko od kursora do, ale z wyłączeniem poprzedniej =( dT=) i tak dalej…

Zobacz :h motion.txt. To rozwali twój umysł.

romainl
źródło
2
dzięki za wspomnienie o tym 2fx. Zawsze mylę to zf2x
Yar