Tôi đang cố gắng xác định một macro sẽ nhanh chóng tạo ra một danh sách các từ ngẫu nhiên.
Tôi muốn macro biến nó thành một danh sách như
a
b
c
d
e
vào đây
arezzo
bywords
czars
détente
eyrie
Những gì tôi có cho đến nay:
- đặt con trỏ trên chữ
a
- bắt đầu ghi macro
qq
a
vào chế độ chèn<C-x><C-k> - perform dictionary completion on the character before cursor - in this case the letter
a`<C-p>
chọn mục cuối cùng trong danh sách hoàn thành xuất hiện, trên hệ thống của tôi đó là từarezzo
. (NB Tôi đãlongest
bao gồm trong'completeopt'
cài đặt của mình , được yêu cầu<C-p>
để hoạt động theo cách này trong khi hoàn thành'set completeopt=longest,menuone,preview'
:).<C-y>
chấp nhận hoàn thành^[^[
thoát chế độ chènj
chuyển xuống dòng tiếp theo, sẵn sàng thực hiện thao tác tương tự trên dòng tiếp theoq
dừng ghi âm
Khi tôi tạo macro và thực hiện các bước theo cách thủ công, mọi thứ đều hoạt động tốt, tuy nhiên khi tôi thực thi macro, tôi thấy một thông báo nhấp nháy trong dòng lệnh như:
quét tập tin từ điển
và không có gì xảy ra, trong số các lệnh trong macro chỉ j
được chạy, tức là con trỏ di chuyển xuống dòng, nhưng không có lệnh nào hoàn thành chạy.
Có thể sử dụng hoàn thành chế độ chèn trong một macro không, và nếu vậy, làm thế nào tôi có thể làm điều đó?
set completeopt=longest,menuone,preview
các của nó longest
lựa chọn gây <C-p>
chèn ngay lập tức. Nếu tôi xóa longest
khỏi completeopt
chuỗi, tôi sẽ có hành vi tương tự như bạn. Ngoài ra, có các phím mũi tên làm việc! cảm ơn (tôi quên bạn có thể sử dụng chúng để điều hướng danh sách hoàn thành)
:set completeopt=
và a<c-x><c-k><esc>j
như vĩ mô của bạn.
<C-p>
bước của bạn ... khi tôi làm điều đó trong vim của mình, nó chỉ đưa ra thông báoback at original
- không chọn mục cuối cùng .. Tôi đã sử dụng phím mũi tên lên hai lần để chọn từ cuối cùng (trường hợp của tôiazures
), nhấn enter và sau đóEsc+j+q
.. nó hoạt động khá tốt khi thực thi macro