首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使GNOME终端向vim发送正确的数字键盘密钥代码

使GNOME终端向vim发送正确的数字键盘密钥代码
EN

Unix & Linux用户
提问于 2019-11-15 03:55:59
回答 1查看 390关注 0票数 3

我使用vim标记插件,它允许我制作不同颜色的多重高光。它有一些默认的键映射,使用数字键盘(<k1> . <k9><C-k1> . <C-k9>),这允许我在高亮显示之间来回跳。

目前,关键地图只在gvim中工作,但gvim有其自己的呈现特性,我将不再对其进行扩展。如果我尝试在GNOME终端中使用普通vim中的数字键盘,vim会接收键盘上字母上方数字的键码,而不会在突出显示事件之间进行跳转。

是否有办法使GNOME终端将真正的数字键盘键码发送给vim?

我真的不想改变默认的键映射的插件,因为任何其他的键映射将不是那么令人难忘,或基本上保证需要更多的按键。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-11-16 23:51:47

GNOME终端,每个终端模拟器都将从X (或您正在使用的任何显示服务器)接收到的密钥are映射到字符或逸出序列中。不幸的是,它有一个没有配置空间的固定映射

键盘可以在两种模式下工作:当它处于正常模式时,它发送与上一行中的数字相同的字符。但是,如果它处于应用模式,则发送转义序列。GNOME终端对两种模式的映射是相同的,而vim希望看到以下转义序列(与:set termcap检查):

代码语言:javascript
复制
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-风格函数键,方法是添加:

代码语言:javascript
复制
XTerm.sunKeyboard: true

敬你的~/.Xresources

编辑:如果您想重新编译libvte,您可能应该修改条目如下:

代码语言:javascript
复制
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},
};

把补丁发给侏儒。

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/552297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档