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 Linux 의 vi 버전을 다음 명령과 함께 사용하고 있습니다.

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.patch 및 preserve-dir.patch .

== 편집 (2) ==

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

== 편집 (3) ==

에 따르면 단일 유닉스 규격 왼쪽 화살표를 각각 다음 capname에 해당 위쪽 화살표, 오른쪽 화살표, 아래쪽 화살표, : kcub1, kcud1, kcuf1와 kcuu1. 이러한 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.