Grazie alla this answer sul sito dedicato a SE Vim, mi si avvicinò a un'altra alternativa che utilizza un plug-in per creare un sotto-modalità dedicata alla gestione di Windows. Significa che con una combinazione di tasti inserisco una nuova modalità in cui alcune chiavi mi permetteranno di fare diverse azioni sulle finestre.
Dopo l'installazione vim-submode aggiungiamo alcune linee al nostro vimrc
per configurare una nuova modalità:
" Create a submode to handle windows
" The submode is entered whith <Leader>k and exited with <Leader>
call submode#enter_with('WindowsMode', 'n', '', '<Leader>k', ':echo "windows mode"<CR>')
call submode#leave_with('WindowsMode', 'n', '', '<Leader>')
Ora è sufficiente premere leader + k per accedere alla nuova modalità (È possibile modificare questo con la riga submode#enter_with
) e premere Leader per uscire.
" 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')
Con queste righe, dopo aver inserito la nuova modalità (con leader + k) sarete in grado di spostarsi tra le finestre con i tasti hjkl
come se si stesse utilizzando <c-w>hjlk
in modalità normale.
" Resize windows with <C-yuio> (interesting on azerty keyboards)
call submode#map('WindowsMode', 'n', '', 'u', '<C-w>-')
call submode#map('WindowsMode', 'n', '', 'i', '<C-w>+')
call submode#map('WindowsMode', 'n', '', 'y', '<C-w><')
call submode#map('WindowsMode', 'n', '', 'o', '<C-w>>')
Alcuni paio di righe per consentire il ridimensionamento della finestra con yuio
(scelgo queste chiavi perché su una tastiera AZERTY sono solo sulla riga sopra hjkl
e sono abbastanza comodo da usare, forse sarebbe più utile per cambiarlo su una tastiera qwerty, Im non sicuro).
" Move windows with <C-hjkl>
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')
Spostiamo le finestre con <C-hjkl>
.
" close a window with q
call submode#map('WindowsMode', 'n', '', 'q', '<C-w>c')
" split windows with/and !
call submode#map('WindowsMode', 'n', '', '/', '<C-w>s')
call submode#map('WindowsMode', 'n', '', '!', '<C-w>v')
E alcuni altri mapping per chiudere una finestra e creare nuove suddivisioni.
let g:submode_keep_leaving_key = 1
let g:submode_timeout = 0
Infine Queste opzioni consentono di tenere premuto un tasto e si ripeterà la sua azione.
Nota Sono consapevole che questa risposta descrive molto più della semplice navigazione tra le finestre come l'OP stava chiedendo.Penso che la creazione di una sottomodalità sia abbastanza comoda, ma interessa solo se la sottomodalità consente di fare più di una sola azione.
Grazie. Sono a conoscenza di questa soluzione, ma stavo cercando qualcosa che permettesse di navigare verso una finestra specifica. Ad ogni modo, questa dovrebbe essere una soluzione soddisfacente nel caso in cui non esistano alternative. – Adas
@Adas - Non esiste un modo migliore, non che io sappia. Il fatto è che non navighi attraverso Windows (sono solo ... punti di vista). Si naviga attraverso i buffer. Quindi, se hai una configurazione 2x2, la parte in alto a sinistra non sarà necessariamente la 1a, in alto a destra la seconda e così via ... – Rook
Ho 'nnoremap w', poiché non uso mai la chiave di ritorno in modalità normale. Quindi è facile scorrere le spaccature. –