Apa yang dilakukan perintah f dan t di Vim?

126

Adakah yang bisa menjelaskan kepada saya apa yang dilakukan fdan tperintah di vim dan bagaimana cara kerjanya? Sepertinya saya tidak dapat menemukan informasi ini tetapi orang-orang terus mengatakan kepada saya bahwa mereka sangat berguna. Akan sangat menghargai jawaban dengan contoh jika memungkinkan, terima kasih!

Dan
sumber

Jawaban:

204

Perhentian pertama Anda dengan pertanyaan seperti ini harus menjadi bantuan internal vim, :h fdan :h t. Namun, dalam hal ini, entri tersebut agak samar tanpa contoh. Misalkan kita memiliki baris ini ( ^= posisi kursor):

The quick brown fox jumps over the lazy dog.
^

Perintah-perintah ini menemukan karakter pada sebuah garis. Jadi fbakan menempatkan kursor di sini:

The quick brown fox jumps over the lazy dog.
          ^

tseperti ftetapi menempatkan kursor pada karakter sebelumnya. Jadi tbakan memberi Anda:

The quick brown fox jumps over the lazy dog.
         ^

Anda dapat mengingat perintah ini sebagai find dan till. Selain itu, Anda dapat menambahkan awal perintah dengan angka untuk pindah ke kemunculan karakter tersebut. Misalnya, 3fbakan pindah ke b ketiga di sebelah kanan kursor. Contoh kalimat saya hanya memiliki satu b, sehingga kursor tidak akan bergerak sama sekali.

Michael Kristofik
sumber
4
Terima kasih banyak, itu sempurna, saya benar-benar lupa tentang: perintah h ini minggu pertama saya menggunakan Vim, ini sangat membantu terima kasih!
Dan
1
Saat melakukan 'fb', saya dibawa ke b (rown). Bagaimana saya bisa langsung ke b (r) sendiri? Apakah ada cara, tanpa hjkl?
dangdis
15
Dan jika Anda menulis huruf dalam huruf besar, maka ia melompat mundur. Jadi misalnya Fbatau Tb.
be-ndee
2
@ancm seperti be-ndee berkata, Fx atau Tx, di mana x adalah karakter yang dicari.
mickey
1
mungkin layak untuk mudah bagi pemula untuk tidak bergantung pada :help, karena tidak selalu memberikan penjelasan terbaik untuk kerumunan non-esoterik. apa to [count]'thartinya?
Tycholiz
121

Hanya untuk menambah jawaban Michael Kristofik , tidak ada deskripsi fatau tlengkap tanpa menyebutkan ;.

Dari lembar contekan Vim ini :

; "Ulangi waktu f, t, F atau T terbaru."

Jadi, untuk melanjutkan tema @ MichaelKristofik:

The quick brown fox jumps over the lazy dog.
^

ketik fountuk pergi ke 'o' pertama:

The quick brown fox jumps over the lazy dog.
            ^

dan kemudian ;pergi ke yang berikutnya:

The quick brown fox jumps over the lazy dog.
                 ^
LondonRob
sumber
1
itu; tip cukup berguna, meskipun saya tidak melihat cara kerjanya dengan 't'. saya mencoba dan saya terjebak di posisi yang sama tidak peduli berapa kali perintah t diulang.
Peter Perháč
@ PeterPerháč Tekan tanda titik koma beberapa kali. Bekerja untukku.
LondonRob
@ PeterPerháč, saya kira itu lebih rumit dengan perintah t, karena ketika mencari maju untuk x, tanda titik koma akan menemukan x yang sama setiap kali Anda menekan;, sehingga tidak bergerak. Jika Anda menekan l sekali dan kemudian titik koma itu harus bekerja.
mickey
@ PeterPerháč Pastikan Anda belum memiliki (satu karakter sebelum) kejadian terakhir di telepon, dan itu akan menemukan kejadian berikutnya.
Adam Evans
51

Saya menemukan fdan tsangat berguna dalam kombinasi dengan ddan c. Misalnya, Anda ct:akan mengganti semuanya dari kursor hingga ke titik dua berikutnya, tetapi tidak menghapus titik dua. Anda dapat mengingatnya sebagai "ubah ke titik dua".

Vaughn Cato
sumber
5
+1! Idiom suka ct,atau ct)dengan cepat mengganti satu atau argumen terakhir ke pemanggilan fungsi terasa menyenangkan untuk digunakan.
nperson325681
15
Saya lebih suka vt:ckarena Anda tidak melihat selalu melihat setiap kemunculan huruf yang diberikan 100% benar. Dengan vAnda dapat melihat pemilihan visual, isyarat visual yang bagus.
Bentley4
1
Saya lebih suka mnemonik, "ubah sampai titik dua"
Patrick Michaelsen
34

fxmelompat ke yang berikutnya x di telepon.

txmelompat ke karakter tepat sebelum yang berikutnya x di telepon.

Anda dapat menggunakan Fxdan Txuntuk mencapai yang sebelumnya x .

Anda dapat menggunakan 2fxuntuk melompat ke baris kedua xdi telepon.

Jadi, fFdan tTberguna ketika Anda ingin pergi dengan cepat ke set kurung berikutnya ( f() atau menghapus semuanya dari kursor ke, tetapi tidak termasuk, sebelumnya =( dT=) dan seterusnya ...

Lihat :h motion.txt. Itu akan meledakkan pikiran Anda.

romainl
sumber
2
terima kasih telah menyebutkan 2fxhal itu. Saya selalu bingung denganf2x
Yar