一般将 alt 或 ctrl + h,j,k,l 映射为箭头 |侏儒 | vim 风格

一般将 alt 或 ctrl + h,j,k,l 映射为箭头 |侏儒 | vim 风格

我想在整个操作系统(所有应用程序)中使用ctrl + hasLeft Arrow等(vim 风格)。我使用 gnome 3.16.4。

ctrl+h新闻稿序列的 xev 结果是:

KeyPress event, serial 37, synthetic NO, window 0x3000001,
    root 0xf6, subw 0x0, time 8058713, (-860,225), root:(166,344),
    state 0x0, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x3000001,
    root 0xf6, subw 0x0, time 8058895, (-860,225), root:(166,344),
    state 0x4, keycode 43 (keysym 0x68, h), same_screen YES,
    XLookupString gives 1 bytes: (08) "
    XmbLookupString gives 1 bytes: (08) "
    XFilterEvent returns: False

KeyRelease event (...)

一行h如下:

XLookupString gives 1 bytes: (68) "h"

向左箭头很简单:

keycode 113 (keysym 0xff51, Left)

实现

CTRL 的基本原理

首先我想分配,,,fn + h但它似乎以软件方式不可能。和也分别用作注销和最小窗口。左 Alt 看起来是最好的选择,但在某些程序中,它充当附加字母(编码)(例如,按下 alt 时,vim 和 gvim 会看到不同的键)。jklwindows + lwindows + h

我知道使用 会失去一些功能ctrl,但到目前为止我从未ctrl在终端中使用过 default + hjkl 快捷方式(我使用 .inputrc 中设置的 vi 模式映射)

xevAlt + h版本:

KeyPress event, serial 37, synthetic NO, window 0x1e00001,
    root 0xf6, subw 0x0, time 2180657, (434,71), root:(484,158),
    state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 37, synthetic NO, window 0x1e00001,
    root 0xf6, subw 0x0, time 2180851, (434,71), root:(484,158),
    state 0x8, keycode 43 (keysym 0x68, h), same_screen YES,
    XLookupString gives 1 bytes: (68) "h"
    XmbLookupString gives 1 bytes: (68) "h"
    XFilterEvent returns: False

答案1

Control H, J,L已经在终端中得到了广泛的应用:

  • controlH用于擦除(Linux 除外)
  • controlJ新队
  • controlL换页相当于清除屏幕

在 中bashcontrolK默认绑定到kill-line

可以更改这些分配,但此后您的计算机将不再有用。

相关内容