Для работы с разбиениями я использую подрежим-плагин, который на самом деле довольно удобен: он позволяет вам создавать новый режим («режим», как в обычном режиме, визуальном режиме, режиме вставки и т. Д.), В котором вы определяете новые привязки клавиш ,
При этом вам больше не нужно использовать Ctrl+w, и, поскольку вы находитесь в новом режиме, все ключи могут свободно связываться: больше никаких проблем, таких как «Черт, я не могу найти комбинацию клавиш, которая является значением и еще не сопоставлена "
Вы можете установить плагин с любым обычным менеджером плагинов, и вот некоторые из моих настроек, чтобы дать вам некоторое вдохновение:
Я создал новый режим, который я вызывал, WindowsMode
в котором я манипулирую своими разделениями:
call submode#enter_with('WindowsMode', 'n', '', '<Leader>k', ':echo "windows mode"<CR>')
call submode#leave_with('WindowsMode', 'n', '', '<Leader>')
Эти строки означают, что я вхожу в режим с помощью Leaderkи я выхожу из режима с помощью Leader: После того, как я нажму Leaderkвсе клавиши, которые я нажимаю, будет:
- Ничего не делать, если я не определил для них отображение в этом режиме
- Делайте то, что я решил отобразить их в этом режиме (см. Остальную часть ответа)
- Вернуться в нормальный режим, если я нажму Leader
После того, как я в WindowsMode
этих строках сделаю hjklнавигацию по расщеплениям вродеCtrl+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')
Я использовал эти строки , чтобы разделить окна с /и !:
" split windows with / and !
call submode#map('WindowsMode', 'n', '', '/', '<C-w>s')
call submode#map('WindowsMode', 'n', '', '!', '<C-w>v')
И qзакройте сплит:
call submode#map('WindowsMode', 'n', '', 'q', '<C-w>c')
Переместите разделы с помощью 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 позволяет делать много мощных вещей, смотрите документацию для более подробной информации.
РЕДАКТИРОВАТЬ Другой подход подрежима Window описан здесь . Я думаю, что метод, использованный автором, еще ближе к ответу на вопрос: здесь используется для создания нового режима, но все <c-w>something
сопоставления доступны с теми же ключами в подрежиме:
" 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
Таким образом , все отображения <c-w>lowerCaseKey
, <c-w>upperCaseKey
, <c-w><c-Key>
и отображения <c-w>=_+-<>
все они доступны в оконном режиме без префикса<c-w>
wincmd
например, для сопоставления::nmap wj :wincmd j<cr>
оно действует так же, какCTRL-W j
(перейти к окну ниже).:help wincmd