2008-12-12 45 views
92

Tôi sử dụng các plugin vim và vim cho studio trực quan 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, ví dụ như mọi cuộc gọi đến object->public_member.memberfunc().Tìm kiếm lựa chọn trong vim

Tôi biết vim cung cấp một cách thuận tiện để tìm kiếm một từ, bằng cách nhấn *# và cũng có thể tìm kiếm các chuỗi đã nhập bằng lệnh cắt giảm phổ biến /. Khi cố gắng tìm kiếm tất cả các trường hợp của chuỗi dài hơn giống 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 bằng v, sau đó sao chép với y, có cách nào để dán sau / không? Có lối tắt dễ dàng hơn không?

+0

có thể trùng lặp của [Làm thế nào để tìm kiếm các văn bản đã chọn?] (Http://stackoverflow.com/questions/8587136/how-do-i-tìm-cho-đã-chọn-văn bản) – acm

Trả lời

141

Kiểm tra tip Vim này: Search for visually selected text

Hoặc bạn chỉ có thể yank văn bản đã chọn với y và đi đến chế độ tìm kiếm /, sau đó bạn có thể dán nội dung giật cuối cùng với Ctrl + R 0

+1

Rất hay. CMS = nhanh + chi tiết. – Marcin

+3

@CMS. Cảm ơn. Mẹo tuyệt vời! Sử dụng: reg để xem những gì trong sổ đăng ký của bạn và sau đó sử dụng cntl-R N để có được những gì trong đăng ký N là tuyệt vời! –

+0

@Rob & @Marcin, bạn được chào đón, hạnh phúc Vimming! – CMS

35

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

+1

+1 Mẹo thú vị! Không thực sự liên quan, nhưng vẫn rất hữu ích. – Marcin

+4

Sau khi nhìn thấy câu trả lời của Cory Klein, tôi nhận thấy tôi rất sai về việc này không liên quan gì. Nó thực sự làm cho toàn bộ quá trình nhanh hơn một chút đối với tôi. (Không cần phím Ctrl!) – Marcin

66

Xây dựng câu trả lời của núi lửa, dưới đây là một cách khác để làm những gì bạn muốn.

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

Giải thích

q/ hoạt động tương tự như tìm kiếm vanilla / ngoại trừ bạn đang ở chế độ lệnh để p thực sự "dán" thay vì nhập ký tự p. Vì vậy, ở trên sẽ yank các ký tự bạn đang tìm kiếm, sau đó dán chúng vào một tìm kiếm.

(xem :help q/)

+3

Tôi thích cái này, bởi vì tôi thấy gõ rất không tiện lợi. – Jan

+0

Tuyệt vời! 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 phá vỡ miserably (có lẽ vì việc sử dụng phím' Ctrl'). – eestrada

+1

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 [bình luận của câu trả lời này] (http://stackoverflow.com/questions/363111/search-for-selection-in-vim#comment44689091_14747639). – Bluu

2

Bạn thực sự có thể chọn văn bản trực quan và bấm * và # để tìm kiếm sự xuất hiện tiếp ... Nó sẽ làm việc như nhau, caveat duy nhất 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 "hello" ở cuối dòng, với "world" ở đầu dòng tiếp theo).

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

+2

đối với tôi, chọn văn bản trực quan, sau đó nhấn * chỉ mở rộng lựa chọn trực quan của tôi. –

+0

Bạn không thể theo mặc định trừ khi bạn đặt vimrc bản đồ từ trang .. – Ayrat

9

Tôi chỉ học được (thông qua các cuốn sách tuyệt vời thực Vim) rằng có một plugin cho điều đó. Bạn có thể tìm thấy plugin on GitHub.

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

+4

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

+0

nó hoạt động, nhưng thật không may, bạn không thể sử dụng 'n' để đi đến mục tìm thấy tiếp theo, trong khi phương pháp tiếp cận của Cory và CMS cho phép .. – Ayrat

-1

Highlight văn bản với v và sử dụng // để tìm kiếm.

Bạn cũng có thể yank văn bản đã chọn sử dụng y và sau đó dán bằng p

+0

nope,' v // 'không hoạt động với tôi - nó mở rộng văn bản đã chọn nhiều hơn .. – Ayrat

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