Đây là một yêu cầu khá tò mò vì không có "chế độ" để ghi macro. Sau khi đào qua một số tài liệu tôi đã tìm thấy những điều sau đây trongusr_10
Bạn bắt đầu bằng cách di chuyển đến ký tự đầu tiên của dòng đầu tiên. Tiếp theo bạn thực hiện các lệnh sau:
qa Bắt đầu ghi một macro trong đăng ký a .
^ Di chuyển đến đầu dòng.
i # bao gồm "Chèn chuỗi #include" ở đầu dòng.
$ Di chuyển đến cuối dòng.
một "Nối dấu ngoặc kép kép (") vào cuối dòng.
j Đi đến dòng tiếp theo.
q Dừng ghi macro.
Điều nổi bật với tôi là dòng về "Bắt đầu ghi một macro khi đăng ký"
Vì mỗi macro sẽ được lưu vào một đăng ký theo mặc định, tôi đã hy vọng rằng chúng ta sẽ có thể nhìn thấy nó trong :reg
danh sách. Hóa ra nó hoạt động như một lá bùa!
Thí dụ:
Ở chế độ bình thường: qaisomething<Esc>
và bên trong :reg
chúng ta thấy mục!
"a isomething^[
Với kiến thức đó, bạn sẽ có thể "theo dõi" các thanh ghi để xác nhận rằng một macro đang được ghi lại (sử dụng một thanh ghi có tên trên mỗi bản ghi [bản đồ q
để luôn sử dụng cùng một thanh ghi (hoặc đại loại như thế)]
Nếu bạn gặp vấn đề hãy cho tôi biết và tôi sẽ cố gắng giúp bạn (vì chức năng này cũng mới đối với tôi: D)
chỉnh sửa
Để giải quyết vấn đề về một thanh ghi đang được sử dụng trong thời gian yank, tôi khuyên bạn nên xem xét một loại đăng ký đặc biệt mà bạn chỉ có thể sử dụng cho việc vimL
bạn đang viết (không có yank nào được tham gia vào đăng ký ( "ay
))
Đây là một chút thông tin từ :help registers
trên các thanh ghi có sẵn
Có mười loại thanh ghi: thanh ghi E354
Sổ đăng ký không tên ""
10 thanh ghi được đánh số "0 đến" 9
Thanh ghi xóa nhỏ "-
26 thanh ghi có tên "a đến" z hoặc "A đến" Z
ba thanh ghi chỉ đọc ":,"., "%
thanh ghi bộ đệm thay thế "#
thanh ghi biểu thức "=
Các thanh ghi lựa chọn và thả "*," + và "~
Thanh ghi lỗ đen "_
Đăng ký mẫu tìm kiếm cuối cùng "/
Giả sử rằng bạn có một thanh ghi mà bạn sẽ sử dụng bây giờ, vấn đề sẽ trở thành "làm sao tôi biết khi nào quá trình ghi bị dừng?". Để giải quyết vấn đề này, tôi sẽ xem xét autocmd-event
cho CursorHold
; ghi chú trong tài liệu trợ giúp có vẻ khá hứa hẹn (Tôi sẽ cố gắng tìm hiểu làm thế nào tôi có thể phân biệt con trỏ bình thường với sự kiện nhàn rỗi / không tồn tại xảy ra khi đăng ký của bạn được viết cho mục đích của macro)
Con trỏ
Khi người dùng không nhấn phím trong khoảng thời gian được chỉ định bằng 'updatetime'. Không được kích hoạt lại cho đến khi người dùng nhấn một phím (tức là không kích hoạt mỗi 'updatetime' ms nếu bạn rời Vim để pha cà phê. :) Xem | CoderHold-example | để xem trước các thẻ. Sự kiện này chỉ được kích hoạt ở chế độ Bình thường. Nó không được kích hoạt khi chờ đợi một đối số lệnh được gõ hoặc một chuyển động sau một toán tử. Trong khi ghi lại sự kiện CthonHold không được kích hoạt. | q |