GNOME 터미널이 vim에 올바른 숫자 키 코드를 보내도록 합니다.

GNOME 터미널이 vim에 올바른 숫자 키 코드를 보내도록 합니다.

나는 사용한다vim 태그다양한 색상으로 여러 개의 하이라이트를 만들 수 있는 플러그인입니다. 여기에는 강조 표시된 항목 사이를 앞뒤로 이동할 수 있는 숫자 키패드( <k1>... <k9><C-k1>... )를 사용하는 기본 키 매핑이 있습니다.<C-k9>

현재 키 매핑은 gvim에서만 작동하지만 gvim에는 더 이상 설명하지 않을 자체 렌더링 문제가 있습니다. GNOME 터미널의 일반 vim에서 숫자 키보드를 사용하려고 하면 vim은 키보드 문자 위의 숫자에 대한 키코드를 수신하고 강조 표시된 이벤트 사이를 이동하지 않습니다.

그놈 터미널에서 실제 숫자 패드 키보드 코드를 vim으로 보내도록 하는 방법이 있습니까?

다른 키맵은 기억하기가 쉽지 않거나 더 많은 키가 필요하기 때문에 플러그인의 기본 키맵을 변경하고 싶지 않습니다.

답변1

그놈 터미널(모든 터미널 에뮬레이터가 매핑됨)주요 기호X(또는 사용 중인 디스플레이 서버)에서 문자를 받거나이스케이프 시퀀스. 불행하게도 그것은고정 매핑구성 공간이 없습니다.

키보드는 두 가지 모드로 작동할 수 있습니다.일반 모드이전 줄의 숫자와 동일한 문자를 보냅니다. 그러나 만약에신청방법이스케이프 시퀀스를 보냅니다. 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 유형 기능 키, 추가하여:

XTerm.sunKeyboard: true

당신을 위한 ~/.Xresources.

편집하다:다시 컴파일하고 싶다면무료 소프트웨어아마도 다음과 같이 항목을 수정해야 할 것입니다.

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},
};

패치를 GNOME으로 보냅니다.

관련 정보