Как переназначить CapsLock на Esc в Vim, установленном на Ubuntu (только консоль, без графической среды)?

Вопрос или проблема

Цель – переназначить CapsLock на Esc в Vim, установленном на Ubuntu (только консоль, без рабочего окружения).

Эта система Ubuntu установлена на виртуальном приватном сервере.
Я подключаюсь к этому серверу, используя Putty, со своего домашнего ноутбука с Windows 10.

И все говорят о том, как переназначить эту клавишу CapsLock на Esc в Vim, но я не смог найти реальную строку, которую нужно написать в файл $HOME/.vimrc.

Вот что я пробовал сам, но ничего из этого не работает, кроме первой строки, добавляющей номера строк:

set number

inoremap <Caps> <Esc>
inoremap <Caps_Lock> <Esc>
inoremap <CapsLock> <Esc>

Цель – переназначить CapsLock на Esc только в Vim, а не на весь сервер Ubuntu.

Я проверил, и CapsLock работает нормально в Vim и делает буквы заглавными, когда заблокирован.

Я искал на многих местах, таких как:
https://vim.fandom.com/wiki/Mapping_keys_in_Vim_-Tutorial(Part_1)
все 3 части этого руководства и здесь также.

Все там написано: переназначение “ii”, “jj”, “jk”, “jw” разных комбинаций Ctrl и Shift.
Все, кроме переназначения CapsLock на Esc.

??? Почему ???

Почему так трудно переназначить CapsLock на Esc в Vim?
Это почти мой вопрос, но, к сожалению, на Windows OS.

Из комментариев под моим вопросом я выяснил, что переназначение CapsLock на Esc невозможно в одном только Vim.

Я также прочитал эту ветку: Как использовать CapsLock вместо Escape в Vim?

И в принятом ответе говорится: “Для переназначения в консоли, если ваша дистрибуция использует systemd, вы можете использовать пользовательскую раскладку клавиатуры в /etc/vconsole.conf, как описано на Arch Wiki.”

Я думаю, что Ubuntu использует systemd, поэтому я готов принять ответ, который переназначит CapsLock на Esc во всей Ubuntu, установленной на моем VPS, при условии, что маппинг клавиш моего домашнего Windows устройства останется неизменным.

Я выполнил это:

michal@localhost:~$ localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105

Что мне делать дальше?

Я думаю, у меня нет этого файла /etc/vconsole.conf на моем Ubuntu VPS.
Стоит ли мне создать его самому, или он должен быть там по умолчанию?

Легкая альтернатива – добавить это в ваш файл vimrc

imap ii <Esc>

Здесь я использую ii (2 ‘и’) вместо Escape для возврата в нормальный режим.

Вы редко встретите слово с двумя подряд идущими ii в английском языке, поэтому вы не попадете случайно в нормальный режим.

Вы также можете заменить ii на любую другую клавишу, если хотите, но, насколько я знаю и пробовал, это не работает с такими клавишами, как Caps Lock, Shift, Ctrl и Alt, поскольку они требуют другую клавишу, чтобы задать что-то значимое.

.

Ответ или решение

Теория

Проблема заключается в том, что стандартными средствами Vim сложно переназначить модификационные клавиши, такие как CapsLock. Когда вы работаете в консольном режиме, вы являетесь зависимым от базового уровня функциональности терминала. В вашем случае CapsLock является частью аппаратной настройки клавиатуры и его переназначение через конфигурационные файлы Vim, такие как .vimrc, внутри терминала невозможно. Это связано с тем, что такие клавиши обрабатываются на уровне ядра операционной системы до передачи сигнала программным приложениям.

Для решения этой задачи необходимо переназначить CapsLock в пределах всей системы Ubuntu, но это не повлияет на ваш локальный компьютер с Windows, так как изменение будет затрагивать только серверную часть вашего Ubuntu VPS.

Пример

Для переназначения CapsLock на Esc на уровне системы в Ubuntu необходимо использовать утилиту loadkeys для консольной клавиатурной раскладки. Сначала вам потребуется создать кастомную раскладку клавиатуры и применить ее к системе.

  1. Создайте файл кастомной раскладки:

    Создайте новый файл, например custom.map, где вы укажете переназначение CapsLock:

    echo "keycode 58 = Escape" > custom.map
  2. Примените новый файл через loadkeys:

    Загрузите новый файл раскладки с помощью команды:

    loadkeys custom.map
  3. Сделайте изменения постоянными:

    Чтобы изменения применялись автоматически при каждом запуске системы, добавьте команду в скрипт инициализации. Например, вы можете добавить команду loadkeys /путь/до/custom.map в файл /etc/rc.local, перед строкой exit 0, или использовать системный демонтатор.

  4. Проверьте изменения:

    После выполнения данных шагов, CapsLock должен работать как клавиша Esc в Vim и любом другом приложении на вашем Ubuntu сервере.

Применение

Эти изменения помогут вам полноценно работать в Vim, не отвлекаясь на дальнее расположение клавиши Esc или ее неинтуитивное использование. С этим переназначением вы сможете легко переключаться в нормальный режим редактирования в Vim без необходимости модификации вашей конфигурации PuTTY или клавиатурных настроек Windows.

Как итог, если ваша цель заключается исключительно в переназначении CapsLock на Esc для удобства работы в Vim в консоли, описанное выше решение идеально подходит, так как позволяет выполнить задачу на уровне системы, не затрагивая клиентские устройства или другие приложения. Однако следует помнить, что подобного рода переназначения подойдут только в тех случаях, когда доступ к системе осуществляется исключительно через консоль без графической оболочки, что минимизирует конфликтующие ситуации с другими приложениями.

Оцените материал
Добавить комментарий

Капча загружается...