Các lệnh f và t làm gì trong Vim?


126

Ai đó có thể giải thích cho tôi những gì ftcác lệnh làm trong vim và chính xác cách chúng hoạt động không? Tôi dường như không thể tìm thấy thông tin này nhưng mọi người cứ nói với tôi rằng chúng rất hữu ích. Sẽ thực sự đánh giá cao một câu trả lời với một ví dụ nếu có thể, cảm ơn!

Câu trả lời:


204

Điểm dừng đầu tiên của bạn với những câu hỏi như thế này sẽ là trợ giúp nội bộ của vim :h f:h t. Tuy nhiên, trong trường hợp này, các mục đó là một chút khó hiểu mà không có ví dụ. Giả sử chúng ta có dòng này ( ^= vị trí con trỏ):

The quick brown fox jumps over the lazy dog.
^

Các lệnh này tìm các ký tự trên một dòng. Vì vậy, fbsẽ đặt con trỏ ở đây:

The quick brown fox jumps over the lazy dog.
          ^

tgiống như fnhưng đặt con trỏ trên ký tự trước. Vì vậy, tbsẽ cung cấp cho bạn:

The quick brown fox jumps over the lazy dog.
         ^

Bạn có thể nhớ các lệnh này như find và till. Ngoài ra, bạn có thể thêm vào các lệnh với một số để di chuyển đến lần xuất hiện thứ n của ký tự đó. Ví dụ, 3fbsẽ di chuyển đến b thứ ba ở bên phải của con trỏ. Câu ví dụ của tôi chỉ có một b, vì vậy con trỏ sẽ không di chuyển chút nào.


4
Cảm ơn rất nhiều, điều đó thật hoàn hảo, tôi hoàn toàn quên mất lệnh: h đây là tuần đầu tiên tôi sử dụng Vim, đây là một sự trợ giúp rất lớn!
Dan

1
Trong khi thực hiện 'fb', tôi được đưa đến b (rown). Làm thế nào tôi có thể trực tiếp đến b (r) sở hữu? Có cách nào, không có hjkl?
dangdis

15
Và nếu bạn viết các chữ cái viết hoa, thì nó sẽ nhảy lùi lại. Vì vậy, ví dụ Fbhay Tb.
be-ndee

2
@ancm như be-ndee đã nói, Fx hoặc Tx, trong đó x là ký tự để tìm kiếm.
mickey

1
Có lẽ không dễ để người mới bắt đầu không phụ thuộc vào :help, vì nó không luôn cung cấp lời giải thích tốt nhất cho đám đông không bí truyền. to [count]'ththậm chí không có nghĩa là gì?
Tycholiz

121

Chỉ cần thêm vào câu trả lời của Michael Kristofik , không có mô tả nào fhoặc thoàn chỉnh mà không đề cập đến ;.

Từ bảng cheat Vim này :

; "Lặp lại mới nhất f, t, F hoặc T [đếm] lần."

Vì vậy, để tiếp tục chủ đề của @ MichaelKristofik:

The quick brown fox jumps over the lazy dog.
^

fođể đi đến 'o' đầu tiên:

The quick brown fox jumps over the lazy dog.
            ^

và sau đó ;để đi đến cái tiếp theo:

The quick brown fox jumps over the lazy dog.
                 ^

1
các ; mẹo này khá hữu ích, mặc dù tôi không thấy nó hoạt động như thế nào với 't'. tôi đã thử và tôi bị kẹt ở cùng một vị trí cho dù lệnh t được lặp lại bao nhiêu lần.
Peter Perháč

@ PeterPerháč Bấm dấu chấm phẩy nhiều lần. Làm việc cho tôi.
LondonRob

@ PeterPerháč, tôi đoán nó khó hơn với lệnh t, vì khi tìm kiếm x, dấu chấm phẩy sẽ tìm thấy x giống nhau mỗi khi bạn nhấn; do đó không di chuyển. Nếu bạn nhấn l một lần và sau đó dấu chấm phẩy thì nó sẽ hoạt động.
mickey

@ PeterPerháč Hãy chắc chắn rằng bạn chưa có (một ký tự trước) lần xuất hiện cuối cùng trên dòng và nó sẽ tìm thấy lần xuất hiện tiếp theo.
Adam Evans

51

Tôi tìm thấy ftrất hữu ích khi kết hợp với dc. Ví dụ: ct:sẽ cho phép bạn thay thế mọi thứ từ con trỏ lên dấu hai chấm tiếp theo, nhưng không xóa dấu hai chấm. Bạn có thể nhớ nó là "thay đổi thành dấu hai chấm".


5
+1! Các thành ngữ như ct,hoặc ct)để nhanh chóng thay thế một hoặc một đối số cuối cùng cho một lệnh gọi hàm cảm thấy tuyệt vời để sử dụng.
nperson325681

15
Tôi thích vt:cbởi vì bạn không phát hiện ra luôn luôn phát hiện ra một chữ cái đã cho đúng 100%. Với vbạn có thể thấy lựa chọn hình ảnh, một gợi ý hình ảnh đẹp.
Bentley4 27/11/13

1
Tôi thích bản ghi nhớ, "thay đổi cho đến dấu hai chấm"
Patrick Michaelsen

34

fxnhảy đến tiếp theo x trên đường dây.

txnhảy đến nhân vật ngay trước dòng tiếp theo x .

Bạn có thể sử dụng FxTxđể đạt được trước đó x .

Bạn có thể sử dụng 2fxđể nhảy đến thứ hai xtrên dòng.

Vì vậy, fFtTrất hữu ích khi bạn muốn nhanh chóng chuyển đến bộ dấu ngoặc đơn ( f() tiếp theo hoặc xóa mọi thứ từ con trỏ đến, nhưng loại trừ, trước đó =( dT=), v.v.

Xem :h motion.txt. Nó sẽ thổi vào tâm trí của bạn.


2
cảm ơn vì đã đề cập đến 2fxđiều đó Tôi luôn nhầm lẫn nó vớif2x
Yar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.