不完全是您的要求,但是几乎...
您可以使用以下xmodmap
命令重新映射X键盘设置。您可以通过运行查看当前设置xmodmap -pke
每个键码(与键盘上的每个键相关联的值)最多可以附加8个键符号(本质上是输出)。它们如下:
- 单独按下时
- 按住Shift键时
- 在启用模式开关的情况下按下(似乎已过时)
- 用模式开关和换挡按下时(似乎已过时)
- 与Alt-Gr一起按下时(在xmodmap术语中也称为ISO_Level3_Shift)
- 用Alt-Gr按下并移动时
因此,目前我的“ h”键如下所示:
中风中风
Hstroke键符产生Ħ的位置。
除非您使用Alt-Gr输入非ASCII字符,否则可以使用Alt-Gr重新映射h,j,k和l以完成您想要的操作。这将是:
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
在使用hjkl时,按Alt-Gr当然不如按Alt那样好,但是您认为让Alt正常工作可能很困难,因为它用于菜单访问。您也许可以使用此答案中的信息以及Fraekkert提到的工具来绑定例如Alt-Shift-h,这可能更适合您。
可能还需要注意的是,您可以使用在bash(或使用的任何shell)中设置vi模式set -o vi
。这在编辑命令行和历史记录时为您提供了类似vi的行为。我不相信这会看您的.vimrc,所以不要指望您的密钥重新映射起作用。