2009-08-05 32 views

Trả lời

11

Để đạt được những gì bạn muốn, bạn phải mở cửa sổ quickfix/error sau khi gọi grep:

:copen 

Tôi có một tập lệnh tạo cho tôi mỗi khi tôi sử dụng grep.

+1

Làm cách nào để bạn mở tệp trong tab mới ở dòng cụ thể đó? – Amjith

1

Nếu bạn nhận được một danh sách các tập tin mà bạn có thể duyệt chúng một cách cây như qua

:cn 
:colder 

Để biết thêm thông tin

:help grep 

và cuộn xuống cuối của entry

12

Chỉ để hoàn thành, cũng như lệnh :copen, cũng có :cw, chỉ mở cửa sổ "quickfix" nếu có mục nhập (vì vậy nếu grep của bạn không có kết quả, nó sẽ không xuất hiện).

Tôi nghĩ rằng cách dễ nhất (không xác định một ánh xạ) làm cho các tập tin mở trong một tab mới sẽ được thực hiện:

:cw    " Open the quickfix window 
Ctrl-W T   " Switch the window into a new tab 
<ENTER>   " Open the file/line 

Ngoài ra, bạn có thể làm:

:cw    " Open the quick fix window 
Ctrl-W <ENTER>  " Open the file/line in a new window 
Ctrl-W T   " Move the new window to a new tab 

Nếu bạn muốn thực hiện theo mặc định, bạn có thể sử dụng các ô tự động BufEnterBufLeave để tạo và loại bỏ ánh xạ khi nhập và thoát khỏi cửa sổ quickfix; tuy nhiên, điều này có lẽ không tầm thường.

:help :cw 
:help :copen 
:help quickfix 
1

Tôi tìm thấy câu trả lời cho một câu hỏi rất giống nhau. Câu trả lời được trình bày ở trên, mặc dù chính xác, không thể mô tả một cách thuận tiện để mở TẤT CẢ các tệp trong cửa sổ QuickFix cùng một lúc ... vào bộ đệm hoặc tab.

Có vẻ như không phải là một xây dựng trong lệnh để làm điều đó, nhưng nó tầm thường như một plugin VIM ... ai đó đã làm nó ở đây http://pastebin.com/J9RwciFQ

Đó là 12 dòng mã (một chức năng). .. dán vào đây để giúp bạn tiết kiệm một nhấp chuột trong quá trình phân tích. Làm theo các liên kết pastebin nếu bạn đang cố gắng để thực hiện điều này mặc dù ... plugin của tôi được cài đặt trong thư mục mầm bệnh và tôi đã sửa đổi các plugin từ bản gốc một chút (chi tiết sau khi mã).

~/.v/b/v/p/quickfixopenall.vim 
" Create command 
command! QuickFixOpenAll :call StartQuickFixOpenAll() 

function! StartQuickFixOpenAll() 
    if empty(getqflist()) 
     return 
    endif 
    let s:prev_val = "" 
    for d in getqflist() 
     let s:curr_val = bufname(d.bufnr) 
     if (s:curr_val != s:prev_val) 
      exec "edit " . s:curr_val 
     endif 
     let s:prev_val = s:curr_val 
    endfor 
endfunction 

Vì vậy, một khi tôi có một kết quả grep Tôi hài lòng với ... các plugin có chức năng: QuickFixOpenAll ... Tôi đã phải sửa đổi các plugin như được đưa ra (thêm dòng sau vào quickfixplugin.vim). Và tôi đổi tên cho chức năng StartQuickFixOpenAll của mình ...

" Create command 
command! QuickFixOpenAll :call StartQuickFixOpenAll() 

Sau đó, bạn có tất cả các tập tin trong kết quả grep mở như bộ đệm ... nếu bạn muốn chạy bất kỳ hoạt động commeon như tìm/thay thế bạn có thể tiền tố lệnh thông thường với lệnh "bufdo" sẽ thực hiện lệnh của bạn trong tất cả ...trong loại VIM "help bufdo"

Bạn có thể sửa đổi thường xuyên plugin này nếu bạn muốn sử dụng các tab ... nó sử dụng "chỉnh sửa" có dấu phẩy ... chỉ thay thế bằng "tabe" và: QuickFixOpenAll sẽ mở mỗi bộ đệm kết quả trong một tab mới.

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