我使用vim标记插件,它允许我制作不同颜色的多重高光。它有一些默认的键映射,使用数字键盘(<k1> . <k9>和<C-k1> . <C-k9>),这允许我在高亮显示之间来回跳。
目前,关键地图只在gvim中工作,但gvim有其自己的呈现特性,我将不再对其进行扩展。如果我尝试在GNOME终端中使用普通vim中的数字键盘,vim会接收键盘上字母上方数字的键码,而不会在突出显示事件之间进行跳转。
是否有办法使GNOME终端将真正的数字键盘键码发送给vim?
我真的不想改变默认的键映射的插件,因为任何其他的键映射将不是那么令人难忘,或基本上保证需要更多的按键。
发布于 2019-11-16 23:51:47
GNOME终端,每个终端模拟器都将从X (或您正在使用的任何显示服务器)接收到的密钥are映射到字符或逸出序列中。不幸的是,它有一个没有配置空间的固定映射。
键盘可以在两种模式下工作:当它处于正常模式时,它发送与上一行中的数字相同的字符。但是,如果它处于应用模式,则发送转义序列。GNOME终端对两种模式的映射是相同的,而vim希望看到以下转义序列(与:set termcap检查):
t_KC <k0> ^[O*p
t_KD <k1> ^[O*q
t_KE <k2> ^[O*r
t_KF <k3> ^[O*s
t_KG <k4> ^[O*t
t_KH <k5> ^[O*u
t_KI <k6> ^[O*v
t_KJ <k7> ^[O*w
t_KK <k8> ^[O*x
t_KL <k9> ^[O*y为了使用这些快捷键,您需要一个终端,它在应用程序模式下正确地发送转义序列。例如,您可以使用xterm并将其转换为VT220 220-风格函数键,方法是添加:
XTerm.sunKeyboard: true敬你的~/.Xresources。
编辑:如果您想重新编译libvte,您可能应该修改条目如下:
static const struct _vte_keymap_entry _vte_keymap_GDK_KP_0[] = {
{cursor_all, keypad_all, 0, "0", 1},
{cursor_all, keypad_app, VTE_NUMLOCK_MASK, "0", 1},
{cursor_all, keypad_app, 0, _VTE_CAP_SS3 "p", -1},
{cursor_all, keypad_all, 0, X_NULL, 0},
};把补丁发给侏儒。
https://unix.stackexchange.com/questions/552297
复制相似问题