2009-09-06 32 views
7

Tôi đã ánh xạ lại [[]] để tìm mẫu trước đó và tiếp theo trong tệp. Ánh xạ như sau:VIM Khôi phục mẫu tìm kiếm cuối cùng

nmap [[ ?^.section <CR> 
nmap ]] /?section /<CR> 

Vấn đề là khi tôi sử dụng bất kỳ trong số họ, tôi "lỏng lẻo" mô hình tìm kiếm hiện tại, vì vậy khi làm n cho trận đấu tiếp theo, tôi tìm kiếm "phần" bên cạnh .

Có cách nào để khôi phục mẫu tìm kiếm hoặc cho các ánh xạ [[]] không ảnh hưởng đến mẫu tìm kiếm hiện tại không?

Trả lời

14

Bạn có thể làm điều đó bằng tay bằng cách lưu và khôi phục sổ đăng ký "/. Tuy nhiên, cách tốt hơn là chỉ cần di chuyển mã của bạn vào một hàm; trở về từ một hàm sẽ tự động khôi phục nó.Để trích dẫn tài liệu VIM:

                                                                                                                                                                                                                                                            * Chức năng tìm kiếm-undo *
Các sử dụng mô hình tìm kiếm cuối cùng và lệnh redo "" sẽ không bị thay đổi bởi hàm. Điều này cũng ngụ ý rằng hiệu ứng của |: nohlsearch | được hoàn tác khi hàm trả về.

này sẽ giống như thế này trong .vimrc của bạn:

function! Ayman_NextSection 
    /?section/
endfunction 
nmap ]] call Ayman_NextSection()<CR> 

Hy vọng rằng sẽ giúp.

+0

Tùy thuộc vào những gì bạn đang cố gắng làm 'histdel()' cũng có thể hữu ích. Thao tác này sẽ tự động xóa tìm kiếm hiện tại của bạn, nhưng không xóa tìm kiếm khỏi lịch sử tìm kiếm (được truy cập bằng 'q /') –

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