삽입 모드에서 Linux vi 화살표 키가 깨짐


95

내 화살표 키는 집의 삽입 모드에서 vi에서 작동하지 않으며 각각 'A'와 같은 개행 문자와 대문자를 삽입합니다. 그것을 고칠 방법이 있습니까?


3
나는 리눅스 배포를 의미합니까?
Miquel

집 밖에서 일합니까? :-)
Brian Agnew

4
분명히 해결책은 emacs입니다. 명백하게.
Paul Nathan

38
@Paul Nathan-해결책이 emacs라면 문제가 무엇인지 알고 싶지 않습니다.
Chas. Owens

답변:


107

Linux로 태그가 지정된 vim을 사용하고 있다고 가정합니다. 시험:

:set nocompatible

(이 명령을 추가하여 .vimrc를 구성 할 수 있습니다. 홈 디렉토리에 아직없는 경우 새 .vimrc 파일을 만들고 실행 echo $HOME하여 홈 디렉토리 경로를 확인하십시오.)


7
.이 vim아니라 명령을 사용하여 vi를 시작해야합니다 vi. 로 vim시작하지 않는 한 대부분의 고급 및 유용한 기능은 기본적으로 비활성화되어 있습니다 vim.
pts

1
@pts-고장난 시스템에서만. 내 모든 상자에서 vim을 vi로 시작하면 잘 작동합니다. 그러나 당신이 말하는 동작을 보여주는 몇 가지 CentOS 상자가 있습니다.
Chas. Owens

누군가가 vimrc에서 어떻게 보이는지 포함하도록이 답변을 편집 할 수 있습니까?
Stephan 2014

1
추가 @Stephan set nocompatible의 .vimrc에 한 줄에
마태 복음 Wilcoxson에게

우분투에서는 그 순간부터 vim (sudo apt install vim)을 설치하여 vi에 삽입 모드의 화살표 키를 사용하여 문제를 해결했습니다. 편집 : 나는 지금 여기에서 Han이 이미 언급했음을 알 수 있습니다.
pizzamonster

74

우분투는 기본적으로 vim-tinyvim이 가지고있는 모든 종소리와 휘파람을 가지고 있지는 않습니다.

sudo apt-get install vim모든 사람들이 이야기하는 모든 기능을 빠르게 얻으십시오.


1
이것은 민트 리눅스에서 정확히 필요한 것입니다. vim을 설치하여 "vi"를 사용할 수 있었고 모든 코드 강조 표시가 활성화되었습니다. 리눅스 지식의 환상적인 조각 :)
wired00

1
이것은 내 Raspberry Pi (Jessie Lite)에서 작동했습니다. 셸을 보호 할 때이 문제가 발생했지만 이제 완전히 해결되었습니다. :-)
JakeD

35

:set term=builtin_ansi

나를 위해 고쳤습니다. 이스케이프 모드 (경고음 모드)에서 vim에 붙여 넣거나 선행 ":"없이 ~ / .vimrc 끝에 추가 할 수 있습니다.


: set term = xterm도 작동 할 수 있습니다 (기억하기 쉽습니다).
Alexx Roche

참고 :set term=builtin_ansi로 나를 위해 일했습니다. :set term=xterm하지 않았다.
FractalSpace

내 Linux 상자 중 하나에서 export TERM=xtermvi를 호출하기 전에 명령 줄 :set term=xterm에서 사용한 다음 vim 7.2에서 작동합니다
Alexx Roche

완벽하게 작동합니다! 감사합니다!
Akhmedzianov Danilian

이것은 화살표 키 탐색을 활성화하기 위해 작동하지만 터미널의 모든 색상 코딩을 완전히 죽였습니다.
Ken Ingram

16

vi는 삽입 모드에서 화살표 키를 지원하지 않습니다. vim을 사용하십시오. vi는 단지 vim에 대한 링크 일 수 있지만 "원본"vi처럼 동작하도록 구성되어 화살표 키를 비활성화 할 수 있습니다. vim을 직접 호출하십시오.


