Chọn các dòng sau đó nhấn :
để vào chế độ lệnh. Vim sẽ tự động điền vào '<,'>
, giới hạn phạm vi đối với các dòng đã chọn. Đối với ví dụ của bạn, bạn có thể sử dụng :s
lệnh để thực hiện hoán đổi:
:'<,'>s/\(\w\+\), \(\w\+\)/\2, \1/
Thao tác này sẽ hoán đổi hai từ được phân tách bằng dấu phẩy trên mỗi dòng trong lựa chọn trực quan.
Bạn cũng có thể sử dụng '<
và '>
giống như bất kỳ dấu trang hoặc vị trí dòng nào khác, ví dụ như một phần của lệnh di chuyển, vì vậy ở chế độ bình thường d'<
sẽ xóa từ vị trí con trỏ hiện tại đến đầu dòng đầu tiên trong vùng chọn trực quan. Các dấu vẫn có hiệu lực ngay cả khi khối không còn được đánh dấu trực quan.
Nếu bạn muốn phát lại một macro đã ghi trên mọi dòng, bạn cần thực hiện macro bằng :normal
lệnh. Thật không may, :normal
lệnh không hoạt động trên một loạt các dòng, nhưng bạn có thể khắc phục điều đó bằng :global
lệnh. Thao tác này chạy một :ex
lệnh trên mọi dòng khớp với regex, vì vậy bạn có thể thực hiện điều này:
:'<,'>g/^/ norm @a
Giải trình:
:'<,'> for every line in the visual block
g/^/ on every line that matches the regex /^/ - i.e. every line
norm run in normal mode
@a the macro recorded in a