Tìm kiếm lựa chọn trong vim


107

Tôi sử dụng các plugin vim và vim cho visual studio khi viết C ++. Thông thường, tôi thấy mình muốn tìm kiếm một chuỗi trong một hàm, chẳng hạn như mọi lệnh gọi đến object->public_member.memberfunc().

Tôi biết vim cung cấp một cách thuận tiện để tìm kiếm một từ duy nhất, bằng cách nhấn *#, và nó cũng có thể tìm kiếm các chuỗi đã nhập bằng cách sử dụng /lệnh gạch chéo phổ biến . Khi cố gắng tìm kiếm tất cả các trường hợp của một chuỗi dài hơn như ở trên, phải mất một lúc để nhập lại sau đó /.

Có cách nào để tìm kiếm lựa chọn không? Ví dụ: đánh dấu với v, sau đó sao chép với y, có cách nào để dán vào sau /không? Có lối tắt nào dễ dàng hơn không?


Câu trả lời:


154

Kiểm tra mẹo Vim này: Tìm kiếm văn bản được chọn trực quan

Hoặc bạn có thể chỉ cần kéo văn bản đã chọn bằng y và chuyển đến chế độ tìm kiếm / , sau đó bạn có thể dán văn bản được kéo cuối cùng bằng Ctrl + R 0


4
@CMS. Cảm ơn. Mẹo hay! Sử dụng: reg để xem những gì trong thanh ghi của bạn và sau đó sử dụng cntl-R N để lấy những gì trong thanh ghi N là tuyệt vời!
Rob Wells

85

Câu trả lời

  1. Yank văn bản bạn muốn tìm kiếm
  2. q/p
  3. Enter

Giải trình

q/hoạt động tương tự như tìm kiếm vani /ngoại trừ bạn đang ở chế độ lệnh, vì vậy pthực sự "dán" thay vì nhập ký tự p. Vì vậy, ở trên sẽ sao chép văn bản bạn đang tìm kiếm và dán nó vào tìm kiếm.

Để biết thêm chi tiết, loại :help q/


4
Tôi thích cái này, vì tôi thấy việc nhập <ctrl-r> quá bất tiện.
Ngày

Thông minh! Sử dụng emacs trong evil-mode, điều này thực sự hoạt động, trong khi câu trả lời được chấp nhận bị hỏng một cách thảm hại (có thể là do việc sử dụng Ctrlphím).
eestrada

2
Tuyệt vời cho các chuỗi đơn giản, nhưng không thoát khỏi các ký tự đặc biệt regex, như đã lưu ý trong nhận xét của câu trả lời khác này .
Bluu

1
Và bạn thậm chí không cần phải giật nó. Chọn nó trên thị giác, q/gvpnơi gvtượng trưng cho lựa chọn hình ảnh cuối cùng ...

1
@nwildner, q/gvpkhông hiệu quả với tôi. Bạn có thể làm rõ đề xuất của bạn?
bam

38

Sử dụng q / thay vì chỉ / . (Tương tự với q : ). Bây giờ bạn có thể VIM-chỉnh sửa thông qua lệnh và lịch sử tìm kiếm của mình! (Đôi khi hãy thử Ctrl-N và Ctrl-P).


10

Tôi vừa biết được (thông qua cuốn sách tuyệt vời Practical Vim ) rằng có một plugin cho điều đó. Bạn có thể tìm thấy plugin trên GitHub .

Plugin cho phép bạn tìm kiếm lựa chọn trực quan với *#.


5
Lưu ý rằng các câu trả lời khác không thoát ra. Sử dụng các phương pháp đó, bất kỳ siêu ký tự nào đã chọn sẽ không được tìm kiếm theo nghĩa đen, tùy thuộc vào magiccài đặt hiện tại . Điều này thậm chí có thể làm cho việc tìm kiếm các ký tự siêu lớn yêu cầu cân bằng không thành công. Plugin được đề cập ở đây sẽ thực hiện việc thoát trước khi tìm kiếm văn bản đã chọn.
Kurt Hutchinson

1
nó hoạt động, nhưng không may, bạn không thể sử dụng nđể đi đến mục tìm thấy bên cạnh, trong khi cách tiếp cận Cory và CMS làm phép ..
Ayrat

2

Bạn thực sự có thể chọn văn bản một cách trực quan và nhấn * và # để tìm kiếm lần xuất hiện tiếp theo ... Nó sẽ hoạt động tương tự, chỉ có một cảnh báo là:

Khoảng trắng trong vùng chọn khớp với bất kỳ khoảng trắng nào, khi tìm kiếm (tìm kiếm "hello world" cũng sẽ tìm thấy "hello" ở cuối dòng, với "world" ở đầu dòng tiếp theo).

http://vim.wikia.com/wiki/Search_for_visently_selected_text


2
đối với tôi, chọn văn bản một cách trực quan rồi nhấn * chỉ mở rộng lựa chọn trực quan của tôi.
martin jakubik

Bạn có thể không theo mặc định trừ khi bạn đưa vào vimrc các ánh xạ từ trang ..
Ayrat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.