Vim에서 세로 분할에서 가로 분할로 빠르게 전환하려면


답변:


894

Vim 메일 링리스트다음과 같이 말합니다 (가독성 향상을 위해 다시 포맷).

두 개의 세로 분할 창을 가로 분할로 변경하려면

Ctrl- w t Ctrl-w K

가로에서 세로로 :

Ctrl- w t Ctrl-w H

설명 :

Ctrl- w t 첫 번째 (왼쪽 위) 창을 현재로 만듭니다.

Ctrl- w K 맨 위의 현재 창을 전체 너비로 이동

Ctrl- w H 왼쪽에서 현재 창을 전체 높이로 이동

t는 소문자이고 K와 H는 대문자입니다.

드롭 수있는 것처럼 또한, 두 개의 창으로 보인다 Ctrl- w t당신이 현재 만드는 점은 무엇입니까, 두 개의 창 중 하나에 이미 있다면 때문에 부분을?


27
따라서 두 개의 창을 가로로 나누고 아래쪽 창에있는 경우 ^ WL을 사용하면됩니다.
너무 많은 php

7
.... 힘 ... 오늘 내 vim-fu는 두 배가되었습니다. 감사합니다. 흥미로운 ^ w 명령 (b, w 등)이 많이 있습니다.
Alex Hart

NERDTree 플러그인을 사용할 때 이것이 효과가 있습니까? :-)
Eno

3
@Eno 잘 작동합니다. 스플릿을 '회전'하기 전에 NERDTree 패널을 닫고 다시 열면됩니다. : NERDTreeToggle (편의를 위해 기능 키에 매핑했습니다).
Lambart

2
나는 나의 정력 설정에 약간의 리더 매핑을 추가 한 : :nmap <leader>th <C-w>t<C-w>H:nmap <leader>tk <C-w>t<C-w>K
이안 Marcinkowski

324

Ctrl- w다음 H, J, K또는 L(자본)에 현재 창을 이동 맨 left, bottom, top또는right 각각 같은 일반 커서 탐색.

소문자 등가물은 창을 이동하는 대신 포커스를 이동합니다.


5
사용자가 hjkl을 사용하여 버퍼 간을 이동하기 때문에 훨씬 좋습니다.
Afshin Mehrabani

30
받아 들인 대답은 좋은 것이지만 나에게는이 대답이 기억하기 쉽습니다. 감사!
Jon Carter

nerdtree에서도 더 잘 작동합니다.
arcseldon

접두어를 사용하여 macOS에서 작동합니다 Ctrl- w( 귀하의 예에서 ^의미 Ctrl가 있는지 모르겠습니다 ).
Giovanni Benussi

@GiovanniBenussi 그래, 내가 생각하는 ^방법을 Ctrl.
ma11hew28

47

개 이상의 창이 가로 또는 세로로 열려 있고 모두 다른 방향 으로 전환하려는 경우 다음을 사용할 수 있습니다.

(수평으로 전환)

:windo wincmd K

(수직으로 전환)

:windo wincmd H

효과적으로 각 창으로 이동하고 ^WK또는을 사용 ^WH합니다.


31

다음 ex 명령은 여러 창을 (재) 분할합니다 :

  • 세로로 나누려면 (예 : 창 사이에 세로 구분선 만들기) :vertical ball
  • 가로로 나누려면 :ball

숨겨진 버퍼가있는 경우이 명령을 실행하면 숨겨진 버퍼도 표시됩니다.


현재 승인 된 답변은 두 개의 파일에 대해서만 작동하므로 이것은 승인 된 답변이어야합니다. 이 답변은 더 완전합니다.
DrStrangepork

:vert[ical] ball문서에서 확인 :vert ball도 짧고 짧습니다.
Titou

:ball3 개의 수직 창을 2 개의 수평 창으로 줄이면서 :vert ball 3 개의 수평 창을 3 개의 수직 창에 올바르게 매핑합니다.
Titou

27

VIM에서 다음을 살펴보고 수행 한 작업에 대한 다른 대안을보십시오.

: 창 열기 도움말

예를 들어 :

Ctrl- W s
Ctrl- W o
Ctrl- W v
Ctrl- W o
Ctrl- W s
...


11

가로에서 세로로 분할

Ctrl+ W창 명령의 경우 Shift+ H또는 Shift+L


수직에서 수평 분할

Ctrl+ W창 명령의 경우 Shift+ K또는 Shift+J

두 개의 창이 존재하는 경우 두 솔루션이 모두 적용됩니다.


기본적으로 세로 분할에서 도움말 열기

이 두 줄을 다음에 추가하십시오 .vimrc.

cabbrev help vert help
cabbrev h vert h

:vert[ical] {cmd}항상 cmd수직 분할 창에서 실행합니다 .


6

Steve의 답변에서 영감을 얻어 현재 탭의 모든 창에 대해 세로 및 가로 분할을 전환하는 간단한 기능을 작성했습니다. 아래 마지막 줄에서와 같이 매핑에 바인딩 할 수 있습니다.

function! ToggleWindowHorizontalVerticalSplit()
  if !exists('t:splitType')
    let t:splitType = 'vertical'
  endif

  if t:splitType == 'vertical' " is vertical switch to horizontal
    windo wincmd K
    let t:splitType = 'horizontal'

  else " is horizontal switch to vertical
    windo wincmd H
    let t:splitType = 'vertical'
  endif
endfunction

nnoremap <silent> <leader>wt :call ToggleWindowHorizontalVerticalSplit()<cr>

내가 그렇게처럼 같은 분할에 머물 강제 경우 더 나은 나를 위해 작동 if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif if winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endif희망 메이크업 감각이.
mjhoffmann

5

의 Mark Rushakoff의 팁에 따라 다음 은 내 매핑입니다.

" vertical to horizontal ( | -> -- )
noremap <c-w>-  <c-w>t<c-w>K
" horizontal to vertical ( -- -> | )
noremap <c-w>\|  <c-w>t<c-w>H
noremap <c-w>\  <c-w>t<c-w>H
noremap <c-w>/  <c-w>t<c-w>H

편집 : 사용 Ctrl- w r두 창이 좋지 않은 경우 두 창을 바꾸려면.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.