Lưu macro vim


166

Có ai biết làm thế nào để lưu / tái sử dụng các macro được ghi bên trong trình soạn thảo vim không?

Câu trả lời:


216

Sử dụng qtheo sau là một chữ cái để ghi lại một macro. Điều này chỉ cần đi vào một trong các thanh ghi sao chép / dán để bạn có thể dán nó như bình thường với các lệnh "xphoặc "xPtrong chế độ bình thường.

Để lưu nó, bạn mở .vimrc và dán nội dung, sau đó thanh ghi sẽ xuất hiện vào lần tiếp theo bạn bắt đầu vim.
Các định dạng là một cái gì đó như:

let @q = 'macro contents'

Hãy cẩn thận của dấu ngoặc kép, mặc dù. Họ sẽ phải được trốn thoát đúng cách.

Vì vậy, để lưu một macro bạn có thể làm:

  • Từ chế độ bình thường: qq
  • nhập bất cứ lệnh nào
  • Từ chế độ bình thường: q
  • mở .vimrc
  • "qpđể chèn macro vào let @q = '...'dòng của bạn

3
Ngoài ra, nếu bạn cần chèn các ký tự đặc biệt (như thoát, trong trường hợp của tôi), hãy sử dụng CTRL-V <ESC>trong chế độ chèn để chèn đúng ký tự. Một nghĩa đen <ESC>không hoạt động
adam_0

5
"Tuy nhiên, lưu ý rằng phương pháp trên bằng cách sử dụng: let sẽ không hoạt động như mong đợi đối với bất kỳ macro nào bạn thực hiện kết thúc bằng ký tự <CR> hoặc <NL> (trả về vận chuyển hoặc dòng mới).". vim.wikia.com/wiki/Macros#Saving_a_macro
Paolo

2
Các trích dẫn (xung quanh nội dung vĩ mô) có cần thiết không?
dùng2472071

15
Ctrl+r Ctrl+r registerNameđầu vào đăng ký nội dung mà không giải thích chúng - tốt hơn "qp. +1 cho phương thức in-vim.
LAFK nói Phục hồi lại

@ adam_0 Bạn có thể giải thích về điều này? Có lẽ, bao gồm một ví dụ? Tôi không thể tìm ra cách nhúng các ký tự đặc biệt, cụ thể là esc. Tôi đã thử mọi cách kết hợp nhập một lối thoát vô ích. "Mã khóa" kết thúc làm hỏng macro và toàn bộ chuỗi được in.
GH05T

21

Đối với một giải pháp mạnh mẽ hơn, bạn có thể kiểm tra Marvim .

Nó cho phép bạn lưu macro trong một không gian tên cụ thể (hoặc sử dụng filetype làm không gian tên mặc định) và sau đó bạn có thể tìm kiếm các macro đã lưu và tải chúng trong một thanh ghi sẵn sàng để sử dụng.

Nếu bạn sử dụng lại nhiều macro, điều này khá hữu ích.


6
Chỉ muốn thứ hai này và nói cách dễ dàng để thiết lập marvim- sao chép một tệp vào thư mục / plugin của bạn, sau đó sử dụng F3 để lưu macro và F2 để chạy.
Raine Revere

18

Viết các macro của bạn bên trong ~ / .vimrc của bạn, để xác định một macro được khởi chạy bởi CTRL + O bằng ví dụ, thêm dòng sau vào ~ / .vimrc:

map <C-O> MACROTEXT

Khi bạn ghi lại một macro bằng cách nhập, qabạn có thể truy xuất văn bản macro của mình bằng cách nhập"ap


Sử dụng "ap hoặc tương đương không hoạt động, nhưng bạn có thể nhận được cùng một thông tin bằng cách: reg
DShook

"Ap sẽ đề cập đến một macro được ghi trong asổ đăng ký
Tyler Fowle

11

Lệnh :mkexrc(hoặc :mkvimrc) có thể được sử dụng để lưu tất cả các hiện tại :map:setcài đặt vào một tệp. Xem :help mkexrcđể biết chi tiết.


4

Bạn có thể làm như thế này trên của bạn ~/.vimrc

:let @a="iHello World!\<CR>bye\<Esc>"

LƯU Ý: Bạn phải sử dụng dấu ngoặc kép để có thể sử dụng các phím đặc biệt như trong \<this silly example>.

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.