Благодаря этому ответу на сайте SE, посвященном Vim, я нашел другую альтернативу, которая использует плагин для создания подрежима, предназначенного для управления окнами.Это означает, что с помощью комбинации клавиш я вхожу в новый режим, в котором некоторые клавиши позволяют мне выполнять различные действия с окнами.
После установки vim-submode давайте добавим несколько строк внаши vimrc
для настройки нового режима:
" 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>')
Теперь вам просто нужно нажать Leader + k , чтобы войти в новый режим (Выможно изменить это с помощью строки submode#enter_with
) и нажать Leader , чтобы выйти из нее.
" 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')
С этими строками после входа в новый режим (с помощью Leader + k ) вы сможете перемещаться между окнами с помощью клавиш hjkl
, как если бы вы использовали <c-w>hjlk
в обычном режиме.
" 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>>')
Еще несколько строк, чтобы разрешить изменение размера окна с помощью yuio
(Я выбираю эти клавиши, потому что на клавиатуре azerty они находятся в ряду над hjkl
и довольно удобны в использовании, может быть, было бы более полезно изменить это на qwerty-клавиатуре, я не уверен) .
" 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')
Давайтепереместите окна с помощью <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')
и еще нескольких сопоставлений, чтобы закрыть окно и создать новые разбиения.
let g:submode_keep_leaving_key = 1
let g:submode_timeout = 0
Наконец, эти параметры позволяют удерживать нажатой клавишубудет повторять свое действие.
Примечание Мне известно, что этот ответ описывает больше, чем просто навигацию между окнами, как спрашивал OP.Я думаю, что создание подрежима довольно удобно, но представляет интерес, только если подрежим позволяет выполнять более одного действия.