Vim: Pindahkan jendela ke kiri / kanan?

215

Dalam Vim, apakah mungkin untuk "memindahkan" jendela ke kiri atau kanan? Misalnya, mirip dengan <c-w> ratau <c-w> x, tetapi ke kiri / kanan alih-alih naik / turun?

Misalnya, jika saya memiliki tata letak ini:

+---+---+---+
|   |   +---+
| A +---+---+
|   |   |   |
+---+---+---+

Saya ingin mengubahnya menjadi ini:

+---+---+---+
|   |   +---+
+---+ A +---+
|   |   |   |
+---+---+---+

Yang sulit / menjengkelkan untuk dilakukan <c-w> {H,J,K,L}.

David Wolever
sumber

Jawaban:

425

Ctrl w memberi Anda "mode perintah windows", memungkinkan pengubah berikut:

  • Ctrl w+ R- Untuk memutar jendela ke atas / kiri.

  • Ctrl w+ r- Untuk memutar jendela ke bawah / kanan.

Anda juga dapat menggunakan "mode perintah windows" dengan tombol navigasi untuk mengubah posisi jendela:

  • Ctrl w+ L- Pindahkan jendela saat ini ke "paling kanan"

  • Ctrl w+ H- Pindahkan jendela saat ini ke "paling kiri"

  • Ctrl w+ J- Pindahkan jendela saat ini ke "paling bawah"

  • Ctrl w+ K- Pindahkan jendela saat ini ke "paling atas"

Lihat :help window-movinginformasi lebih lanjut

Ricardo Valeriano
sumber
2
<c-w> rhanya berputar secara vertikal.
David Wolever
10
@ David Wolever, Anda perlu menggunakan huruf besar dalam kasus ini, seperti: Ctrl-W + Shift-L, misalnya. Saya pikir ini bisa menjadi apa yang Anda cari.
Ricardo Valeriano
@ David - hanya menguji ini dan <cw> r bekerja secara horizontal untuk saya.
ostler.c
3
@ ostler.c buat pemisahan vertikal, lalu buat pemisahan horizontal dalam salah satu kolom. Sekarang gunakan <cw> r dan itu hanya menggilir dua jendela dalam satu pemisahan vertikal.
Chev
1
@ nn0p tidak, mereka memindahkan windows. <cw> h akan memindahkan kursor ke jendela berikutnya ke kiri, sedangkan <cw> H akan memindahkan jendela saat ini (bersama-sama dengan kursor) ke paling kiri.
MarSoft
58

Yang ini paling berguna bagi saya (dan mungkin jawaban yang tepat untuk pertanyaan):

  • Ctrl W+ xATAU Ctrl W+ Ctrl x- Memutar jendela fokus saat ini dengan jendela terdekat ke kanan.
fabiomcosta
sumber
sangat berguna ketika Anda berada di tengah-tengah panel dan ingin bertukar dengan yang di sebelah kanan. Terima kasih untuk yang ini!
Daniel Andrei Mincă
8

Apakah Anda ingin memindahkan jendela itu sendiri atau hanya posisi kursor Anda?

Di samping memutar atau bersepeda seperti yang telah Anda sebutkan, hanya mungkin memindahkan jendela itu sendiri ke ujung paling atas, bawah, kiri atau kanan, dengan masing-masing:

^W K
^W J
^W H
^W L

Saya tidak berpikir ada cara bawaan bawaan untuk memindahkan jendela satu tempat ke kanan.

Bitterzoet
sumber
1
Saya ingin memindahkan windows, bukan kursor.
David Wolever
1
Maka ini sejauh yang Anda bisa pergi dengan perintah jendela vim, jika ini berguna bagi Anda, silakan tandai sebagai solusinya :-)
Bitterzoet
2
Saya akan menurunkan komentar @Bitterzoet jika saya bisa. Lihat jawaban di atas
Nathan
1

Sepertinya vim tidak dapat melakukan ini dengan peta kunci standar. Dokumentasi mengatakan bahwa perintah ^ WK, J, H dan L bekerja dengan membuat split dan membuka buffer di posisi sekarang, jadi saya menulis fungsi yang sama: Sembunyikan buffer, pindah ke kiri, split, dan kemudian buka buffer asli:

" Rotate a window horizontally to the left
function! RotateLeft()
    let l:curbuf = bufnr('%')
    hide
    wincmd h
    split
    exe 'buf' l:curbuf
endfunc

" Rotate a window horizontally to the right
function! RotateRight()
    let l:curbuf = bufnr('%')
    hide
    wincmd l
    split
    exe 'buf' l:curbuf
endfunc
W Klink
sumber
-6
  • ctrl + h pindahkan kursor ke jendela berikutnya (kanan)

  • ctrl + l pindahkan cursot ke jendela sebelumnya (kiri)

tentang informasi lebih lanjut, silakan merujuk: :help window-moving

xautjzd
sumber
3
Tidak benar. Ctrl+h/lbukan binding standar untuk navigasi jendela (meskipun tentu saja mereka dapat dikonfigurasi, dan ditawarkan oleh beberapa plugin). Dan ini tidak menjawab pertanyaan awal.
MarSoft