В Vim существует систематический способ преобразования ключей, связанных с языком, который заключается в одновременной настройке всего диапазона сопоставлений путем установки параметра keymap
.Это позволяет определить соответствие между символами английской раскладки клавиатуры и соответствующими неанглийскими символами для этой раскладки (см. :help mbyte-keymap
).Перевод будет происходить только тогда, когда пользователь должен вводить текст, а не вводить какую-либо команду Vim.Это относится к вводу текста в режимах вставки, замены и командной строки, а также к вводу шаблона поиска или односимвольного аргумента для таких команд, как f
, t
, r
.
Inво всех вышеупомянутых контекстах, за исключением аргумента ожидающего символа, переключение использования сопоставления клавиш, указанного в параметре keymap
, выполняется с помощью Ctrl + ^ (Ctrl + 6 ) нажатие клавиши.(См. :help i_^^
и :help
c_^^
.) Как упоминалось выше, включенная раскладка клавиш влияет только на ввод текста;Поведение клавиатуры в обычном режиме остается неизменным независимо от текущего отображения языка.Таким образом, когда кто-либо оставляет запись режима вставки в неанглоязычной раскладке клавиш, они могут сразу использовать команды и сочетания клавиш в обычном режиме без переключения раскладки клавиатуры.Возврат к режиму вставки переключает ввод в таблицу ключей, использованную в последний раз, когда она была оставлена (факт, что карта ключей была активна, сохраняется в параметре iminsert
).
Однако состояние сопоставления клавиш незапоминается для режима командной строки по умолчанию, поскольку считается удобным начинать вводить текст на английском каждый раз, так как все имена команд Ex находятся в ASCII.Команда
:set imcmdline
сводит на нет такое поведение.
Активны ли языковые отображения при наборе шаблона поиска (для команд /
и ?
), запоминается отдельно, в imsearch
вариант.Чтобы синхронизировать переключение использования отображения для ввода шаблона поиска и вставки текста в буфер, выполните:
:set imsearch=-1
. Существует не несколько предопределенных комбинаций клавиш для примерно дюжины с половиной языков.Обычно язык поддерживается несколькими сопоставлениями, которые отличаются кодировкой или раскладкой клавиатуры, с которой они предназначены для использования.Можно просмотреть их все в самом Vim с помощью :e $VIMRUNTIME/keymap
.Чтобы включить конкретное сопоставление клавиатуры, установите для параметра keymap
имя этого сопоставления.Например, следующая команда меняет keymap
на встроенное хорватское отображение UTF-8.
:set keymap=croatian_utf-8
Если вы хотите настроить существующую таблицу ключей или создать новую, посмотрите на карту ключейформат файла в :help keymap-file-format
.
Помещение этой строки настроек в файл .vimrc
позволяет активировать указанную раскладку клавиш в любом буфере.Тем не менее, опция keymap
является еще более мощной, поскольку она является локальной для буфера, а это означает, что различные сопоставления клавиатуры могут использоваться одновременно в разных буферах в зависимости от настроек.