Para tratar las divisiones utilizo el complemento submode, que en realidad es bastante conveniente: le permite crear un nuevo modo ("modo" como en el modo normal, modo visual, modo de inserción, etc.) donde define nuevas combinaciones de teclas .
Con eso ya no tienes que usarlo Ctrl+wy, como estás en un nuevo modo, todas las teclas son libres de enlazar: no más problemas como "Maldición, no puedo encontrar una combinación de teclas que sea significativa y aún no esté asignada "
Puede instalar el complemento con cualquier administrador de complementos normal, y aquí hay algunos de mi configuración para darle algo de inspiración:
Creé un nuevo modo al que llamé WindowsMode
en el que manipulo mis divisiones:
call submode#enter_with('WindowsMode', 'n', '', '<Leader>k', ':echo "windows mode"<CR>')
call submode#leave_with('WindowsMode', 'n', '', '<Leader>')
Estas líneas significan que entro en el modo con Leaderky salgo del modo con Leader: Después de presionar Leaderktodas las teclas que presiono:
- No haga nada si no definí una asignación para ellos en este modo
- Haz lo que decidí asignarles en este modo (ver el resto de la respuesta)
- Regrese al modo normal si presiono Leader
Una vez que esté en WindowsMode
estas líneas, hjklnavegue por las divisiones comoCtrl+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')
Usé estas líneas para dividir las ventanas con /y !:
" split windows with / and !
call submode#map('WindowsMode', 'n', '', '/', '<C-w>s')
call submode#map('WindowsMode', 'n', '', '!', '<C-w>v')
Y qcerrar una división:
call submode#map('WindowsMode', 'n', '', 'q', '<C-w>c')
Mueve las divisiones 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 permite hacer muchas cosas poderosas, consulte el documento para obtener más detalles.
EDITAR Aquí se describe otro enfoque del submodo de la ventana . Creo que el método utilizado por el autor está aún más cerca de responder la pregunta: aquí se usa para crear un nuevo modo, pero todas las <c-w>something
asignaciones están disponibles con las mismas teclas en el submodo:
" 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
De esta manera todas las asignaciones <c-w>lowerCaseKey
, <c-w>upperCaseKey
, <c-w><c-Key>
y las asignaciones de <c-w>=_+-<>
los cuales son accesibles en el modo de ventana sin el prefijo<c-w>
wincmd
Por ejemplo, puede asignar::nmap wj :wincmd j<cr>
actúa de la misma manera queCTRL-W j
(muévase a la ventana a continuación):help wincmd