OSX의 Vim : 터미널에서 열린 vim 파일을 통해 page-up / page-down / EOL로 이동하는 방법은 무엇입니까?


28

주로 VIM을 사용한 퍼티에서는 다음을 수행 할 수 있습니다.

  • Page Up / Down : 기본 Page Up / Down 키를 사용합니다. Mac에서 대안은 터미널에서 작동하지 않는 Fn + Up / Down입니다 (vim 파일 내부에서는 스크롤하지 않지만 터미널 버퍼는 스크롤 함)
  • 마찬가지로 Fn + 오른쪽 / 왼쪽 키는 줄의 시작 / 끝으로 이동하지 않습니다.

Mac OS X에서이 기능을 어떻게 에뮬레이트합니까?


"Fn + 오른쪽 / 왼쪽"을 "홈 / 끝"으로 바꾸거나 기능을 보강 한 경우 Fn 조합이하는 일을 통해 질문을 명확하게 설명 할 수 있습니다.
Chris 페이지

답변:


48

이것은 특별히 Mac 질문이 아닙니다. 이것은 실제로 vi 질문입니다.

탐색 모드에서 ctrl-f는 페이지를 아래로 스크롤하고 ctrl-b는 페이지를 위로 스크롤합니다 ( "F"또는 "B"ack 생각). Ctrl-d는 페이지의 절반을 아래로 스크롤하고 ctrl-u는 페이지의 절반을 스크롤합니다.

^는 줄의 시작 부분으로 가고 $는 끝 부분으로 이동합니다. 나는 알고 있지만, 그에 대한 역사적인 이유가 있습니다.

여기 에 vi 컨트롤에 대한 좋은 치트 시트가 있습니다. vi는 다소 간결하지만, 일단 내부화하면 세계에서 가장 빠르고 매끄러운 텍스트 편집기입니다.


1
"이것은 특별히 Mac 질문이 아닙니다. 이것은 실제로 vi 질문입니다." 그것은 주로 Mac OS X 터미널 응용 프로그램의 키 맵을 설정하는 방법에 관한 것이지만, 줄의 시작 / 끝에 관한 질문의 두 번째 부분은 이미 터미널에 매핑되어 있으며 가능한 해결책 중 하나는 vi의 맵을 편집하는 것입니다 이해하다. 또는 터미널 키보드 맵을 편집 할 수 있습니다.
Chris 페이지

16

터미널의 기본 설정은지도 Shift- Page UpShift- Page Down스크롤 (정력과 이맥스 같은 프로그램에게 문자 시퀀스 ESC [ 5 ~ESC [ 6 ~).

이러한 키가 Shift수정 자 없이 문자 시퀀스를 터미널에 보내 려면 키보드 맵을 사용자 정의 할 수 있습니다.

터미널> 기본 설정> 설정> [프로필]> 키보드

이 작업을 수행하는 경우 Shift, 이동 및 이동되지 않은 키에 대한 맵핑을 교체하여 대체 작동을 계속 사용할 수 있도록 이러한 키 수정 자의 의미를 바꾸는 것이 좋습니다 . 또한 터미널 키보드 맵과 상관없이 사용할 수 있도록 수정자를 사용하는 스크롤 명령이 포함 된 보기 메뉴를 참조하십시오 Command.

마찬가지로 Shift- HomeShift- End는 현재 줄의 시작 / 끝으로 이동하도록 매핑됩니다 ( ESC [ HESC [ F). 이 시퀀스는 Bash에 의해 이해되지만 Vim을 이해하기 위해 Vim을 사용자 지정하거나 Vim에 대한 매핑을 편집해야 할 수도 있습니다. 빔, 이맥스, 그리고 몇몇 다른 프로그램은 홈 / 엔드 키를 보내 "응용 프로그램 커서 모드"로 터미널을 넣어 이스케이프 시퀀스를 전송 ESC O H하고 ESC O F, 그러나 (10.9 현재) 터미널이 동작을 구현하지 않습니다. 따라서 키보드 맵을 변경하여 다른 코드를 대신 보낼 수도 있습니다 (Bash도 이해합니다). (다른 OS들에 Home그리고 End단말이 그들을 제공하므로, 라인의 시작 / 종료에 사용되는 Shift대칭 개질제).

Control- Left Arrow그리고는 Control- Right Arrow또한이 사람에서 왔어요 다른가에 매핑 불구하고, "시작 이동 / 라인의 끝"기본적으로 시퀀스에 매핑됩니다 Shift- HomeShift- End. 대신 Emacs 및 Bash 호환 시퀀스 ESC [ 5 D및에 매핑됩니다 ESC [ 5 C. 이것들이 Vim에 의해 사용되고 있지 않다고 가정하면, 가장 간단한 방법은 ~ / .vimrc를 사용하여 Vim이 이것을 받아들이도록 사용자 정의하는 것입니다.

참고 맥 OS의 더 최근의 버전, 터미널은 더 이상 명시 적 매핑이 없다고 HomeEnd기본적으로 환경 설정에서입니다. 대신, 대체 화면이 활성화 될 때 (예 : emacs, vim, screen 또는 tmux와 같은 전체 화면 응용 프로그램을 사용하는 경우) 키가 자동으로 시작 / 끝 라인에 매핑되는 동적 동작이 있습니다. 기본 화면에서 쉘과 같은 행 지향 프로그램을 사용하는 경우 기본적으로 터미널보기를 계속 스크롤합니다. Shift수정은 동작을 반전시킵니다.


@MarkHu 마지막 단락에서 그 내용을 다뤘습니다.
Chris 페이지

마지막 단락에서 부분적으로 다루었 듯이 다른 버전의 MacOS에서는 기본값이 다를 수 있습니다. 10.13.6의 경우 \033[5~PageDown / Up 에 (및 ... 6.) 을 추가해야했습니다 .
MarkHu

2

가장 쉽고 가장 좋은 솔루션은 n+입니다 . 여기서 n줄 수는 줄이며 아래쪽 키입니다.

나는 정기적으로 12+ 22+를한다 .


1

Mac에서 지원하지 않는 삽입 모드 (Windows에서 사용하고 Linux에서 사용)에서 줄의 시작과 끝으로 안내하는 Home / End에 익숙했습니다. 원격 시스템에서 vim을 사용할 때 쉽게 할 수 없기 때문에 이것은 특히 성가신 일입니다. 고통스러운 시행 착오 끝에 .vimrc같은 일을하는 줄을 생각해 내고 결국 비슷한 해결책을 찾은 사람을 찾았습니다.

https://coderwall.com/p/fd_bea

즐겨.

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