Vim에서 Ctrl + 화살표를 수정하는 방법?


26

Putty -> Suse box -> vim 7.2편집을 위해 콤보를 사용 하고 Ctrl + 화살표 콤보를 특정 작업에 다시 매핑하려고합니다. 그러나 어떤 이유로 Vim은 바로 가기를 무시하고 삽입 모드로 들어가고 "C"(오른쪽)의 문자 "D"(왼쪽)를 삽입합니다.

키보드 / 터미널 구성의 어느 부분을 비난하고 수정하는 방법은 무엇입니까?


PuTTY는 컨트롤 화살표에 대해 유용하게 구별되는 시퀀스를 보내지 않습니다. 제안 된 답변 중 어느 것도 맞지 않거나 유용하지 않습니다.
Thomas Dickey

답변:


27

삽입 모드에서 + , + 화살표를 Ctrl입력 하여 터미널이 + 화살표에 어떤 이스케이프 시퀀스를 전송하는지 정확히 파악 하십시오. 이렇게하면 선행 문자 ( vim으로 표시)가 문자 그대로 삽입 되고 나머지 이스케이프 시퀀스가 ​​이어집니다. 그런 다음 vim에게 이러한 이스케이프 시퀀스에 대해 다음과 같이 알려주십시오.CtrlVCtrlESC^[

map <ESC>[5D <C-Left>
map <ESC>[5C <C-Right>
map! <ESC>[5D <C-Left>
map! <ESC>[5C <C-Right>

Putty에는 불편한 Application Cursor Keys 모드에 대한 기본 설정이 있습니다 (이유는 잊어 버렸습니다).이 설정을 먼저 전환해야 할 수도 있습니다.

이스케이프 시퀀스는 터미널마다 다르지만 충돌 (즉, 다른 터미널의 다른 키에 해당하는 이스케이프 시퀀스)은 드물기 때문에 특정 터미널 유형에만 매핑을 적용 할 필요가 없습니다.


어떤 이스케이프 시퀀스가 ​​전송되는지 어떻게 알 수 있습니까?
Alex B

@ 알렉스 : 내 설명을 명확하게하려고 노력했지만 여전히 내 첫 문장을 이해하지 못하면 불평하십시오.
Gilles 'SO- 악마 그만'

당신은 또한 실행 od -a하거나 od -c팔각을 파는 경우 문제의 키를 입력 할 수 있습니다 . 예를 보려면 내 답변에서 "추가"를 참조하십시오.
msw

이 질문에 너무 늦게 돌아와서 미안하지만, PuTTY 완전히 꺼도 애플리케이션 커서 키를 터미널에 여전히 보낸다는 것을 알았습니다 . 나는 그것을 없애기 위해 다른 것을 조정 해야하는 것을 잃어 버렸습니다.
Alex B

@ 알렉스 : 당신은 그것을 멀리 할 필요가 없습니다, 당신은 그들에 대해 응용 프로그램을 말할 수 있습니다 (내가 저항이 가장 적은 것으로 밝혀졌습니다). 또는 mintty + Cygwin ssh와 같은 대안 중 하나로 PuTTY를 대체 할 수 있습니다 (그러나이 사이트에서는 주제가 아닙니다).
Gilles 'SO- 악마 그만해'

7

가장 좋은 방법은 PuTTY의 응용 프로그램 커서 키 모드 구성 을 보는 것입니다 .

기본 시퀀스 ESC는 접두사로 전송 된 [다음 Append 또는 Change 또는 삽입 모드로 전환되는 다른 항목이 이어집니다 .

Gilles 팔로 잉 팔로우

^ V 이스케이프의 약간 더 명확한 버전은 od (1)로 볼 수 있습니다. 여기 내 터미널에서 ^ Up, ^ Down, ^ Right, ^ Left를 입력합니다.

$ od -a
0000000 esc   [   1   ;   5   A esc   [   1   ;   5   B esc   [   1   ;
0000020   5   C esc   [   1   ;   5   D

+를 ^[[1;5A누르면 터미널이 전송 됩니다.Ctrl


응용 프로그램 커서 키 모드를 해제해도 도움이되지 않는 것 같습니다.
Alex B


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