Per gestire le divisioni, utilizzo il plug-in submode che in realtà è abbastanza conveniente: ti consente di creare una nuova modalità ("modalità" come in modalità normale, modalità visiva, modalità di inserimento, ecc ...) in cui definisci nuove combinazioni di tasti .
Detto questo, non devi Ctrl+wpiù utilizzarlo e, dato che sei in una nuova modalità, tutti i tasti sono liberi di legarsi: niente più problemi come "Accidenti, non riesco a trovare una combinazione di tasti che come significato e non ancora mappata "
Puoi installare il plug-in con qualsiasi normale gestore di plug-in, e qui sono alcune delle mie configurazioni per darti l'ispirazione:
Ho creato una nuova modalità che ho chiamato WindowsMode
in cui manipolo le mie divisioni:
call submode#enter_with('WindowsMode', 'n', '', '<Leader>k', ':echo "windows mode"<CR>')
call submode#leave_with('WindowsMode', 'n', '', '<Leader>')
Queste righe indicano che entro nella modalità con Leaderke esco dalla modalità con Leader: Dopo aver premuto Leaderktutti i tasti premuti:
- Non fare nulla se non ho definito una mappatura per loro in questa modalità
- Fai quello che ho deciso di mapparli in questa modalità (vedi il resto della risposta)
- Torna alla modalità normale se colpisco Leader
Una volta che sono in WindowsMode
queste righe fai hjklnavigare attraverso le spaccature comeCtrl+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')
Ho usato queste linee per dividere le finestre con /e !:
" split windows with / and !
call submode#map('WindowsMode', 'n', '', '/', '<C-w>s')
call submode#map('WindowsMode', 'n', '', '!', '<C-w>v')
E qchiudi una divisione:
call submode#map('WindowsMode', 'n', '', 'q', '<C-w>c')
Sposta le divisioni con 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 ti permette di fare molte cose potenti, vedi il documento per maggiori dettagli.
EDIT Un altro approccio della sottomodalità Window è descritto qui . Penso che il metodo usato dall'autore sia ancora più vicino per rispondere alla domanda: qui è usato per creare una nuova modalità ma tutti i <c-w>something
mapping sono disponibili con le stesse chiavi nel sottomodice:
" 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
In questo modo tutte le mappature <c-w>lowerCaseKey
, <c-w>upperCaseKey
, <c-w><c-Key>
e le mappature <c-w>=_+-<>
sono tutti accessibili in modalità finestra senza il prefisso<c-w>
wincmd
Ad esempio puoi mappare::nmap wj :wincmd j<cr>
si comporta comeCTRL-W j
(passa alla finestra in basso).:help wincmd