왜 cmd-r이 Mac에서 Vim을 망칠까요? 실제로 무엇을하려고합니까?


19

나는 웹 개발자이기 때문에 끊임없이 이것을 뛰어 넘습니다 .'cmd-r '은 화살표 키가 모든 모드에서 작동하지 못하게하는 부작용이 있지만 그 목적이 아니며 상상할 수 없었습니다. 실제로해야 할 일에 관한 문서.

편집 : 분명히 이것은 실제로 Mac 터미널 명령 인 '재설정 보내기'이므로 이제는 "재설정 재설정 명령의 목적은 무엇입니까?"라는 질문입니다. vim 문서에서 찾을 수없는 이유를 설명합니다.

답변:


16

이러한 성가심을 피하기 위해 iTerm 키 매핑에서 Command-R을 "무시"로 다시 매핑합니다.

여기에 이미지 설명을 입력하십시오


감사합니다. 이것은 매우 성가시다.
ThinkingInBits

10

이것은 화면을 사용하지 않을 때도 발생하며 vim을 실행하는 터미널을 지우면 정상으로 돌아갈 수 있음을 알았습니다 (또한 tmux로 테스트했지만 화면은 아닙니다).

:!clear

6

이 질문에 대한 답변은 다음과 같습니다. OSX에서 화면을 실행할 때 command + r이 모든 화면에서 vim의 화살표 키를 엉망으로 만듭니다.

복사 한 답변 :

좋은 Vim 옹호자로서, 나는 hjkl을 커서 키로 사용하는 법을 배우게 될 것이라고 생각합니다. 도중에 문제를 탐색하면서 실제 화살표 키 대신 hjkl을 사용하여 테스트하고 있음을 알기 전까지는 문제가 스스로 해결되었다고 생각했습니다.

어쨌든, 이제 진정한 대답을 얻으십시오.

모든 화면을 종료하고 다시 시작하는 대신 터미널 사이를 이동할 수있는 화면 기능을 활용할 수 있습니다. 터미널에서 화면을 분리하려면 CTRL + A CTRL + D를 누른 다음 screen -D -R을 실행하여 다시 연결하십시오. 화살표 키가 다시 작동해야합니다.

화면이 아닌 Vim에있는 경우 CTRL + Z를 입력하고 동일한 효과를 위해 fg를 입력 할 수 있습니다.

Vim에서 커서 키 문제를 해결할 수도 있지만 재설정으로 인해 다른 터미널 옵션이 변경되었을 수 있으므로 다른 임의의 디스플레이 / 키보드 문제가 발생하지 않도록 위에서 설명한대로 수행하는 것이 더 안전합니다. 어쨌든 리매핑을 원한다면 다음과 같습니다.

map <Esc>[A <Up>
map <Esc>[B <Down>
map <Esc>[C <Right>
map <Esc>[D <Left>

거친 세부 사항 :

Vim과 screen은 모두 ncurses 라이브러리를 사용하여 터미널을 관리합니다. VT100 호환 터미널을 제어 할 때 ncurses가 수행하는 작업 중 하나는 화살표 키를 "응용 프로그램 모드"로 전환하여 방출하는 코드를 변경하는 것입니다. 예를 들어, 위쪽 화살표 키는 Esc [A에서 Esc O A로 변경됩니다.이를 위해 내 보낸 VT100 제어 코드는 Esc [? 1 시간 Command + R이 보낸 터미널 재설정 명령은 커서 키를 기본값으로 재설정합니다.

화면을 분리하고 다시 연결하면 ncurses가 터미널 제어를 다시 수행하게되므로 원하는 모든 설정을 다시 적용하므로 물건을 정상적으로 복원 할 수있는 가장 휴대하기 쉽고 안정적인 방법 일 것입니다.

VT100 제어 코드 : http://www.handshake.de/infobase/dfue/prgrmmer/t322.htm


예, 게시 한 후에 "Command + R이 보낸 터미널 재설정 명령이 커서 키를 기본값으로 재설정합니다."라는 메시지가 여전히 표시되는 것을 알았습니다. 나는이 명령의 의도 된 용도가 무엇인지 아는 데 정직하게 흥미 롭습니다.
GlyphGryph
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.