คำสั่ง f และ t ทำอะไรในกลุ่ม?


126

ใครช่วยอธิบายให้ฉันฟังได้ไหมว่าคำสั่งfและtคำสั่งทำอะไรเป็นกลุ่มและทำงานอย่างไร ดูเหมือนว่าฉันจะหาข้อมูลนี้ไม่เจอ แต่มีคนบอกฉันว่าข้อมูลเหล่านี้มีประโยชน์มาก จะขอบคุณคำตอบพร้อมตัวอย่างถ้าเป็นไปได้ขอบคุณ!

คำตอบ:


205

หยุดแรกของคุณที่มีคำถามเช่นนี้ควรจะช่วยเหลือภายในกลุ่มของและ:h f :h tอย่างไรก็ตามในกรณีนี้รายการเหล่านั้นค่อนข้างคลุมเครือโดยไม่มีตัวอย่าง สมมติว่าเรามีบรรทัดนี้ ( ^= ตำแหน่งเคอร์เซอร์):

The quick brown fox jumps over the lazy dog.
^

คำสั่งเหล่านี้ค้นหาอักขระบนบรรทัด ดังนั้นfbจะวางเคอร์เซอร์ที่นี่:

The quick brown fox jumps over the lazy dog.
          ^

tเหมือนfแต่วางเคอร์เซอร์ไว้ที่อักขระก่อนหน้า ดังนั้นtbจะให้คุณ:

The quick brown fox jumps over the lazy dog.
         ^

คุณจำคำสั่งเหล่านี้ได้ว่าfind และtill นอกจากนี้คุณสามารถนำหน้าคำสั่งด้วยตัวเลขเพื่อย้ายไปยังลำดับที่ n ของอักขระนั้นได้ ตัวอย่างเช่น3fbจะย้ายไปที่ b ที่สามทางด้านขวาของเคอร์เซอร์ ประโยคตัวอย่างของฉันมีเพียง b เดียวดังนั้นเคอร์เซอร์จะไม่ขยับเลย


4
ขอบคุณมากที่สมบูรณ์แบบฉันลืมไปโดยสิ้นเชิงเกี่ยวกับคำสั่ง h นี่เป็นสัปดาห์แรกของฉันที่ใช้ Vim นี่เป็นความช่วยเหลืออย่างมากขอบคุณ!
แดน

1
ในขณะที่ทำ 'fb' ฉันถูกพาไปที่ b (rown) ฉันจะไปเป็นเจ้าของ b (r) โดยตรงได้อย่างไร? มีวิธีโดยไม่ต้อง hjkl หรือไม่?
dangdis

16
และถ้าคุณเขียนตัวอักษรเป็นตัวพิมพ์ใหญ่มันก็จะกระโดดไปข้างหลัง ตัวอย่างเช่นFbหรือTb.
be-ndee

2
@ancm ตามที่ be-ndee กล่าวว่า Fx หรือ Tx โดยที่ x คืออักขระที่ต้องค้นหา
มิกกี้

1
อาจเป็นเรื่องง่ายสำหรับผู้เริ่มต้น แต่ไม่ได้ขึ้นอยู่กับ:helpเพราะมันไม่ได้ให้คำอธิบายที่ดีที่สุดสำหรับฝูงชนที่ไม่ใช่คนลึกลับเสมอไป สิ่งที่ไม่to [count]'thแม้หมายความว่าอย่างไร
Tycholiz

122

เพียงเพื่อเพิ่มคำตอบไมเคิล Kristofik ของรายละเอียดของไม่มีfหรือสมบูรณ์โดยไม่ต้องนอกจากนี้ยังมีการกล่าวขวัญt;

จากแผ่นโกง Vim นี้ :

; "ทำซ้ำ f, t, F หรือ T [count] ครั้งล่าสุด"

ดังนั้นเพื่อดำเนินการต่อธีมของ @MichaelKristofik:

The quick brown fox jumps over the lazy dog.
^

พิมพ์foเพื่อไปที่ 'o' ตัวแรก:

The quick brown fox jumps over the lazy dog.
            ^

จากนั้น;ไปที่รายการถัดไป:

The quick brown fox jumps over the lazy dog.
                 ^

1
ที่; เคล็ดลับมีประโยชน์มากแม้ว่าฉันจะไม่เห็นว่ามันทำงานอย่างไรกับ 't' ฉันลองแล้วและฉันติดอยู่ในตำแหน่งเดิมไม่ว่าจะซ้ำคำสั่ง t กี่ครั้งก็ตาม
Peter Perháč

@ PeterPerháčกดอัฒภาคหลาย ๆ ครั้ง ใช้ได้ผลสำหรับฉัน
LondonRob

@ PeterPerháčฉันเดาว่ามันยากกว่าด้วยคำสั่ง t เนื่องจากเมื่อค้นหา x ไปข้างหน้าอัฒภาคจะพบ x เท่ากันทุกครั้งที่คุณกดจึงไม่เคลื่อนที่ ถ้าคุณกด l หนึ่งครั้งแล้วอัฒภาคมันควรจะใช้งานได้
mickey

@ PeterPerháčตรวจสอบให้แน่ใจว่าคุณไม่ได้อยู่ที่ (หนึ่งอักขระก่อนหน้า) เหตุการณ์สุดท้ายในบรรทัดและควรพบเหตุการณ์ถัดไป
Adam Evans

51

ผมพบfและtมีประโยชน์มากในการทำงานร่วมกับและd cตัวอย่างเช่น ct:จะให้คุณแทนที่ทุกอย่างตั้งแต่เคอร์เซอร์ขึ้นไปจนถึงโคลอนถัดไป แต่จะไม่ลบโคลอน คุณจำได้ว่า "เปลี่ยนเป็นโคลอน"


5
+1! สำนวนเช่นct,หรือct)เพื่อแทนที่อาร์กิวเมนต์หนึ่งหรือสุดท้ายอย่างรวดเร็วในการเรียกใช้ฟังก์ชันรู้สึกยอดเยี่ยมที่จะใช้
nperson325681

15
ฉันชอบvt:cเพราะคุณไม่ได้มองเห็นการเกิดขึ้นของตัวอักษรแต่ละตัวที่ถูกต้อง 100% เสมอไป ด้วยvคุณสามารถดูการเลือกภาพซึ่งเป็นภาพที่สวยงาม
Bentley4

1
ฉันชอบการจำ "เปลี่ยนไปจนถึงลำไส้ใหญ่"
Patrick Michaelsen

34

fxข้ามไป xที่บรรทัดถัดไป

txกระโดดไปที่อักขระก่อนบรรทัดถัดไป x

คุณสามารถใช้FxและTxไปถึงก่อนหน้านี้ x

คุณสามารถใช้2fxเพื่อข้ามไปยังจุดที่สองxบนเส้น

ดังนั้นfFและtTมีประโยชน์เมื่อคุณต้องการไปยังชุดวงเล็บถัดไปอย่างรวดเร็ว ( f() หรือลบทุกอย่างจากเคอร์เซอร์ไปยัง แต่ไม่รวมก่อนหน้า=( dT=) และอื่น ๆ ...

ดู:h motion.txt. มันจะพัดใจของคุณ


2
ขอบคุณที่พูดถึง2fxสิ่งนั้น ฉันมักจะสับสนกับf2x
Yar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.