2011-07-10 26 views
32

Làm . lặp lại thay đổi cuối cùng. Làm 2. lặp lại thay đổi cuối cùng hai lần.Làm cách nào để lặp lại các thay đổi n cuối cùng trong Vim?

Nhưng hãy tưởng tượng tôi muốn lặp lại thay đổi trước lần thay đổi cuối cùng. Làm thế nào để làm điều đó trong Vim?

+7

Điều đó có vẻ là một tính năng tuyệt vời để yêu cầu. (http://www.vim.org/sponsor/vote_results.php); Tôi muốn có 'cỗ máy thời gian' như ghi macro thực tế sau – sehe

Trả lời

26

Đừng nghĩ rằng bạn có thể, xem :help . Tuy nhiên, những gì bạn có thể làm là ghi lại macro cho chỉnh sửa, bạn có nhiều sổ đăng ký để chọn từ {0-9a-zA-Z"} (chữ hoa để nối thêm). Sau đó sử dụng ví dụ: @u để chỉnh sửa 1, @t để chỉnh sửa 2, v.v.

lời khuyên tuyệt vời về ghi từ Best of VIM Tips

" Recording (BEST TIP of ALL) 
qq # record to q 
your complex series of commands 
q # end recording 
@q to execute 
@@ to Repeat 
[email protected]@ to Repeat 5 times 
[email protected]        : Make an existing recording q recursive *N* 
" editing a register/recording 
"qp        :display contents of register q (normal mode) 
<ctrl-R>q       :display contents of register q (insert mode) 
" you can now see recording contents, edit as required 
"qdd        :put changed contacts back into q 
@q        :execute recording/register q 

Hãy nhìn vào những để biết thêm gợi ý cho lặp đi lặp lại:

:&  last substitute 
:%& last substitute every line 
:%&gic last substitute every line confirm 
g%  normal mode repeat last substitute 
g&  last substitute on all lines 
@@  last recording 
@:  last command-mode command 
:!! last :! command 
:~  last substitute 
:help repeating 
+1

vâng, tôi đã biết về macro. chỉ cần tự hỏi nếu có một cách đơn giản hơn để làm điều này. Tôi vẫn nhận được sử dụng để vim và macro chưa được trong tôi để tìm hiểu/danh sách đào tạo cơ bắp. dù sao cũng cảm ơn bạn :) – Sofia

4

tôi đã viết the RepeatLast.vim plugin để giải quyết yêu cầu này chính xác. Nó cung cấp một ràng buộc khóa 5\..

Nó cho phép ghi macro mọi lúc, điều này có thể không mong muốn đối với mọi người. Nhưng nếu bạn có thể sống với điều đó, nó hoạt động trong 99% trường hợp sử dụng.

phiên bản

Phát triển: https://github.com/joeytwiddle/RepeatLast.vim (Xin vui lòng phản hồi!)

Hãy cẩn thận: Ngoài những khó chịu "ghi" thông điệp (:set ch=2), 1% số lần nó không làm việc một cách hoàn hảo là do:

  1. những khó khăn gây ra sự kiện CursorHold chậm mà không làm mất tổ hợp phím nhanh lặp đi lặp lại
  2. ghi âm không mong muốn của [Space] và [Enter] phím khi chúng tôi er đang trả lời lời nhắc.

macro kỷ lục Đào tạo cơ q của bạn để trước emptively có thể là một cách tiếp cận tốt hơn trong dài hạn. ;-)

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