Как настроить сочетания клавиш во всех режимах Vim?
Я хочу настроить горячую клавишу, которую можно использовать как в режиме редактирования, так и в обычном режиме. Обычно требуются две команды:
:nnoremap <C-s> :w<cr>
:inoremap <C-s> <esc>:w<cr>a
Есть ли способ объединить их в одну инструкцию, которая может действовать в нескольких режимах одновременно?
2 ответа
:help map-table
:
Mode | Norm | Ins | Cmd | Vis | Sel | Opr | Term | Lang |
Command +------+-----+-----+-----+-----+-----+------+------+
[nore]map | yes | - | - | yes | yes | yes | - | - |
n[nore]map | yes | - | - | - | - | - | - | - |
[nore]map! | - | yes | yes | - | - | - | - | - |
i[nore]map | - | yes | - | - | - | - | - | - |
c[nore]map | - | - | yes | - | - | - | - | - |
v[nore]map | - | - | - | yes | yes | - | - | - |
x[nore]map | - | - | - | yes | - | - | - | - |
s[nore]map | - | - | - | - | yes | - | - | - |
o[nore]map | - | - | - | - | - | yes | - | - |
t[nore]map | - | - | - | - | - | - | yes | - |
l[nore]map | - | yes | yes | - | - | - | - | yes |
показывает, что у Vim есть*map
команды, которые охватывают более одного режима, но не имеют команды, охватывающей все режимы. Таким образом, вы можете охватить все режимы с помощью:
-
:map
, -
:map!
, -
:tmap
, -
:lmap
,
и вы должны использовать две команды для обычного режима и режима вставки.
Но правая часть ваших двух отображений не идентична, даже если такое:*map
команда существовала, вы все равно не могли ее использовать.
Мне удалось добавить ярлык для применения изменений с помощью Ctrl+ S, оставляю свою конфигурацию на случай, если это поможет