Bagaimana Anda bisa mengganti jendela saat ini dari split horizontal ke split vertikal dan sebaliknya di Vim?
Saya melakukannya beberapa saat yang lalu secara tidak sengaja tetapi saya tidak dapat menemukan kuncinya lagi.
Bagaimana Anda bisa mengganti jendela saat ini dari split horizontal ke split vertikal dan sebaliknya di Vim?
Saya melakukannya beberapa saat yang lalu secara tidak sengaja tetapi saya tidak dapat menemukan kuncinya lagi.
Jawaban:
Milis Vim mengatakan (diformat ulang untuk keterbacaan yang lebih baik):
Untuk mengubah dua jendela yang terbagi secara vertikal menjadi terbagi secara horizontal
Ctrl- w t Ctrl-w K
Secara horizontal ke vertikal:
Ctrl- w t Ctrl-w H
Penjelasan:
Ctrl- w t membuat jendela (topleft) pertama saat ini
Ctrl- w K Memindahkan jendela saat ini ke lebar penuh di bagian paling atas
Ctrl- w H Memindahkan jendela saat ini ke ketinggian penuh di paling kiri
Perhatikan bahwa t adalah huruf kecil, dan K dan H adalah huruf besar.
Juga, dengan hanya dua jendela, sepertinya Anda dapat menghapus bagian Ctrl- w tkarena karena Anda sudah berada di salah satu dari hanya dua jendela, apa gunanya menjadikannya saat ini?
:nmap <leader>th <C-w>t<C-w>H
dan:nmap <leader>tk <C-w>t<C-w>K
Ctrl- wdiikuti oleh H, J, KatauL (modal) akan memindahkan jendela saat ini untuk jauh left
, bottom
, top
atau right
masing-masing seperti navigasi kursor normal.
Setara huruf kecil memindahkan fokus alih-alih memindahkan jendela.
Ctrl
- w
(Saya tidak tahu jika ^
berarti Ctrl
dalam contoh Anda)
^
berarti Ctrl
.
Ketika Anda memiliki dua atau lebih jendela terbuka secara horizontal atau vertikal dan ingin mengalihkan semuanya ke orientasi lain, Anda dapat menggunakan yang berikut ini:
(beralih ke horizontal)
:windo wincmd K
(beralih ke vertikal)
:windo wincmd H
Ini secara efektif pergi ke setiap jendela secara individual dan menggunakan ^WKatau ^WH.
Perintah ex berikut ini akan (kembali) membagi sejumlah windows:
:vertical ball
:ball
Jika ada buffer tersembunyi, mengeluarkan perintah ini juga akan membuat buffer tersembunyi terlihat.
:vert[ical] ball
dalam dokumen :vert ball
itu juga ok dan lebih pendek.
:ball
mengurangi 3 jendela vertikal menjadi 2 jendela horizontal, sementara :vert ball
dengan benar memetakan 3 jendela horizontal menjadi 3 jendela vertikal.
Perpecahan horizontal ke vertikal
Ctrl+ Wuntuk perintah jendela, diikuti oleh Shift+ Hatau Shift+L
Pemisah vertikal ke horizontal
Ctrl+ Wuntuk perintah jendela, diikuti oleh Shift+ Katau Shift+J
Kedua solusi berlaku ketika hanya ada dua jendela.
Tambahkan kedua baris ini ke .vimrc
:
cabbrev help vert help
cabbrev h vert h
:vert[ical] {cmd}
selalu menjalankan cmd
dalam jendela yang terbagi secara vertikal.
Terinspirasi oleh jawaban Steve, saya menulis fungsi sederhana yang beralih antara pemisahan vertikal dan horizontal untuk semua jendela di tab saat ini. Anda dapat mengikatnya ke pemetaan seperti pada baris terakhir di bawah ini.
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
dan if winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endif
Harapan itu masuk akal.
Berikut tip Mark Rushakoff di atas , berikut adalah pemetaan saya:
" 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
Sunting: gunakan Ctrl- w runtuk menukar dua jendela jika tidak dalam urutan yang baik.