Untuk mengatasi perpecahan, saya menggunakan submode-plugin yang sebenarnya cukup nyaman: Ini memungkinkan Anda untuk membuat mode baru ("mode" seperti dalam mode normal, mode visual, mode insert, dll ...) di mana Anda menentukan binding kunci baru .
Dengan itu Anda tidak perlu menggunakan Ctrl+wlagi dan karena Anda berada dalam mode baru semua kunci bebas untuk mengikat: tidak ada lagi masalah seperti "Sialan saya tidak dapat menemukan kombinasi tombol yang sebagai penanda dan belum dipetakan "
Anda dapat menginstal plugin dengan pengelola plugin biasa, dan berikut adalah beberapa konfigurasi saya untuk memberi Anda beberapa inspirasi:
Saya membuat mode baru yang saya sebut WindowsMode
di mana saya memanipulasi splits saya:
call submode#enter_with('WindowsMode', 'n', '', '<Leader>k', ':echo "windows mode"<CR>')
call submode#leave_with('WindowsMode', 'n', '', '<Leader>')
Baris-baris ini berarti bahwa saya masuk dalam mode dengan Leaderkdan saya keluar dari mode dengan Leader: Setelah saya menekan Leaderksemua tombol yang saya tekan akan:
- Tidak melakukan apa pun jika saya tidak menetapkan pemetaan untuk mereka dalam mode ini
- Lakukan apa yang saya putuskan untuk memetakannya dalam mode ini (lihat sisa jawabannya)
- Kembali ke mode normal jika saya menekan Leader
Setelah saya berada di WindowsMode
garis ini, lakukan hjklnavigasi melalui perpecahan sepertiCtrl+whjkl
" Change of windows with hjkl
call submode#map('WindowsMode', 'n', '', 'j', '<C-w>j')
call submode#map('WindowsMode', 'n', '', 'k', '<C-w>k')
call submode#map('WindowsMode', 'n', '', 'h', '<C-w>h')
call submode#map('WindowsMode', 'n', '', 'l', '<C-w>l')
Saya menggunakan garis-garis ini untuk membagi windows dengan /dan !:
" split windows with / and !
call submode#map('WindowsMode', 'n', '', '/', '<C-w>s')
call submode#map('WindowsMode', 'n', '', '!', '<C-w>v')
Dan qtutup split:
call submode#map('WindowsMode', 'n', '', 'q', '<C-w>c')
Pindahkan pemisahan dengan Ctrlhjkl:
call submode#map('WindowsMode', 'n', '', '<C-j>', '<C-w>J')
call submode#map('WindowsMode', 'n', '', '<C-k>', '<C-w>K')
call submode#map('WindowsMode', 'n', '', '<C-h>', '<C-w>H')
call submode#map('WindowsMode', 'n', '', '<C-l>', '<C-w>L')
Vim-submode memungkinkan untuk melakukan banyak hal kuat, lihat dokumen untuk detail lebih lanjut.
EDIT Pendekatan lain dari submode Window dijelaskan di sini . Saya pikir metode yang digunakan oleh penulis bahkan lebih dekat untuk menjawab pertanyaan: Di sini digunakan untuk membuat mode baru tetapi semua <c-w>something
pemetaan tersedia dengan kunci yang sama di submode:
" Go through every letter
for key in ['a','b','c','d','e','f','g','h','i','j','k','l','m',
\ 'n','o','p','q','r','s','t','u','v','w','x','y','z']
" maps lowercase, uppercase and <C-key>
call submode#map('window', 'n', '', key, '<C-w>' . key)
call submode#map('window', 'n', '', toupper(key), '<C-w>' . toupper(key))
call submode#map('window', 'n', '', '<C-' . key . '>', '<C-w>' . '<C-'.key . '>')
endfor
" Go through symbols. Sadly, '|', not supported in submode plugin.
for key in ['=','_','+','-','<','>']
call submode#map('window', 'n', '', key, '<C-w>' . key)
endfor
Dengan cara ini semua pemetaan <c-w>lowerCaseKey
, <c-w>upperCaseKey
, <c-w><c-Key>
dan pemetaan <c-w>=_+-<>
semuanya dapat diakses dalam modus jendela tanpa awalan<c-w>
wincmd
Misalnya Anda dapat memetakan::nmap wj :wincmd j<cr>
ini bertindak sama sepertiCTRL-W j
(pindah ke jendela di bawah).:help wincmd