vi에서 A, B, C, D를 표시하는 화살표 키 수정 (vim이 아님)


16

나는 vim에서 내가 추가 할 수 있다는 것을 알고있다.

set nocompatible

에서 .vimrc화살표 키를 피하기 위해 A, B, C, 삽입 모드 D 표시.

그러나 vi 버전 4.0 (gritter) 12/25/06을 사용하고 있습니다.

같은 행동을 어떻게 얻을 수 있습니까?

== 편집 == (1)

CVS 저장소 (2007 년 2 월 24 일 마지막 커밋) 에서 빌드 된 Arch Linuxvi 버전을 다음 명령과 함께 사용하고 있습니다.

make PREFIX=/usr LIBEXECDIR=/usr/lib/ex PRESERVEDIR=/var/lib/ex \
TERMLIB=ncurses FEATURES="-DCHDIR -DFASTTAG -DUCVISUAL -DMB -DBIT8"

그리고 이것들 과 함께 세 가지 패치 : fix-tubesize-short-overflow.patch , navkeys.patchpreserve-dir.patch .

== 편집 (2) ==

LXTerminal 0.2.0 , Termite 10-1 , Tilda 1.2.4-1 , Terminator 0.98-1xterm 320-2 에서 문제가 발생 하지만 urxvt v9.21 또는 Linux 가상 콘솔에서는 발생 하지 않습니다.

== 편집 (3) ==

에 따르면 단일 유닉스 규격 왼쪽 화살표를 각각 다음 capname에 해당 위쪽 화살표, 오른쪽 화살표, 아래쪽 화살표, : kcub1, kcud1, kcuf1kcuu1. 이러한 capterm xterm과의 terminfo 항목을 비교하면 rxvt-unicode-256color다음 과 같은 이점이 있습니다.

$ infocmp xterm rxvt-unicode-256color | grep -E 'kcuf1|kcub1|kcud1|kcuu1'

kcub1: '\EOD', '\E[D'.
kcud1: '\EOB', '\E[B'.
kcuf1: '\EOC', '\E[C'.
kcuu1: '\EOA', '\E[A'.

substituing에 의해 항목의 terminfo xterm이나 수정 '\EOD', '\EOB', '\EOC', '\EOA' 에 의해 '\E[D', '\E[B', '\E[C', '\E[A'문제를 해결하지만 좋은 아이디어입니다해야합니까? 어쩌면 다른 프로그램의 화살표 키 사용법을 깰 수 있습니까?


2
나는 이것이 vi (m) <-> 터미널 상호 작용으로 인한 것이라고 생각하므로 터미널 관련 해결 방법 / 구성을 시도 할 수도 있습니다.
VanLaser

1
@VanLaser 위의 말의 번역 : 현재에 대한 항목 TERM에서 termcap또는 terminfo데이터베이스는 키보드에 의해 생성 된 코드와 동기화를 벗어났습니다. 해결책은을 변경하는 TERM것이 아니라 또는에 vi링크되어 있는지 확인 하고 키보드에서 방출되는 키 코드를 찾은 다음 해당 데이터베이스를 수정하십시오. sysadmin에 대한 불평도 작동 할 수 있습니다. termcapterminfo
Sato Katsura

1
내가 다 말했어? 때때로 나는 놀랍게도 :) (물론, 나는 그것이 터미널과 관련이 있다는 것을 알고 있었다).
VanLaser

1
이 버전의 vi는 ncurses로 빌드되므로를 사용해야 terminfo합니다.
Ortomala Lokni

2
이 팁을 보셨습니까 ? 아마도 그들 중 일부가 유용 할 수 있습니다.
보리스 세레브 로프

답변:


2

$TERM변수 를 설정하는 별칭을 만들 수 있습니다

alias vi='TERM=rxvt-unicode-256color vi'

이것을 쉘의 rc 파일에 추가하면 시작하는 모든 터미널에 대해 정의되어야합니다.


내 시스템에서 Vi는 삽입 모드를 그대로 둡니다 (아마도 가비지를 인쇄하는 것보다 낫지 만 여전히 문제를 해결하지는 못합니다).
Martin Tournoij

1

때때로 이러한 동작은 비정상적인 키 매핑 설정으로 인해 발생할 수 있습니다. .vimrc예를 들어, 두 번의 ESC키 누름 을 매핑하는 것이있는 경우 :

nmap <Esc><Esc> some_command_sequence

그러면 화살표 키로 vim이 오작동 할 수 있습니다.


OP가 설명하는 구성은 매우 구체적이며 이러한 매핑이 적용되지 않은 상태로 동작을 표시합니다. (나는 그것을 테스트했다.)
Rich
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.