Vim에서 분할 창 취소


231

창문을 가로로 나눕니다. 이제 어떻게 열려있는 모든 창을 취소하지 않고 하나의 창만 분할 창없이 정상 모드로 돌아갈 수 있습니까? 5가 있고 "종료"하고 싶지 않고 분할 창에서 나가고 싶습니다.


7
eckes의 답변을 받아 들일 수 있습니까? 그것은 현재 받아 들여진 것보다 훨씬 더 도움이됩니다.
Kyle Strand

답변:


288

Control+ w를 누른 다음 한 번 q에 각 창을 닫으려면 누르십시오 .

업데이트 : 또한 :on 한 번에 하나의 창을 원하지 않는 경우 (아래 읽기) 와 관련하여 더 유용한 eckes 답변을 고려하십시오 .


9
동의하지만 OP는 eckes 답변을 선택하지 않았으므로 직접 변경할 수 없습니다.
Warren P

4
나는 이것이 정답이라고 확신합니다. 이것은 나를 위해 그것을했고 당신이 op의 질문을 보면, 그는 다른 열린 창을 닫고 싶지 않고 최근에 나뉘어 진 창을 닫고 싶었습니다.
Zak

1
표시된 버퍼에 저장되지 않은 변경 사항이 포함되어 있으면 도움이되지 않습니다. 그것은 재정의해야한다고 말합니다! 그러나 나는 방법을 모른다. 초보자로서 나는 지금 길을 잃었다.
musiKk

2
저장하십시오. 저장 방법을 모르면이 답변이 필요하지 않습니다. 저장할 권한이 없을 수도 있습니다.
Warren P

1
전통적인 GUI 편집기에서 나온 이것은 매우 이상한 개념입니다. hidden그래도 설정 이 도움이 될 것 같습니다. 비록 내가 의미하는 바는 어떻게 추가합니까! 바로 가기? "Cw! q", "Cw q!", "! Cw q", "C-! w q"입니까? 나는 그것들 중 어느 것도 생각하지 않지만 이미 새로운 버퍼를 만드는 방법을 잊어 버렸으므로 이것이 독자를위한 운동입니다.
musiKk

265

모든 스플릿을 닫으려면, 나는 보통이어야한다 창에 커서 위치 할 다음 -ly 볼 하나 :on하여 현재 창 만드는 -ly 볼 수 창을여십시오. 기억하기 좋은 니모닉.


편집 : :help :on 이 명령이 동일하다는 것을 보여주었습니다.

  • :on
  • :only
  • CTRL-w CTRL-o
  • 그리고 네, CTRL-W o동일한 효과가 있습니다 ( 나단이 대답 한 것처럼 ).

이 4 개 각각은 활성 창을 제외한 모든 창을 닫습니다.


8
+1 다른 창에 의도하지 않은 변경 사항이 포함되어 있으면 다른 창에 :on응답 E445: Other window contains changes하고 다른 창을 닫지 않습니다. 예를 들어, 나는 보통 새 창을 만들고 그 안에 들어가고 싶은 파일을 읽습니다. 이 경우 Vim은 다른 창에 기록되지 않은 변경 사항이 있다고 간주합니다. 이런 경우 :on!강제로 닫으십시오.
Sabuncu

61

현재 창을 제외한 모든 창을 닫으려면

CTRL+ w,o

즉, 먼저 CTRL+ wo.


3
또한 CTRL+W o실수로 타이핑 을 취소하는 방법이 있는지 궁금합니다 .
Paolo

30

현재 창을 닫는 두 가지 대안은 ZZ및이며 ZQ, 표시된 버퍼에 변경 사항을 각각 저장하고 저장하지 않습니다.


10
이것은 확실히 "vim way"입니다.
Andy Hayden

나는 Z독일인이기 때문에 싫어 합니다. (스포일러 : DE / EN 설정을 자주 전환하면 키보드 레이아웃)
Tino

