2011-01-26 43 views
155

Tôi đã chia cửa sổ theo chiều ngang. Bây giờ làm cách nào tôi có thể trở về chế độ bình thường, tức là không có cửa sổ chia nhỏ chỉ một cửa sổ mà không hủy tất cả các cửa sổ đang mở của tôi. Tôi có 5 và không muốn "bỏ", chỉ muốn thoát ra khỏi cửa sổ chia nhỏ.Hủy cửa sổ tách trong Vim

+6

Bất kỳ cơ hội nào bạn có thể chấp nhận câu trả lời của eckes? Nó hữu ích hơn nhiều so với cái hiện đang được chấp nhận ... –

Trả lời

210

Nhấn kiểm soát + w, sau đó nhấn q để đóng từng cửa sổ cùng một lúc.

Cập nhật: Cũng xem xét câu trả lời có thể hữu ích hơn cho bạn, liên quan đến :on (đọc bên dưới) nếu bạn không muốn thực hiện một cửa sổ tại một thời điểm.

+0

Nếu bạn có 5 splitq mở, tôi không chắc chắn rằng giải pháp của bạn sẽ thực sự hữu ích. –

+9

Tôi đồng ý nhưng OP không chọn câu trả lời và tôi không thể tự thay đổi. –

+4

Tôi khá chắc chắn rằng đây là câu trả lời đúng. Điều này đã làm cho tôi và nếu bạn nhìn vào câu hỏi của op, ông không muốn đóng cửa sổ mở khác của mình, chỉ là một trong những chia gần đây. – Zak

0

Được rồi tôi chỉ tách ra và lắp lại với phiên màn hình và tôi trở lại màn hình bình thường tôi muốn

5

Lệnh: hide sẽ ẩn hiện tập trung cửa sổ. Tôi nghĩ đây là chức năng bạn đang tìm kiếm.

Để di chuyển giữa các cửa sổ gõ Ctrl + w theo sau là một phím điều hướng (h, j, k, l, hoặc phím mũi tên)

Để biết thêm thông tin chạy :help window:help hide trong vim.

+0

Điều này thật tuyệt. Chrome (với plugin ssh) bẫy là "tab đóng" có hiệu quả vô hiệu hóa tất cả lệnh cửa sổ của vim. Có một giải pháp thay thế hữu ích. – rein

19

Hai lựa chọn thay thế để đóng cửa sổ hiện tại là ZZZQ, tương ứng sẽ lưu và không lưu thay đổi đối với bộ đệm được hiển thị.

+4

Điều này chắc chắn là "cách vim", crtl + w o có vẻ như vậy emacs. –

47

để đóng tất cả các cửa sổ nhưng hiện nay một trong những sử dụng:

CTRL + w, o

Đó là, đầu tiên CTRL + w và sau đó o.

+1

Tôi cũng tự hỏi nếu có một cách để hoàn tác một 'CTRL + W o' gõ vô tình. – Paolo

204

Để đóng tất cả các phần chia nhỏ, tôi thường đặt con trỏ trong cửa sổ đó sẽ là trên một -ly nhìn thấy và sau đó làm :on mà làm cho cửa sổ hiện hành trên cửa sổ -ly nhìn thấy được. Rất vui khi nhớ.


Edit::help :on chỉ cho tôi rằng các lệnh này đều giống nhau:

  • :on
  • :only
  • CTRL-wCTRL-o
  • Và vâng , al do đó CTRL-Wo có cùng tác dụng (như Nathananswered).

Mỗi trong số bốn cửa sổ này đóng tất cả các cửa sổ ngoại trừ cửa sổ đang hoạt động.

+0

'^ w_o' nằm trong tài liệu. Nó chỉ ở trên phần còn lại. –

+6

+1 Nếu cửa sổ khác chứa bất kỳ thay đổi không mong muốn nào, ': on' sẽ trả lời bằng' E445: Cửa sổ khác chứa các thay đổi' và sẽ không đóng cửa sổ khác. Ví dụ, tôi thường tạo một cửa sổ mới, và đọc vào một tập tin mà tôi muốn bị giật. Trong trường hợp này, Vim xem xét cửa sổ khác để có những thay đổi không được phép. Trong trường hợp này, hãy sử dụng ': on!' Để buộc đóng. – Sabuncu

1

Cũng giống như những người khác đã nói trước là cách để làm điều này là để nhấn ctrl +w và sau đó o. Điều này sẽ "tối đa hóa" cửa sổ hiện tại, trong khi đóng cửa sổ khác. Nếu bạn muốn có thể "không phóng to", có một plugin được gọi là ZoomWin cho điều đó. Nếu không, bạn phải tạo lại thiết lập cửa sổ từ đầu.

0

Tôi thấy rằng ctrl-w đến cửa sổ bạn muốn đóng, sau đó chỉ cần làm: q Điều này phù hợp với tôi.

+0

Đây là một câu trả lời trùng lặp thực sự, trùng lặp của một cái gì đó đã được ngồi đó trong hơn 3 năm. –

1

Tôi hiểu bạn có ý định tốt, tôi cũng sử dụng bộ đệm và thỉnh thoảng chia nhỏ nếu cần.

dưới đây là trích đoạn của tôi .vimrc

" disable macro, since not used in 90+% use cases 
map q <Nop> 
" q, close/hide current window, or quit vim if no other window 
nnoremap q :if winnr('$') > 1 \|hide\|else\|silent! exec 'q'\|endif<CR> 
" qo, close all other window -- 'o' stands for 'only' 
nnoremap qo :only<CR> 
set hidden 
set timeout 
set timeoutlen=200 " let vim wait less for your typing! 

nào phù hợp với công việc của tôi khá tốt

Nếu q được nhấn

  • ẩn cửa sổ hiện tại nếu có nhiều cửa sổ đang mở, khác cố gắng thoát khỏi vim.

nếu qo được nhấn,

  • đóng tất cả các cửa sổ khác, không có hiệu lực nếu chỉ có một cửa sổ.

Tất nhiên, bạn có thể bọc mà lộn xộn phần vào một chức năng, ví dụ:

func! Hide_cur_window_or_quit_vim() 
    if winnr('$') > 1 
     hide 
    else 
     silent! exec 'q' 
    endif 
endfunc 
nnoremap q :call Hide_cur_window_or_quit_vim()<CR> 

Sidenote: tôi remap q, kể từ khi tôi không sử dụng macro để chỉnh sửa, thay vì sử dụng :s, :g, :v và lệnh xử lý văn bản bên ngoài nếu cần, ví dụ: :'{,'}!awk 'some_programm' hoặc sử dụng :norm! normal-command-here.

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