Hủy cửa sổ chia nhỏ trong Vim


231

Tôi đã chia cửa sổ của mình theo chiều ngang. Bây giờ làm thế nào tôi có thể trở về chế độ bình thường, tức là không có cửa sổ tách 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 khỏi cửa sổ tách.


7
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 ...
Kyle Strand

Câu trả lời:


288

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

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


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.
Warren P

4
Tôi khá chắc chắn rằng đây là câu trả lời chính xác. Điều này đã làm điều đó cho tôi và nếu bạn nhìn vào câu hỏi của op, anh ấy không muốn đóng các cửa sổ đang mở khác của mình, chỉ là cửa sổ mới tách.
Zak

1
Không giúp nếu bộ đệm hiển thị có chứa các thay đổi chưa được lưu. Nó nói tôi nên ghi đè với! nhưng tôi không biết làm thế nào Là một người mới, tôi đã mất.
musiKk

2
vì vậy hãy lưu nó Bạn không cần câu trả lời này nếu bạn không biết cách tiết kiệm. Có thể bạn thậm chí không có PERMISSION để lưu.
Warren P

1
Đến từ các trình soạn thảo GUI truyền thống, đây là một khái niệm khá kỳ lạ. Thiết lập hiddencó vẻ để giúp mặc dù. Mặc dù, ý của tôi là, làm thế nào để bạn thêm a! đến một phím tắt? Có phải là "Cw! Q", "Cw q!", "! Cw q", "C-! W q"? Tôi nghĩ không ai trong số họ nhưng tôi đã quên cách tạo bộ đệm mới vì vậy đây là một bài tập cho người đọc.
musiKk

265

Để đó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 :onmà làm cho cửa sổ hiện hành về cửa sổ -ly nhìn thấy được. Đẹp ghi nhớ.


Chỉnh sửa: :help :on cho tôi thấy rằng các lệnh này giống nhau:

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


8
+1 Nếu cửa sổ khác chứa bất kỳ thay đổi ngoài ý muốn, :onsẽ phản hồi E445: Other window contains changesvà 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 mà tôi muốn lấy từ đó. Trong trường hợp này, Vim coi cửa sổ khác có những thay đổi không được ghi nhận. Trong trường hợp như vậy, sử dụng :on!để buộc một gần.
Sabuncu

61

để đóng tất cả các cửa sổ nhưng sử dụng hiện tại:

CTRL+ w,o

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


3
Tôi cũng tự hỏi liệu có cách nào để hoàn tác một cách CTRL+W ođánh máy vô tình.
Paolo

30

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


10
Đây chắc chắn là "vim way", crtl + wo dường như rất emacs.
Andy Hayden

Tôi không thích Zvì tôi là người Đức. (Spoiler: Bố trí bàn phím nếu bạn thường xuyên chuyển đổi giữa cài đặt DE / EN)
Tino

6

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

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

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


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

6

Từ :help opening-window(tìm kiếm "Đóng cửa sổ" - /Closing a window)

  • :q[uit]đóng cửa sổ hiện tại và bộ đệm. Nếu nó là cửa sổ cuối cùng thì nó cũng sẽ thoát vim
  • :bd[elete] dỡ bộ đệm hiện tại và đóng cửa sổ hiện tại
  • :qa[all]hoặc :quita[ll]sẽ đóng tất cả bộ đệm và cửa sổ và thoát vim ( :qa!để buộc mà không lưu thay đổi)
  • :clo[se]đóng cửa sổ hiện tại nhưng giữ cho bộ đệm mở. Nếu chỉ có một cửa sổ thì lệnh này thất bại
  • :hid[e]ẩn bộ đệm trong cửa sổ hiện tại (Đọc thêm tại :help hidden)
  • :on[ly] đóng tất cả các cửa sổ khác nhưng để tất cả bộ đệm mở

5

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 làm việc cho tôi.


Đây thực sự là một câu trả lời trùng lặp, trùng lặp với một cái gì đó đã tồn tại hơn 3 năm.
Warren P

@WarrenP không giống như một bản sao. Tôi không tìm thấy bất kỳ câu trả lời nào khác mà đề cập đến ^W^W:qnhư một giải pháp khả thi để thoát khỏi sự chia rẽ. Lưu ý rằng ^W to the window you want to closerõ ràng ngụ ý nhiều cách sử dụng ^W^Wđể chuyển sang cửa sổ bạn muốn đóng ..
Tino

Lỗi của tôi. Cái còn lại là ^ W rồi o
Warren P

2

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

dưới đây là đoạn trích 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!

Điều này phù hợp với quy trình làm 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 nhiều cửa sổ mở, người khác cố gắng thoát vim.

nếu qobị ép,

  • đó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ể gói phần lộn xộn đó thành một hàm , 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>

Phụ chú : 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à bên ngoài lệnh xử lý văn bản nếu cần thiết, ví dụ :'{,'}!awk 'some_programm', hoặc sử dụng :norm! normal-command-here.


1

Giống như những người khác đã nói trước khi làm điều này là nhấn ctrl+ wvà sau đó o. Điều này sẽ "tối đa hóa" cửa sổ hiện tại, trong khi đóng các cửa sổ khác. Nếu bạn muốn có thể "tối đa hóa" nó, có một plugin có tên 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

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


Điều này không để lại vimchế độ cửa sổ phân chia, điều này chỉ để lại screenchế độ khung chia tách - có thể dễ bị nhầm lẫn, vì vậy có lẽ những người khác cũng vậy. BTW Tôi thấy tính năng màn hình này gây khó chịu, do đó bây giờ tôi mặc định tmuxcho phép gắn lại với tất cả các phần tách.
Tino
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.