이 솔루션은 아니지만, 그것은 사이의 차이를 취소하고, 동작 (IMO)에 대한 최선의 설명이다 vi하고 vim. 하지만 내 상자에 vim인쇄 command not found: D
다니엘 W.

@DanFromGermany 아마도 vim이 아닌 vi 만 설치했을 것입니다. vim을 사용하려면 Linux 시스템의 패키지 관리자를 통해 설치하십시오.
lothar 2011

:set term=ansi나를 위해 일해 주셔서 감사합니다 Raz . 당신은 '지원하지 않는다'고 말합니다. 내가 사용하고 vim-tiny있는 우분투 패키지가 바닐라 vi와 다르기 때문에 또는 용어 설정도 작동 할 것이라고 말씀 하셨나요 ?
n611x007

8

또 다른 변형 :이 문제는 .vimrc 변경 후 나에게 나타났습니다. 공동 검색 결과, 정상 모드에서 ESC를 영리하게 다시 매핑하는 것은 좋은 생각이 아니라는 사실이 밝혀졌습니다. 그것을 제거하면 문제가 해결되었습니다.

" this is NOT something you want in .vimrc:
" In normal mode, hitting Esc turns off search highlights:
nmap <ESC> :nohl<CR>  " Do NOT add this to .vimrc

이 문제를 경험 한 후 모든 것을 시도했으며 이것이 내가 찾고 있던 것입니다. 감사합니다!
Dan Bartlett

고쳐 주셔서 감사합니다. 리매핑 이스케이프가 문제를 일으키는 이유를 아십니까?
nonphoto

6

나를 위해 일한 유일한 것은 ": set term = ansi"


1
이것은 또한 Docker 컨테이너를 사용하여 나를 위해 일한 것 같습니다.
ohlando

1
이것은 나에게도 효과적이었습니다. 나는 윈도우에서 cmd.exe를 사용하고 있고 vagrant를 사용하여 우분투로
sshing

@ CodeCodeO-1-O-log-n 그래서 vi창문이나 우분투 쪽에서 어느 쪽을 사용 하고 있었습니까? :)
n611x007

Windows에서 cmd.exe를 실행 한 다음 vagrant ssh를 우분투 서버로, vi를 서버로 실행했습니다. 하지만 나중에 Putty를 사용하기 시작했고 더 이상 그렇게 할 필요가 없으며 Putty가 저를 위해 잘 작동합니다.
codelogn 2015 년

3

화살표 키와 동일한 문제가 있었지만 사용했을 때 nocp 또는 nocompatible을 설정하면 백 스페이스가 제대로 작동하지 않았습니다.

어떤 이유로 vim을 설치했을 때 sudo apt-get install vimvi는 더 이상 화살표 또는 백 스페이스 문제가 없었습니다.


1

.vim에서 git을 사용하도록 전환 한 후 화살표 키에 문제가 있습니다.

이 저장소를 설치했습니다-https: //github.com/sunaku/.vim

한 시간 동안 살펴본 후 AutoClose 플러그인 (어쨌든 마음에 들지 않음)이 화살표 키를 망가 뜨리는 것을 발견했습니다.

플러그인 문서는 set ttimeoutlen = 100을 설정해야한다고 제안했지만 저에게는 작동하지 않았습니다! (urxvt + screen 또는 urxvt, 심지어 xterm 사용)

그래서 마지막에 플러그인을 제거했습니다.


0

'noesckeys'를 시도해 볼 수도 있습니다.


0

Cygwin과 함께 Windows 8.1 내에서 vim을 사용하는 동안 동일한 문제가 발생했습니다.

나를 위해 일한 해결책은 Cygwin 터미널에서 다음 명령을 실행하는 것입니다.

cp vimrc_example.vim ~/.vimrc

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.