2012-06-25 29 views
6

Nếu tôi sử dụng :lopen, Vim mở cửa sổ quickfix và nếu tôi sử dụng :lcl trên cửa sổ có lỗi (hoặc cửa sổ quickfix), nó sẽ đóng .Cách tạo bản đồ chìa khóa để mở và đóng cửa sổ quickfix trong Vim

Những gì tôi muốn làm trong .vimrc của tôi là tạo ra một bản đồ mở ra các QuickFix như thế này:

nnoremap <F2> :lopen 10<CR> 

nhưng khi tôi nhấn F2 một lần nữa nó đóng nó bằng cách sử :lcl.

Có cách nào để biết cửa sổ quickfix có đang mở hay không và sau đó thực hiện :lcl?

Trả lời

4
+0

Điều này thực hiện chính xác những gì tôi cần cảm ơn. Tôi vẫn muốn một cái gì đó đơn giản hơn một chút mà không cần một plugin. 1 để được hướng dẫn, kịch bản đã giúp tôi tạo câu trả lời của riêng mình :) – Hassek

+0

Plugin có hai chức năng. Bạn có thể sao chép mã vào bạn 'vimrc'. – kev

+0

điều đó cũng đúng, tôi vẫn không hiểu tại sao nó trở nên phức tạp đến vậy. Cảm ơn bạn đã trả lời nhanh btw! – Hassek

2

Đây là một cách khác để làm điều đó, có lẽ bỏ qua một số chi tiết đẫm máu nhưng nó hoạt động:

function! ToggleQuickFix() 
    if exists("g:qwindow") 
    lclose 
    unlet g:qwindow 
    else 
    try 
     lopen 10 
     let g:qwindow = 1 
    catch 
     echo "No Errors found!" 
    endtry 
    endif 
endfunction 

nmap <script> <silent> <F2> :call ToggleQuickFix()<CR> 

Nếu không có lỗi các Lopen sẽ không làm việc quá Tôi cố gắng nắm bắt điều đó, trong trường hợp nó mở cửa sổ và tạo ra một biến. sau đó nếu nó không chỉ đóng nó lại.

Điều thú vị là cách tiếp cận này có thể được sử dụng cho mọi thứ bạn muốn chuyển đổi.

+0

Miễn là bạn chỉ cần mở cửa sổ Quickfix thông qua ánh xạ này, thì tốt. Nhưng hãy nhớ rằng biến trạng thái toàn cục của bạn sẽ không hoạt động khi cửa sổ quickfix được mở thông qua các phương tiện khác (autocmds, các plugin khác, v.v.) –

+0

đúng, tôi cần nhấn F2 hai lần trong trường hợp đó. Tôi đoán có một cách để hỏi nếu cửa sổ quickfix đang mở, điều đó sẽ làm thỏa thuận – Hassek

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