Vim "раздражение" с раскладками клавиатуры - PullRequest
11 голосов
/ 05 ноября 2011

Вот в чем дело.У меня есть две раскладки клавиатуры, HR (хорватский, мой родной язык) и EN (английский).Ну, на самом деле у меня есть еще кое-что, но в данный момент они не важны.

При работе с Vim мне часто приходится переключаться на EN - так как на HR у меня нет ни [, ] ни {, }, ни много других символов - а затем вернемся к HR для символов моего языка.Это боль.

Конечно, поскольку я работаю без панели задач, это часто приводит к потере впустую Shift нажатий.

Есть ли способ вVim, чтобы «обнаружить» набор раскладок клавиатуры, оценить его и поместить в строку состояния?

Я пытался переназначить некоторые клавиши (например, tilda to backtick), но только что представил совершенно новыймного проблем.

Все советы (не придуманные здесь) по этому поводу приветствуются.

1 Ответ

15 голосов
/ 16 ноября 2011

В 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 является еще более мощной, поскольку она является локальной для буфера, а это означает, что различные сопоставления клавиатуры могут использоваться одновременно в разных буферах в зависимости от настроек.

...