vim에서 화살표 키가 자발적으로 작동을 멈춤


25

최근에 OS X 10.6 (제 생각에)에서 10.9로 업그레이드했습니다. 그 이후로에서 편집하는 동안 vim화살표 키가 "자발적으로"작동을 멈출 것 같습니다 .

어느 시점에서 좌절감에 나는 화살표 키 중 하나를 "파쇄"했고 결국 "E388 정의를 찾을 수 없습니다"오류가 표시되었습니다. 다른 모든 시간에, 나는 그것을 경험 한 화살이 갑자기 나를 찌르기 시작 했습니다!

종료했다가 다시 열면 일시적으로 문제가 해결 됩니다. 그러나 나는 그것을 막고 싶습니다 !

이것이 무엇인지 아는 사람이 있습니까? 그리고 그것을 고치는 방법?


vimrc업데이트 중에 내 기본값 이 수정 된 것 같습니다 . 내 기억이 정확하다면 이전에는 꽤 큰 파일이었습니다. 이제 여기에는 다음이 포함됩니다.

" Configuration file for vim
set modelines=0         " CVE-2007-2438

" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible        " Use Vim defaults instead of 100% vi compatibility
set backspace=2         " more powerful backspacing

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup

이러한 옵션이 아직 무엇인지 모릅니다. 내가 살펴볼 것입니다. 그러나 여기 누군가가 Google과 읽을 수있는 것보다 더 빨리 알고 있기를 바랍니다 ...


또한이 질문이 더 적합 할 수있는 Apple 중심 포럼이 있다는 것을 깨달았습니다. 따라서 이것이 OS X의 조건보다 가능성이 높으면 vimmod 가이를 마이그레이션 할 수 있습니다.
svidgen

2
대학에서 "프라임"메인 프레임 작업을 생각 나게합니다. 교수는에 화살표 키를 사용해서는 안된다고 가르쳤다 vi. 항상 hjkl을 사용하십시오. 여기서 "화살표"키는 고대 하드웨어에 사용되었습니다.
레드 크리켓

OK ... 그러나 화살표 키가 작동해야합니다. 교수님의 생각에 관계없이 제가 사용해야한다고 생각합니다. 그리고 나는 때때로 편리하다고 생각합니다. 따라서 솔루션을 기대합니다.
svidgen

