web-dev-qa-db-ja.com

Vimで垂直分割から水平分割に素早く切り替えるには

Vimで現在のウィンドウを水平分割から垂直分割に、またその逆に切り替えるにはどうすればいいですか?

ちょっと前に偶然にそれをしました、しかし私は再び鍵を見つけることができません。

Vimメーリングリスト (読みやすくするために再フォーマットした):

two縦に分割されたウィンドウを横に分割されるように変更する

Ctrl - wtCtrl - wK

水平から垂直:

Ctrl - wtCtrl - wH

説明:

Ctrl - wt 最初(一番上)のウィンドウを現在のウィンドウにする Ctrl - wK 現在のウィンドウを一番上の全幅に移動します。 Ctrl - wH 現在のウィンドウを一番左端のフルハイトに移動する

Tは小文字で、KとHは大文字です。

また、ウィンドウが2つしかない場合は、 Ctrl - wt もう2つのウィンドウのうちの1つに既にいるのなら、それを現在のウィンドウにするポイントは何ですか?

834
Mark Rushakoff

Ctrl - w に続く H、 J、 K または L (大文字)は、通常のカーソルナビゲーションと同様に、現在のウィンドウをそれぞれ遠いleftbottomtopまたはrightに移動します。

小文字の等価物は、ウィンドウを移動する代わりにフォーカスを移動します。

288
respectTheCode

2つのまたはそれ以上ウィンドウが水平または垂直に開いていて、それらをall他の方向に切り替えたい場合は、次のようにします。

(水平に切り替える)

:windo wincmd K

(縦に切り替え)

:windo wincmd H

それは効果的に各ウィンドウに個別に行き、 ^WK または ^WH

40
Steve

次のexコマンドは任意の数のウィンドウを(再)分割します。

  • 縦に分割する(ウィンドウ間を縦に分割するなど)には、:vertical ballと入力します。
  • 水平に分割するには、:ballと入力します。

隠しバッファがある場合、これらのコマンドを発行すると、隠しバッファも表示されます。

29
Mark

VIMでは、以下を見て、自分がしたかもしれないことに対するさまざまな代替方法を確認してください。

:オープニングウィンドウを助ける

例えば:

Ctrl - Ws
Ctrl - Wo
Ctrl - Wv
Ctrl - Wo
Ctrl - Ws
...

27
Anon

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 - wr 2つのウィンドウがうまく並んでいない場合は入れ替えます。

5
Jabba

水平方向から垂直方向への分割

Ctrl+W 続いてウィンドウコマンド Shift+H または Shift+L


縦横分割

Ctrl+W 続いてウィンドウコマンド Shift+K または Shift+J

どちらの解決策も、ウィンドウが2つしかない場合に適用されます。

4

スティーブの答えに触発されて、私は現在のタブのすべてのウィンドウのために垂直方向と水平方向の分割を切り替える単純な関数を書きました。以下の最後の行のようにマッピングにバインドできます。

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>
3
Adam Faryna