6

: hide 명령은 현재 포커스 된 창을 숨 깁니다. 나는 이것이 당신이 찾고있는 기능이라고 생각합니다.

창 사이를 이동하려면 Ctrl + w를 입력 한 다음 탐색 키 (h, j, k, l 또는 화살표 키)를 입력하십시오.

자세한 내용은 실행의 경우 :help window:help hide정력한다.


대단하다. Chrome (ssh 플러그인 포함)은 <CW>를 "탭 닫기"로 트랩하여 모든 vim의 <cw> 창 명령을 효과적으로 비활성화합니다. 대안을 갖는 것이 유용합니다.
rein

6

에서 :help opening-window( "창 닫기"검색- /Closing a window)

  • :q[uit]현재 창과 버퍼를 닫습니다. 마지막 창이라면 vim을 종료합니다.
  • :bd[elete] 현재 버퍼를 언로드하고 현재 창을 닫습니다
  • :qa[all]또는 :quita[ll]모든 버퍼와 창을 닫고 vim을 종료합니다 ( :qa!변경 사항을 저장하지 않고 강제 적용).
  • :clo[se]현재 창을 닫고 버퍼를 열어 둡니다. 창이 하나만 있으면이 명령이 실패합니다
  • :hid[e]현재 창에서 버퍼를 숨 깁니다 (에서 더 읽기 :help hidden)
  • :on[ly] 다른 모든 창을 닫고 모든 버퍼를 열어 둡니다

5

닫으려는 창에서 ctrl+ w를 찾았 습니다 :q. 이것은 나를 위해 작동합니다.


이것은 실제로 3 년 이상 거기에 앉아있는 것의 복제품입니다.
Warren P

@WarrenP는 dup처럼 보이지 않습니다. ^W^W:q가능한 해결책으로 언급 된 다른 답변을 찾지 못했기 때문에 분할을 제거하십시오. 닫으 ^W to the window you want to close^W^W
려는

내 잘못이야. 다른 하나는 ^ W 다음 o입니다
Warren P

2

나는 당신의 의도를 잘 이해하고 버퍼도 독점적으로 사용하며 때로는 필요한 경우 분할됩니다.

아래는 내 발췌 .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!

내 워크 플로에 잘 맞는

만약 q누른

  • 창이 여러 개 열려 있으면 현재 창을 숨기고, 그렇지 않으면 vim을 종료하십시오.

qo눌렀 다면

  • 다른 모든 창을 닫으십시오. 하나의 창만 있으면 효과가 없습니다.

물론, 당신은 수있는 기능으로 그 지저분한 부분 포장 , 예를 들어,

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>

(!) 참고는 : 다시 매핑 I q, 내가 사용하는 대신, 편집 매크로를 사용하지 않기 때문에 :s, :g, :v, 및 외부 텍스트 처리 명령 필요한 경우, 예를 들어, :'{,'}!awk 'some_programm'또는 사용을 :norm! normal-command-here.


1

다른 사람이 작업을 수행하는 방법 전에 말한대로 누르는 것입니다 ctrl+ w다음과 o. 다른 창은 닫으면서 현재 창을 "최대화"합니다. 당신이 그것을 "최대화"하고 싶다면 ZoomWin 이라는 플러그인 이 있습니다. 그렇지 않으면 창 설정을 처음부터 다시 만들어야합니다.


0

좋아, 방금 분리하고 화면 세션에 다시 연결하고 원하는 일반 화면으로 돌아 왔습니다.


이것은 vim분할 창 모드를 떠나지 않고 분할 창 모드를 그대로 둡니다 screen. 쉽게 착각 할 수 있으므로 다른 사람들도 마찬가지입니다. BTW이 화면 기능이 성가신 것을 알았습니다. 따라서 이제 tmux모든 스플릿을 그대로 다시 연결할 수 있습니다.
티노
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.