1
키 리터럴을 버퍼에 삽입하면 어떻게됩니까? 삽입 모드로 들어가서 Ctrl + v를 누른 다음 화살표 키를 누르십시오. Mac의 Vim은 위쪽 화살표 키를 ^[OA, 아래쪽 ^[OB, 오른쪽 ^[OC, 왼쪽으로 표시 ^[OD합니다. 문제가 나타나는 전후에 확인
Nathan Wallace

@NathanWallace는 귀하의 질문을 어떻게 간과했는지 확실하지 않습니다. 다음에 Mac에있을 때 시도해 보겠습니다.
svidgen

답변:


24

에서 발견 제임스 Hodgkinson의 블로그 , 다음 명령은 나를 위해 작동합니다. vim 화면을 새로 고칩니다.

:!reset

이 대답을 어떻게 간과했는지 잘 모르겠지만 매우 유망합니다.
svidgen

사실 ... 기사에 설명 된대로 Ctrl + R을 누르면 위의 Nathan에 대한 응답에서 언급 한 잘못된 화살표 키 매핑과 완전히 일치하는 문제가 재현됩니다. 이 경우 reset 명령이이를 해결합니다. 그리고 .. 다른 방법으로 문제를 안정적으로 재현 할 수 없으므로 이것이 가장 유용한 답입니다!
svidgen

11

나는 또한이 문제에 몇 번 뛰어 들었다. SSH를 통해 로그인 한 다른 컴퓨터에서 GNU 화면을 실행하고있었습니다. 문제를 해결하기 위해 화면 ( Ctrl- a d)을 분리 하고 기기에서 로그 오프 한 후 다시 로그인하여을 사용하여 다시 연결했습니다 screen -x. 화면을 분리했다가 다시 연결하면 기기에서 로그 오프하지 않고도 작동 할 수 있습니다. 그래도 기억이 안나


화면 세션을 닫고 다시 시작하면 문제가 해결되었습니다.
Eno

1
그것은 저에게 문제였습니다. 어떻게 든 screen펑크 상태에 빠졌습니다 (ssh 연결을 통해). 그 터미널을 닫고 다시 ssh screen -rd하고 트릭을 수행했습니다. 감사!
Pierre D

@PierreD 맞습니다.이 문제는 이미 몇 번이나 발생했습니다. screen세션에서도 Detach & Reattach가 문제를 해결했습니다. 감사합니다!
stdcerr

6

경로 /usr/share/vim/에서 .vimrc파일을 찾았습니다 ... 거기에 선을 추가했습니다

set term=ansi 

그것은 나를 위해 일했다. 이제 화살표 키가 Vim 편집기에서 제대로 작동합니다.


2
최신 Windows 10 WSL / Ubuntu 업데이트로 인해 문제가 해결되었습니다.
그레이 폭스

3

이것은 문제와 매우 흡사합니다. 이 기사의 제목 은 Vim의 커서 키 : You Mac'ing Me Crazy! .

발췌

Vim은 많은 상황에서 특히 빠른 편집 (특히 루트) 및 원격 서버의 파일 편집에 유용합니다. 9 개월 동안 Mac Book Pro를 사용하면서 한 가지 불편한 점은 Vim의 커서 키가 줄을 바꾸는 대신 삽입 또는 명령 모드에서 벨을 울리는 것입니다. MacPorts를 통해 버전 7로 업그레이드해도 동일한 결과가 나타납니다. 커서 키는 rxvt에서 TERM을 VT220으로 전환 한 후 작동했습니다! 단점은 구문 강조가 작동을 멈췄다는 것입니다.

다행히도 Google 검색 매개 변수에 VT220을 추가하면 Vim 문서에서 vt100-cursor-keys에 대한 참조가 나타납니다. .vimrc 파일에 다음 코드를 추가하여 문제를 해결하십시오.

    :set notimeout          " don't timeout on mappings
    :set ttimeout           " do timeout on terminal key codes
    :set timeoutlen=100     " timeout after 100 msec

같은 기사에서 귀하의 설정에 대한 또 다른 제안이 있습니다 $TERM.linux OSX 대신.

발췌

TERM 값이 원격 서버에서 선택되므로 TERM의 기본값을 linux 또는 dtterm으로 변경하는 것이 더 나은 솔루션입니다. 요즘에는 대부분의 서버가이 두 터미널 유형을 모두 지원할 것이라고 확신합니다.


흠 ... 나는 지금 더 혼란스러워한다. 전역 / 기본 .vimrc파일 이 있다고 생각했습니다 . OS X 업데이트 중에이 항목들이 이동 또는 제거 되었습니까?
svidgen

@ svidgen-아니요 변경되지 않았다고 생각하지만 그 문제는 귀하의 것과 거의 비슷하게 들리며 해결하기가 쉽습니다. 그래서 귀하와 공유 할 것이라고 생각했습니다. 우연히도 $TERM당신을 얻을 수있었습니다.
slm

Whelp, 이것이 가장 관련성이 높은 답변입니다. +1입니다. 불행히도 문제를 일관되게 재현 할 수 없기 때문에 아직 수정했는지 확실하지 않습니다.
svidgen

이 수정 프로그램을 적용한 후 문제가 다시 발생했습니다. 여전히 관련 답변이며 +1은 그대로 둡니다. 그러나 추가 답변을 제공하려는 경우 위의 내 의견을 참조하십시오.
svidgen

0

업데이트를 축하합니다. 나는 주말 동안 내 자신의 업데이트를 수행하고 내 자신의 이상한 키보드 문제를 처리하고 있습니다.

여기에 필요한 몇 가지 사항이 있습니다.

  • 오래된 Logitech 게임 소프트웨어를 제거하고 업그레이드하십시오. 이 작업을 수행하기 전에 사각형 및 중괄호를 사용하는 데 문제가있었습니다. 특수 키는 종종 VIM 컨텍스트에서 esc- [시퀀스를 전송하므로 관련이있을 수 있습니다.
  • 시스템 환경 설정 : 보안 및 개인 정보 : 개인 정보 : 접근성으로 이동하여 몇 가지 앱 (synergy_server 및 Logitech 게임 소프트웨어)을 활성화하십시오. 이 변경 이전에는 시너지 효과가있는 다른 컴퓨터를 제어하거나 G11에서 매크로를 사용할 수 없었습니다. 나는 이것이 당신을위한 직접적인 연결인지 의심하지만 접근성 옵션은 새로운 것이며 귀하의 다른 응용 프로그램에 적용될 수 있습니다.

0

.sql파일에서 작업하는 경우vim언급하지 않은 도움이 될 수 있습니다. 나는 다른 날에 이것을 처리했습니다.

파일에서 ~/.vimrc

let g:omni_sql_no_default_maps = 1

이 특정 문제는 여기에서 논의 됩니다

.sql파일 에이 문제가 발생하지 않으면 vim사과드립니다 vim. 문제가 발생할 때 내 매핑을 확인하는 것이 유일한 생각입니다 .

:map Ctrl V → 화살표를 사용할 수 없게되면 해당 명령을 수행하고 매핑이 사라 졌는지 확인하십시오. 만약 그렇다면, 이것은 파기 시작할 곳을 제공합니다.


0

SSH 세션 에서이 문제가 있었고 로그 아웃 한 다음 다시 로그인하여 해결했습니다.

exit
ssh ...

무게를 주셔서 감사합니다. 선택한 답변은 일관되게 나를 위해 일했습니다. 사용해 보셨습니까?
svidgen

예, 수락 된 솔루션이 Ubuntu 18에서 작동하지 않았습니다. vim (동일한 ssh 세션에서)을 제거하고 다시 설치했으며 주사위도 없습니다. 로그 아웃 한 후 다시 복원 된 화살표 기능 만 있습니다.
duhaime

0

Windows에서 "시스템 환경 변수"를 사용할 때이 문제가 발생 TERM했습니다 xterm-256color. vim변수를 다시 삭제하면 문제가 사라지고 정상으로 돌아 왔습니다.

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