OSX Debian SSH 터미널의 이상한 vi 동작

OSX Debian SSH 터미널의 이상한 vi 동작

스왑 파일을 생성할 때 vi /etc/fstab루트로 발행합니다. fstab 파일이 표시됩니다. G $줄 끝으로 점프 하여 iINSERT 모드로 전환합니다. 오른쪽 화살표를 누르면 커서가 한 문자 오른쪽으로 이동됩니다. 줄바꿈에 vi대문자를 삽입합니다 . C당황해서 왼쪽 방향키를 눌렀습니다. vi대문자를 삽입하세요 B.

혼란스러워요. 여기서 무슨 일이 일어나고 있는지 알아보려면 어디서부터 시작해야 합니까? 을 사용할 수 있어야 합니다 vi.

답변1

향상된 vim을 사용할 수 있고 화살표 키를 사용할 수 있습니다. vi는 기본적으로 키를 사용하여 h j k l커서를 이동합니다.

alias vi

그러니 $HOME/.vimrc 이 줄을 편집하고 넣으세요.

set nocompatible

유닉스에 관심이 있다면 보통 이 vimrc를 사용합니다.

set nocompatible
set backspace=indent,eol,start
syntax on
imap <esc>OH <esc>0i
cmap <esc>OH <home>
nmap <esc>OH 0
nmap <esc>OF $
imap <esc>OF <esc>$a
cmap <esc>OF <end>

답변2

OSX "vi"는 vim인 것 같습니다. 해당 버전 메시지는 다음과 같습니다(엘 캐피탄):

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Oct 27 2015 16:22:14)
Compiled by [email protected]
Normal version without GUI.  Features included (+) or not (-):

당신에게는 작은 기회가 있습니다아니요vim을 사용하지만 누구도 합리적인 대안을 제시하지 않습니다.

vim은 삽입 모드에서 커서 키 시퀀스를 허용합니다.

그러나 이것의 한 가지 단점은 실제 터미널 동작이 환경 변수에 의해 설정된 터미널 설명과 일치하지 않는다는 것입니다 TERM. 예를 들어, "linux" 터미널 설명은 다음을 사용하지 않습니다.신청방법, 그리고 TERM실제로 사용하도록 초기화된 터미널에서 작업하는 경우신청방법escapeOB, 그러면 vim은 을 검색할 때 시퀀스를 예상하지 않습니다 escape[B. 결과적으로 B아래쪽 화살표 키를 누르면 시퀀스가 ​​삽입됩니다.

추가 자료:

답변3

화살표 키는 termcap(5)에서 이스케이프 시퀀스로 정의됩니다. 이것이 기본 VT100 설정입니다. 터미널에서 ^v 뒤에 아무 것도 오는 명령을 사용하여 시퀀스를 볼 수 있습니다. VT100 용어의 오른쪽 화살표는 ^[[C(^[)는 이스케이프 문자입니다. 이는 vi(1)에게 삽입을 종료하고 한 문단 위로 이동한 다음(이 경우에는 행이 없거나 한 행임) 행의 끝으로 변경하라는 지시입니다. 기능 키를 처리하도록 설계되지 않은 프로그램에서 기능 키를 사용할 때 비슷한 예상치 못한 결과가 발생할 수 있습니다.

이러한 유형의 문제에는 운영 체제, 프로그램 또는 터미널에 국한되지 않는 두 가지 해결 방법이 있습니다. 첫 번째 해결책은 삽입 모드에서 탐색을 처리하는 방법을 알고 있는 vi(1)를 사용하는 것입니다. vim(1)은 그러한 vi(1) 중 하나입니다. vt100 에뮬레이터와 잘 작동하며 그런 식으로 설치하려는 경우 자체 GUI가 있습니다. 그러나 많은 사람들은 vim(1)이 느리고 무겁다고 생각하는 소프트웨어라고 생각합니다. 다른, 어쩌면 더 성가신 옵션으로는 vwrapper 플러그인이 있는 Eclipse(1)와 Viper 플러그인이 있는 emacs(1)가 있습니다.

또 다른 해결책은 실제 VT100과 함께 사용하도록 고안된 vi(1)을 사용하는 것입니다. 삽입 모드에서는 화살표나 기타 다중 문자 기능 키를 사용하지 마십시오. 문제의 주요 서열:

G -- 파일의 마지막 줄로 이동 $ -- 현재 줄의 마지막 문자로 이동 i -- 현재 문자 앞에 삽입

이 작업에는 올바르지 않습니다. 대신 --를 사용하여 현재 문자를 추가하므로 줄의 마지막 문자를 지나갈 때 화살표 키가 필요하지 않습니다.

아니면, 더 나은

G - 마지막 줄 A - 현재 줄 추가

관련 정보