Эту проблему можно решить с помощью опции keymap
. Это позволяет определить альтернативную раскладку клавиатуры для использования в режимах, требующих ввода текста.
Для переключения между раскладкой по умолчанию и альтернативной раскладкой в режиме вставки, замены или командной строки (но не в обычном режиме) используйте Ctrl+^ (Ctrl< /kbd>+6). Изменение раскладки влияет только на ввод текста; поведение клавиатуры в обычном режиме остается неизменным независимо от текущей настройки раскладки. Можно оставить запись в режиме вставки на греческом языке и сразу же использовать сочетания клавиш в обычном режиме, не переключаясь на другую раскладку клавиатуры. Если затем вернуться в режим вставки или, например, начать поиск, набрав /
, Vim автоматически переключит раскладку обратно на греческий.
Текущая раскладка клавиатуры, используемая в этих режимах ввода текста, запоминается между переключениями в другие режимы. Единственное исключение из этого поведения сделано для режима командной строки, который всегда начинается с раскладки клавиатуры по умолчанию, поскольку большую часть времени требуется ввести команду Ex (в ASCII). С установленным параметром keymap
пользователь должен работать в Vim, сохраняя английскую раскладку системной клавиатуры при переключении раскладки клавиатуры Vim с помощью Ctrl+^ (вместо общесистемной раскладки выключатель).
Чтобы включить, скажем, греческую раскладку UTF-8 на постоянной основе, добавьте следующую строку в файл .vimrc
.
:set keymap=greek_utf-8
Существует множество предопределенных раскладок для большого набора языков, вы можете просмотреть их все в самом Vim, используя :e $VIMRUNTIME/keymap
. Обратите внимание, что обычно для одного языка предоставляется несколько раскладок, которые отличаются только кодировкой символов, так что каждый может выбрать ту, которая подходит для его конфигурации.
Я также рекомендую установить параметры ниже, чтобы указать, должна ли раскладка клавиатуры быть включена по умолчанию в режиме вставки и при вводе шаблона поиска:
:set iminsert=0 imsearch=-1
Подробное объяснение см. в :help iminsert
и :help imsearch
.
Также есть специальный языковой режим, который, если не ошибаюсь, был введен в Vim раньше, чем keymap
. Это позволяет добиться поведения, аналогичного keymap
, путем ручного указания пар букв, соответствующих клавишам на клавиатуре, в длинной строке, которая будет сохранена в опции langmap
. Лично я — мой родной язык тоже не английский — я предпочитаю (и рекомендую) вместо этого использовать способ keymap
.
В заключение я должен подчеркнуть, что все вышеперечисленное в равной степени применимо к любому другому языку, для которого Vim имеет (или может иметь) раскладку клавиатуры.
См. также мой ответ на аналогичный вопрос 'Vim «раздражает» раскладками клавиатуры», который был задан с тех пор, как я первоначально дал этот ответ.
person
ib.
schedule
23.09.2010