Para lidar com as divisões, eu uso o submode-plugin, que é realmente conveniente: permite criar um novo modo ("modo", como no modo normal, modo visual, modo de inserção, etc ...) onde você define novas ligações de teclas .
Com isso você não precisa Ctrl+wmais usar e, como você está em um novo modo, todas as chaves estão livres para se ligar: não há mais problemas como "Porra, não consigo encontrar uma combinação de teclas que, como um significado e ainda não esteja mapeada "
Você pode instalar o plug-in com qualquer gerenciador de plug-ins comum, e aqui estão algumas das minhas configurações para lhe dar alguma inspiração:
Criei um novo modo que chamei WindowsMode
no qual manipulo minhas divisões:
call submode#enter_with('WindowsMode', 'n', '', '<Leader>k', ':echo "windows mode"<CR>')
call submode#leave_with('WindowsMode', 'n', '', '<Leader>')
Essas linhas significam que eu entro no modo com Leaderke saio do modo com Leader: Depois de pressionar Leaderktodas as teclas, pressione:
- Não faça nada se eu não definir um mapeamento para eles nesse modo
- Faça o que eu decidi mapeá-los neste modo (veja o restante da resposta)
- Volte ao modo normal se eu pressionar Leader
Uma vez WindowsMode
nessas linhas, hjklnavegue pelas divisões 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')
Eu usei essas linhas para dividir as janelas /e !:
" split windows with / and !
call submode#map('WindowsMode', 'n', '', '/', '<C-w>s')
call submode#map('WindowsMode', 'n', '', '!', '<C-w>v')
E qfeche uma divisão:
call submode#map('WindowsMode', 'n', '', 'q', '<C-w>c')
Mova as divisões com 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')
O Vim-submode permite fazer muitas coisas poderosas; consulte o documento para obter mais detalhes.
EDIT Outra abordagem do submodo Window é descrita aqui . Eu acho que o método usado pelo autor é ainda mais próximo para responder à pergunta: Aqui é usado para criar um novo modo, mas todos os <c-w>something
mapeamentos estão disponíveis com as mesmas chaves no 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
Desta forma, todos os mapeamentos <c-w>lowerCaseKey
, <c-w>upperCaseKey
, <c-w><c-Key>
e os mapeamentos <c-w>=_+-<>
são acessíveis no modo de janela sem o prefixo<c-w>
wincmd
Por exemplo, você pode mapear::nmap wj :wincmd j<cr>
ele age da mesma forma queCTRL-W j
(mova para a janela abaixo).:help wincmd