Milis Vim mengatakan (diformat ulang untuk keterbacaan yang lebih baik):
Untuk mengubah dua jendela yang terbagi secara vertikal menjadi terbagi secara horizontal
Ctrl- wtCtrl-wK
Secara horizontal ke vertikal:
Ctrl- wtCtrl-wH
Penjelasan:
Ctrl- wt membuat jendela (topleft) pertama saat ini
Ctrl- wK Memindahkan jendela saat ini ke lebar penuh di bagian paling atas
Ctrl- wH 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- wtkarena karena Anda sudah berada di salah satu dari hanya dua jendela, apa gunanya menjadikannya saat ini?
Jadi jika Anda memiliki dua jendela yang terbelah secara horizontal, dan Anda berada di jendela yang lebih rendah, Anda cukup menggunakan ^ WL.
terlalu banyak php
7
.... Kekuatannya ... vim-fu saya berlipat dua hari ini, terima kasih. Ada banyak perintah ^ w yang menarik (b, w, dll)
Alex Hart
Alangkah baiknya ini bekerja ketika menggunakan plugin NERDTree :-)
Eno
3
@ Tidak Bekerja dengan baik untuk saya. Cukup matikan panel NERDTree Anda sebelum 'memutar' splits, lalu matikan kembali. : NERDTreeToggle (Saya telah memetakannya ke tombol fungsi untuk kenyamanan).
Lambart
2
Saya telah menambahkan beberapa pemetaan pemimpin ke konfigurasi vim saya: :nmap <leader>th <C-w>t<C-w>Hdan:nmap <leader>tk <C-w>t<C-w>K
Ian Marcinkowski
324
Ctrl- wdiikuti oleh H, J, KatauL (modal) akan memindahkan jendela saat ini untuk jauh left, bottom, topatau rightmasing-masing seperti navigasi kursor normal.
Setara huruf kecil memindahkan fokus alih-alih memindahkan jendela.
itu jauh lebih baik karena pengguna menggunakan hjkl untuk bergerak di antara buffer.
Afshin Mehrabani
30
Jawaban yang diterima adalah jawaban yang bagus, tetapi bagi saya, jawaban ini lebih mudah diingat. Terima kasih!
Jon Carter
Bekerja lebih baik dengan nerdtree juga.
arcseldon
Ini bekerja untuk saya di macOS dengan awalan Ctrl- w(Saya tidak tahu jika ^berarti Ctrldalam contoh Anda)
Giovanni Benussi
@GiovanniBenussi ya, saya pikir ^berarti Ctrl.
ma11hew28
47
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.
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>
Bekerja lebih baik bagi saya jika saya memaksanya untuk tetap di split yang sama seperti itu 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 endifHarapan itu masuk akal.
mjhoffmann
5
Berikut tip Mark Rushakoff di atas , berikut adalah pemetaan saya:
Jawaban:
Milis Vim mengatakan (diformat ulang untuk keterbacaan yang lebih baik):
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?
sumber
: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
atauright
masing-masing seperti navigasi kursor normal.Setara huruf kecil memindahkan fokus alih-alih memindahkan jendela.
sumber
Ctrl
-w
(Saya tidak tahu jika^
berartiCtrl
dalam contoh Anda)^
berartiCtrl
.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)
(beralih ke vertikal)
Ini secara efektif pergi ke setiap jendela secara individual dan menggunakan ^WKatau ^WH.
sumber
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.
sumber
: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.Di VIM, lihat yang berikut ini untuk melihat berbagai alternatif untuk apa yang mungkin telah Anda lakukan:
: bantuan membuka jendela
Contohnya:
Ctrl- W s
Ctrl- W o
Ctrl- W v
Ctrl- W o
Ctrl- W s
...
sumber
Kedua solusi berlaku ketika hanya ada dua jendela.
Buka bantuan dalam pemisahan vertikal secara default
Tambahkan kedua baris ini ke
.vimrc
::vert[ical] {cmd}
selalu menjalankancmd
dalam jendela yang terbagi secara vertikal.sumber
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.
sumber
if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif
danif 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:
Sunting: gunakan Ctrl- w runtuk menukar dua jendela jika tidak dalam urutan yang baik.
sumber