Как настроить сочетания клавиш во всех режимах 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, оставляю свою конфигурацию на случай, если это поможет

Другие вопросы по тегам