Lưu ý: Tôi giả sử bạn đang sử dụng a
đăng ký cho toàn bộ câu trả lời này, nhưng bạn có thể sử dụng bất kỳ đăng ký nào
Lưu ý2: <1b>
là Esc; bạn có thể chèn cái này với Ctrl+vvà sau đó Esc. Nó cũng có thể hiển thị dưới dạng ^[
(tùy thuộc vào display
cài đặt).
Nó không phải là một bản đồ; Vì vậy, nó có ý nghĩa mà :map
không làm việc. Nó được ghi lại trong một đăng ký, và bạn có thể thấy và chỉnh sửa nó như bất kỳ đăng ký nào.
Tất cả những gì qlàm là "xóa thanh ghi này và nối thêm bất kỳ tổ hợp phím nào vào nó" và tất cả những gì @làm là "đánh giá một thanh ghi dưới dạng các lệnh" .
Không có gì "khác biệt" về một macro, bạn có thể gọi bất kỳ đăng ký nào dưới dạng macro.
Để xem chỉ sử dụng:
:echo @a
Cũng giống như bất kỳ đăng ký.
Bạn cũng có thể sử dụng :registers
để xem tất cả các thanh ghi.
Để chỉnh sửa, bạn có thể thực hiện một số điều:
Cách đơn giản nhất bạn chỉ cần gán cho @a
, như vậy:
:let @a='iasd<1b>'
Điều này sẽ bắt đầu chế độ chèn ( i
), chèn asd
và Thoát trở lại chế độ bình thường.
Điều này không hữu ích cho việc chỉnh sửa mở rộng; bạn có thể sử dụng các hàm (ví dụ. substitute()
) hoặc có thể nối thêm thứ gì đó ( :let @a=@a . 'more'
), nhưng thay đổi thứ gì đó ở giữa không dễ dàng như vậy.
Tôi đã thấy rằng cách tốt nhất cho việc này, là bắt đầu một bộ đệm mới bằng :split
hoặc :tabnew
chỉnh sửa thanh ghi bằng cách chèn nó vào đó, chỉnh sửa nó, sau đó sao chép lại.
Bạn có thể sử dụng "apsẽ chèn văn bản vào bộ đệm (nơi a
đăng ký của bạn):
iThis is A<1b>
Bây giờ tôi chỉ có thể thay đổi dòng thành có thể:
iThis is an edited macro<1b>
Sau đó, tôi làm ^v$"ayđể kéo (sao chép) dòng này vào a
sổ đăng ký:
- ^ để bắt đầu dòng
- v cho chế độ trực quan
- $ cho cuối dòng
- "ay chọn lựa để đăng ký
a
Nếu bạn muốn, bạn có thể làm điều này mà không cần sử dụng chế độ trực quan với ^"ay$.
Bây giờ bạn có thể sử dụng @a, như thể đây là những gì bạn đã ghi lại ban đầu.
Bạn cũng có thể chỉ cần sử dụng yy, và sau đó @", nhanh hơn một chút. Tuy nhiên, điều này cũng sẽ sao chép dòng mới, và có thể gây ra tác dụng phụ ... Một cách khác để làm điều này nhanh hơn là sử dụng macro :-)
Enter
vào cuối bản ghi. Trong nhiều trường hợp, điều này có thể là lành tính, nhưng trong các trường hợp bạn đã cẩn thận tạo vị trí con trỏ ở cuối bản ghi, nó có thể ảnh hưởng đến độ lặp lại.