2012-02-19 30 views
11

Không thể tìm ra cách tự động chọn đối sánh regex trong chế độ trực quan.Vim - Lệnh chọn trực quan một trận đấu regex?

Ví dụ, bằng tay, tôi có thể tìm kiếm một từ

/word 

Nó vùng đất con trỏ vào ký tự đầu tiên của trận đấu "từ".
Sau đó, tôi nhấn v để vào chế độ Hình ảnh và nhấn llll để chọn toàn bộ "từ".

Bây giờ tôi muốn thực hiện điều này bằng macro và tôi không biết thời lượng của trận đấu trước thời hạn.

Tôi mong rằng Vim sẽ tự động xác định một số dấu tích hợp ở đầu và cuối của kết quả phù hợp hiện tại, để tôi có thể `cho họ. Nhưng tôi không thể tìm thấy bất kỳ thông tin nào về điều đó.

Điều tôi muốn là gán lại Ctrl+n cho macro để đưa tôi đến kết quả tiếp theo và chọn nó trong chế độ trực quan, tức là không chỉ làm nổi bật kết quả phù hợp. (Để song song cách đưa bạn đến kết quả tiếp theo.)

Nếu bạn thắc mắc tại sao, vì tôi muốn tạo nếp gấp dựa trên các đối sánh regex (như Ctrl+n, zf), nhưng tôi chắc chắn nó sẽ đến tiện dụng trong các trường hợp khác nữa.

Trả lời

6
:noremap <C-n> //s<CR>v//e+1<CR> 

Chỉnh sửa tóm tắt: là // e, nhưng // e + 1 đã làm việc cho tôi (cũng chọn ký tự cuối cùng của trận đấu).

+0

Đó chính xác là những gì tôi cần (trừ thử và sai cho thấy '// e + 1' đưa tôi đến ranh giới sau lần cuối cùng của trận đấu; đã chỉnh sửa). Khéo léo! Sau khi không tự mình tìm thấy nó, tôi đã mong rằng nó sẽ rất khó để làm những gì tôi muốn. –

+1

Phải, tôi hiểu. Khi tùy chọn ''selection'' được đặt thành' includes', thì '// e' hoạt động ở trên. Khi nó được đặt thành 'exclusive', thì' // e + 1' hoạt động. Tôi sử dụng ': hành xử mswin' mà đặt' 'selection'' thành 'exclusive'. –

7

// e đưa bạn đến ký tự cuối cùng của tìm kiếm cuối cùng. Thông tin thêm -: help {offset}.

Bạn có thể tìm cách khôi phục bộ đệm tìm kiếm cũ here.

+0

Điều này làm việc tuyệt vời, đối với tôi, cảm ơn bạn. Điều không phải là bản đồ không hoạt động (hoặc có lẽ nó không theo cách tôi cần?) –

4

Vì lợi ích của những người vấp ngã câu hỏi này trong tương lai, vim giờ đây có tính năng này được tích hợp sẵn: gn (và anh chị em thân của nó gN) sẽ nhảy tới trận đấu tiếp theo (tương ứng, trước đó) và chọn trực quan . Nó cũng có thể được sử dụng như một chuyển động; ví dụ. cgn sẽ chuyển sang trận đấu tiếp theo và thay đổi nó.

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