2009-08-18 31 views
63

Tôi muốn chạy macro tôi vừa ghi trong đăng ký "x" trên mỗi dòng của bộ đệm mở, từ con trỏ đến cuối bộ đệm, trong vim. Làm thế nào để làm điều đó?phát lại macro vim cho đến khi kết thúc vùng đệm

Tôi biết tôi có thể phát lại n vĩ mô lần:

[email protected] 

... hoặc chỉ cần giữ phím @ cho đến khi tôi đạt được dòng cuối cùng, nhưng tôi muốn chỉ cần nhấn một vài tổ hợp phím và được thực hiện với nó.

Xin cảm ơn trước.

+0

15 @ x không hoạt động trên Windows gVIM –

Trả lời

77

Cá nhân tôi sẽ làm

VG:normal @x 

Chỉnh sửa: thay đổi đăng ký một trong những bạn đã chỉ định.

+0

Đẹp nhất. Tôi thích rằng giải pháp này chỉ hoạt động trên khu vực được chọn. – Kevin

+0

Tôi đã ánh xạ điều này tới nnoremap <[email protected]> VG: norm @ q PAS

5

[email protected], trừ khi bạn có một bộ đệm rất lớn ...

+3

tại sao không chỉ '%: normal @ x' hoặc '1, $: normal @ x'? –

+3

điều này chắc chắn là giải pháp thanh lịch hơn - tôi đoán '99999 @ x' chỉ là điều tự nhiên bạn nghĩ ra khi bạn vội vàng :) – Peter

+1

Sẽ không 9999999 @ x chạy nó nhiều lần trên dòng cuối cùng trừ khi bạn có chính xác 999999 dòng? –

17

làm vĩ mô đệ quy:

[email protected] 

ví dụ:

[email protected] 

Nó sẽ upcase từ đầu tiên từ dòng hiện tại để phần cuối của tệp với @a duy nhất. Nhưng chắc chắn rằng "một thanh ghi trống:

let @a="" 
+3

Tuyệt vời. Cách tiếp cận này hữu ích hơn so với phương pháp '%: normal' vì nó thể hiện bất kỳ chuyển động dòng nào trong macro, vì vậy rất hữu ích khi các dòng không giống hệt nhau trong biểu mẫu. Tôi thấy dễ dàng hơn khi tạo macro 'a' để xác định hành động và sau đó có macro 'b' làm bit đệ quy, nghĩa là qb @ a @ bq. –

+2

Tránh điều này nếu macro của bạn liên quan đến tìm kiếm vì nó sẽ tiếp tục từ trên cùng. 'ctrl-c' để dừng nếu điều đó xảy ra! –

+2

@IainBallard, ': set nowrapscan' làm cho nó thất bại và dừng lại khi đến cuối tập tin. – ericbn

53

Bạn có thể làm (trong chế độ lệnh)

:%normal @x 
0

Từ vim wiki, phiên bản rút gọn: qqqqq để ghi lại macro @qq để kết thúc ghi lại @q để thực thi (và sẽ chạy đến cuối tệp)

+1

Vui lòng, bạn có thể thêm tham chiếu vào tài liệu không? – aturegano

+1

@aturegano Tôi nghĩ tác giả có ý định sử dụng macro đệ quy. Xem [Vim Wiki: Ghi lại Macro đệ quy] (http://vim.wikia.com/wiki/Record_a_recursive_macro) để biết thêm thông tin. – dylnmc

Các vấn đề liên quan