Не совсем то, что вы просите, но почти ...
Вы можете переназначить настройки клавиатуры X, используя xmodmap
команду. Вы можете увидеть текущие настройки, запустивxmodmap -pke
Каждый код клавиши (значение, связанное с каждой клавишей на клавиатуре) может иметь до 8 символов клавиш (которые по сути являются выходными данными). Они заключаются в следующем:
- Когда нажата сама
- При нажатии со смещением
- При нажатии с включенным переключателем режима (кажется устаревшим)
- При нажатии с переключателем режима и переключения (кажется, устарели)
- При нажатии с Alt-Gr (иначе ISO_Level3_Shift в терминах xmodmap)
- При нажатии с Alt-Gr и Shift
Так что в настоящее время мой ключ "h" выглядит так:
h H h H hstroke Hstroke
где Hstroke KeySym производит Ħ.
Если вы не используете Alt-Gr для ввода не-ascii символов, вы можете переназначить h, j, k и l с помощью Alt-Gr, чтобы сделать то, что вы хотите. Это было бы:
xmodmap -e 'keycode 43 = h H h H Left Hstroke'
xmodmap -e 'keycode 44 = j J j J Up J'
xmodmap -e 'keycode 45 = k K k K Down ampersand'
xmodmap -e 'keycode 46 = l L l L Right Lstroke'
Конечно, Alt-Gr со сдвигами не является строго необходимым, я просто сохраняю значения, которые уже существуют. Вы можете найти значения кода ключа, выполнив xev
команду из терминала. xev
отображает X событий, так что вы можете нажать клавишу и узнать информацию о ней.
Чтобы сделать этот параметр постоянным, вы можете добавить следующее в .Xmodmap в вашем домашнем каталоге
keycode 43 = h H h H Left Hstroke
keycode 44 = j J j J Up J
keycode 45 = k K k K Down ampersand
keycode 46 = l L l L Right Lstroke
Нажатие Alt-Gr, конечно, не так приятно, как нажатие Alt при использовании hjkl, но вы, я думаю, вы можете столкнуться с трудностями при использовании только Alt, потому что он используется для доступа к меню. Вы можете использовать информацию в этом ответе вместе с инструментами, упомянутыми Fraekkert для привязки, например, Alt-Shift-h, что может вам подойти лучше.
Также возможно стоит отметить, что вы можете установить режим vi в bash (или какую оболочку вы используете) с помощью set -o vi
. Это дает вам как поведение при редактировании командных строк и истории. Я не верю, что это смотрит на ваш .vimrc, хотя, поэтому не ожидайте, что ваши ключевые переназначения будут работать.