Lặp lại lệnh chế độ bình thường cuối cùng, bao gồm di chuyển, trong Vim


25

Trong Vim, với ., tôi có thể lặp lại lệnh chế độ bình thường cuối cùng; ví dụ:

dd.

xóa một dòng hai lần.
Nhưng, nếu tôi gõ

5j.

con trỏ không di chuyển xuống 10 dòng. Làm cách nào để lặp lại lệnh chế độ bình thường cuối cùng, đặc biệt là di chuyển?

Câu trả lời:


14

vimThật không may làm điều này không may. Điều tốt nhất bạn có thể làm là cài đặt plugin repmo.vim , lặp lại các lệnh di chuyển có số đếm.


11

nó có thể thực hiện được ngay cả trong vani vim, nhưng khả năng ứng dụng phụ thuộc vào trường hợp sử dụng của bạn, tức là. tần suất bạn sẽ cần lặp lại nó, vì nó cần thêm vài lần nhấn phím để làm cho nó lặp lại.


Tùy chọn 1: biến nó thành một hoạt động chế độ lệnh

sử dụng di chuyển xuống 5 dòng làm ví dụ, bạn có thể làm:

  1. nhập :norm 5j, nó sẽ di chuyển con trỏ xuống 5 dòng
  2. sử dụng @:để lặp lại phong trào

:norm là viết tắt của bình thường, bất kỳ chuỗi nào sau đây được coi là tổ hợp phím của bạn ở chế độ bình thường


Tùy chọn 2: Sử dụng macro

  1. qa(lưu macro vào đăng ký a, bạn có thể chọn đăng ký của riêng mình như thế nào qb, qc)
  2. 5j
  3. q (kết thúc ghi macro)
  4. @ađể lặp lại thao tác đã ghi của bạn (thay thế abằng tên đăng ký bạn đã chọn, vd. @b, @c)

macro đòi hỏi nhiều sức mạnh tâm linh hơn để thiết lập nhưng nó lặp lại nhiều hơn theo nghĩa là bạn có thể lưu trữ nhiều hoạt động trong các thanh ghi khác nhau mà không bị chi phối bởi các hoạt động mới nhất.


7

Trên thực tế .lặp lại thay đổi cuối cùng , không phải lệnh chế độ bình thường cuối cùng. Như Paul đã nói, bạn sẽ cần một plugin để cho phép bạn lặp lại chuyển động.

Xem " :help .".


4

Bạn có thể lặp lại thay đổi với .. Chuyển động có thể được lặp lại với ;lệnh. Lệnh này dường như là mới và thực hiện một điều tương tự với tập lệnh repmo.vim được đề cập trong các câu trả lời khác.

Ví dụ, để chuyển sang cái thứ hai tiếp theo c, nhấn 2fc. Sau đó để làm lại, chỉ cần gõ ;.


11
;không mới Đó là một lệnh vi tiêu chuẩn. Vi nhớ loại và mục tiêu nhân vật (nhưng lập luận không số) của người cuối cùng f/ F/ t/ Tchuyển động và ;lặp đi lặp lại nó. Nó không lặp lại các chuyển động khác, tuy nhiên.
pyrocrasty

Điều này đã hoàn thành những gì tôi đang tìm kiếm để làm! cảm ơn bạn. và cảm ơn bạn @pyrocrasty vì đã làm rõ!
Paul

0

Bạn có thể chọn các dòng bạn muốn thay đổi và thực hiện lệnh chấm bình thường cuối cùng

v5j .............. visual select next 5 lines
:'<,'>norm! .      normal mode execute over selection last command '.'
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.