Vimで現在のウィンドウを水平分割から垂直分割に、またはその逆に切り替えるにはどうすればよいですか?
少し前に偶然そうしましたが、鍵をもう一度見つけることはできません。
Vimで現在のウィンドウを水平分割から垂直分割に、またはその逆に切り替えるにはどうすればよいですか?
少し前に偶然そうしましたが、鍵をもう一度見つけることはできません。
回答:
Vimのメーリングリストには次のように書かれています(読みやすくするために再フォーマットされています)。
2つの垂直分割ウィンドウを水平分割に変更するには
Ctrl- w t Ctrl-w K
水平から垂直へ:
Ctrl- w t Ctrl-w H
説明:
Ctrl- w t 最初の(左上)ウィンドウを現在にします
Ctrl- w K 現在のウィンドウを最上部の全幅に移動します
Ctrl- w H 現在のウィンドウを左端のフルハイトに移動します
tは小文字で、KとHは大文字であることに注意してください。
また、ウィンドウが2つしかない場合は、Ctrl-のw t部分を削除できるようです。既に2つのウィンドウのいずれかにいる場合は、それを現在のウィンドウにする理由は何ですか。
:nmap <leader>th <C-w>t<C-w>H
および:nmap <leader>tk <C-w>t<C-w>K
Ctrl- w続いてH、J、KまたはL(資本)遠くに現在のウィンドウを移動しleft
、bottom
、top
またはright
それぞれ通常のカーソル移動等。
同等の小文字は、ウィンドウを移動する代わりにフォーカスを移動します。
Ctrl
- w
(例でが^
意味かどうかわかりませんCtrl
)。
^
ますCtrl
。
次のexコマンドは、任意の数のウィンドウを(再)分割します。
:vertical ball
:ball
非表示のバッファがある場合、これらのコマンドを発行すると、非表示のバッファも表示されます。
:vert[ical] ball
ドキュメント:vert ball
でもそうですが、これも問題ありません。
:ball
は、3つの垂直ウィンドウを2つの水平ウィンドウに縮小し、3 :vert ball
つの水平ウィンドウを3つの垂直ウィンドウに正しくマップします。
水平から垂直への分割
Ctrl+ Wウィンドウコマンドの後にShift+ HまたはShift+L
垂直から水平への分割
Ctrl+ Wウィンドウコマンドの後にShift+ KまたはShift+J
両方のソリューションは、ウィンドウが2つしかない場合に適用されます。
これらの行を両方とも追加し.vimrc
ます。
cabbrev help vert help
cabbrev h vert h
:vert[ical] {cmd}
常にcmd
垂直分割ウィンドウで実行します。
スティーブの回答に触発されて、私は現在のタブのすべてのウィンドウの垂直分割と水平分割を切り替える単純な関数を書きました。以下の最後の行のように、マッピングにバインドできます。
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
希望メイク感覚という。