2012-09-21 36 views
9

Có cách nào để tìm kiếm một số văn bản trong một thư mục và hiển thị kết quả tìm kiếm trong bộ đệm riêng biệt trong Vim không? (Giống như Sublime chữ Ctrl + Shift + F kết quả)Văn bản tìm kiếm Vim trong thư mục

Trả lời

23

Không, bạn không cần cần bất kỳ plugin nào. Mặc định :vimgrep (hoặc :vim) là tất cả các bạn cần.

Tìm kiếm foo trong mỗi tập tin trong thư mục hiện hành:

:vim foo * | cw 

Tìm kiếm foo trong mỗi tập tin JavaScript trong thư mục hiện hành:

:vim foo *.js | cw 

Tìm kiếm foo trong mỗi tập tin JavaScript trong trình thư mục hiện tại đệ quy:

:vim foo **/*.js | cw 

Tìm kiếm với từ khóa hiện tại trong mỗi tập tin trong thư mục hiện hành:

:vim <C-r><C-w> * | cw 
:vim <cword> * | cw 

(chỉnh sửa: sử dụng :cw[indow] thay vì :copen)

+0

Trông đẹp, nhưng có một cách để mở một tập tin với một trong những phát hiện kết quả mà không tập trung bộ đệm của nó? –

+0

Tất nhiên. Xem ': h quickfix'. Ví dụ: ': cc5' để nhảy tới lỗi số 5, ': cn' để nhảy tới lỗi tiếp theo,': cN' hoặc ': cp' để nhảy tới lỗi trước đó… – romainl

+0

OK, cảm ơn! –

9

Âm thanh như bạn cần ack.vim:

Plugin này là một mặt trận cho các module Perl App :: Ack. Ack có thể được sử dụng để thay thế cho 99% sử dụng grep. Plugin này sẽ cho phép bạn chạy ack từ vim và hiển thị kết quả trong cửa sổ chia nhỏ.

Cách sử dụng:

:Ack [options] {pattern} [{directory}] 
Search recursively in {directory} (which defaults to the current directory) for the {pattern}. 

tập tin có chứa các thuật ngữ tìm kiếm sẽ được liệt kê trong cửa sổ tách, cùng với số dòng của sự xuất hiện, một lần cho mỗi lần xuất hiện. [Nhập] trên một dòng trong cửa sổ này sẽ mở tệp và đặt con trỏ trên dòng phù hợp.

5

Các :grep lệnh đại biểu Vim các tìm kiếm đến grep công cụ bên ngoài (hoặc một sự thay thế tương thích như ack, thiết lập thông qua 'grepprg'). Ngoài ra, bạn có thể sử dụng :vimgrep, thực hiện tìm kiếm bên trong Vim. Điều này cho phép sử dụng để sử dụng các biểu thức chính quy Vim và các mẫu tổng thể giống nhau (như **/), nhưng nó thường chậm hơn vì mỗi tệp được đọc vào bộ đệm Vim.

Cả hai lệnh đều hiển thị kết quả trong cửa sổ quickfix, từ đó bạn có thể điều hướng đến các kết quả phù hợp.

Bạn không cần bất kỳ plugin nào cho điều này, mặc dù có một số plugin có sẵn để cố gắng xử lý đơn giản hơn hoặc hỗ trợ các lệnh tìm kiếm khác nhau (ví dụ: đã được đề cập ack.vim).

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