Для роботи з розщепленнями я використовую плагін submode, що насправді досить зручно: він дозволяє створити новий режим ("режим", як у звичайному режимі, візуальний режим, режим вставлення тощо), де ви визначаєте нові прив'язки клавіш. .
З цим вам більше не доведеться користуватися, 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 дозволяє робити багато потужних речей, докладніші відомості див. У документі .
EDIT Інший підхід підмоду 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