iTerm 2 : 키보드 단축키를 설정하여 줄의 시작 / 끝으로 건너 뛰는 방법?


395

Ctrl+ left/ right가 줄의 시작 / 끝으로 점프 함을 알 수 있습니다 . 이것을 Cmd+ left/ right arrow? 로 변경하는 방법

얻기 위하여 Alt+ left/ right arrow워드 점프 제대로 작동하기에 따라 이 문서를 .



1
: 당신이 너무 VIM에서 일을하는 바로 가기를 원하는 경우,이 대답을 참조 stackoverflow.com/a/9611698/991068
Razvan 보낸 고르

답변:


735

iTerm2에 다음 프로파일 바로 가기 키 추가

FOR  ACTION         SEND
⌘←  "SEND HEX CODE"      0x01 
⌘→  "SEND HEX CODE"      0x05
⌥←  "SEND ESC SEQ"  b
⌥→  "SEND ESC SEQ"  f

필요한 사람들을위한 비주얼은 다음과 같습니다.

iTerm 추가 키 비주얼


3
Command + Delete의 코드 / 시퀀스가 ​​무엇인지 알고 있습니까? (프롬프트 지우기)
Steven Lu

10
다른 곳에서 첫 번째 주석에 답했습니다. 기본적으로 16 진수 코드 0x15는 Ctrl + U를 제공하여 줄을 지 웁니다. 그러나 Tmux 사용을 방해하는 0x01 Ctrl + A를 찾고 있습니다. 따라서 대신 Home 키 (Mac 키보드의 Fn + Left와 동일한 기능)에 매핑하려고합니다.
Steven Lu

7
Home의 이스케이프 시퀀스는 [1 ~이고 End의 이스케이프 시퀀스는 [4 ~
Steven Lu

3
굉장한 매력처럼 작동합니다!
Juto

25
올바른 바인딩은 ⌘← "SEND ESC SEQ" OHHome 및 ⌘→ "SEND ESC SEQ" OFEnd에 해당합니다 (이는 대문자 'o'가 0이 아님). 이 시뮬레이트 실제로 가정 및 종료 키를 눌러, 등 bash는 이러한 의지 작업, 정력, 등
디모데 죤

433

iTerm2에서 단어와 줄의 시작 / 끝을 건너 뛰려면 아래 두 가지 솔루션 중 하나 를 선택 하십시오.

1. 간단한 솔루션 (권장)

  1. 환경 설정 열기
  2. "프로필"탭을 클릭하십시오
  3. 왼쪽 목록에서 프로필을 선택하고 (예 : "기본") "키"탭을 클릭하십시오.
  4. "사전 설정"다운 다운을 클릭하고 "자연 텍스트 편집"을 선택하십시오.

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


2. 수동으로 키 매핑 (고급)

위에서 언급 한 "자연 텍스트 편집"사전 설정을 사용하지 않으려면 필요한 키를 수동으로 매핑 할 수 있습니다.

  1. 환경 설정 열기
  2. "키"탭을 클릭하십시오
  3. [+]아이콘을 클릭하십시오

이제 다음 단축키를 추가 할 수 있습니다.

커서를 한 단어 왼쪽으로 이동

  • 키보드 단축키 : +
  • 작업 : 16 진수 코드 보내기
  • 암호: 0x1b 0x62

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

커서를 한 단어 오른쪽으로 이동

  • 키보드 조합 : +
  • 작업 : 16 진수 코드 보내기
  • 암호: 0x1b 0x66

커서를 줄의 시작으로 이동

  • 키보드 조합 : +
  • 작업 : 16 진수 코드 보내기
  • 암호: 0x01

커서를 줄의 끝으로 이동

  • 키보드 조합 : +
  • 작업 : 16 진수 코드 보내기
  • 암호: 0x05

단어 삭제

  • 키보드 조합 : +←Delete
  • 작업 : 16 진수 코드 보내기
  • 암호: 0x1b 0x08

줄 삭제

  • 키보드 조합 : +←Delete
  • 작업 : 16 진수 코드 보내기
  • 암호: 0x15

실행 취소

  • 키보드 조합 : +z
  • 작업 : 16 진수 코드 보내기
  • 암호: 0x1f

이전 바인딩제거하는 것을 잊지 마십시오 :

  • “프로필”탭을 엽니 다
  • 하위 탭 "키"를 클릭하십시오
  • 키 조합 + +에 대한 매핑 제거

2
이것은 iTerm2에서 나에게 잘 작동했으며 매우 쉽게 따라갈 수있었습니다. 감사합니다!
Natetronn

3
⌥ ←의 원래 바인딩이 무엇을 하는지를 명확히하는 것입니까? 나는 그것을 본다 Says send Hex Codes: 0x1b 0x1b 0x5b 0x44. 사람들이 이것을 제거하고 싶지 않은 경우 알아두면 좋을 것입니다.
aug

5
zsh를 사용하여 줄의 시작과 끝으로 이동하지 못했습니다. "Hex Code" "0x01"/ "0x05"를 사용하면 최상위 답변에서 제안한대로 저에게 효과적이었습니다.
Flip

2
줄의 시작과 끝으로 이동해도 나에게는 효과가 없었습니다. 최고 답변이 효과가있었습니다.
hisabimbola

3
iTerm에 방금로드 할 수있는 사전 설정으로 묶을 수있는 방법이 있습니까? 수동으로 입력하는 것이 성가신 것 같지만 이것은 나를 위해 일했고 훌륭했습니다. 고마워요!
aug

259

이미 좋은 답변이 많이 있지만, 쉘뿐만 아니라 가능한 한 기본 OSX 기능에 가장 가까운 것을 제공해야합니다. ZSH, Bash, node, python -i, iex 및 irb / pry 세션에서 작동한다는 것을 확인했습니다 (readline에는 rb-readline gem을 사용하지만 모두 작동해야 함).

열고 사용하여 ITerm 환경 설정 + ,와에 탐색 Profiles탭합니다 ( Keys탭이 사용되지만, 추가 프로필에 키 바인딩은 당신이 할 수 있도록 할 수 있습니다 프로필을 저장 여러 컴퓨터에 동기화) 및 keys하위 탭하고 다음을 입력 :

커서 왼쪽의 모든 문자를 삭제

+ ←Delete16 진수 코드 보내기 :

0x15더 호환되지만 기능은 때로는 커서 왼쪽의 문자가 아닌 전체 행을 삭제하는 것입니다. 나는 개인적으로 이것을 사용 ^U하고 커서 왼쪽의 물건 만 삭제 하기 위해 zsh bindkey를 덮어 씁니다 (아래 참조).

또는

0x18 0x7f호환성이 떨어지고 노드에서 작동하지 않으며 기본적으로 zsh에서는 작동하지 않습니다. zsh 를 수정하려면 아래를 참조하십시오 (bash / irb / pry는 양호해야 함) 작동 할 때 원하는 기능을 수행합니다.

커서 오른쪽의 모든 문자를 삭제

+ fn+ ←Delete또는 + Delete→16 진수 코드 보내기 :0x0b

커서 왼쪽에서 한 단어 삭제

+ ←Delete16 진수 코드 보내기 :

0x1b 0x08 엘릭서의 IEX 중단, 다른 곳에서는 잘 작동하는 것 같습니다

또는

0x17 모든 곳에서 작동하지만 IRB에서 정상적인 단어 나누기에서 멈추지 않고 리터럴 공간이 보일 때까지 삭제됩니다.

커서 오른쪽에서 한 단어 삭제

+ fn←Delete또는 + Delete→16 진수 코드 보내기 :0x1b 0x64

커서를 줄 앞으로 이동

+ 16 진수 코드 보내기 :0x01

줄 끝으로 커서 이동

+ 16 진수 코드 보내기 :0x05

커서를 한 단어 왼쪽으로 이동

+ 16 진수 코드 보내기 :0x1b 0x62

커서를 한 단어 오른쪽으로 이동

+ 16 진수 코드 보내기 :0x1b 0x66

실행 취소

+ z16 진수 코드 보내기 :0x1f

Redo는 일반적으로 bash, zsh 또는 readline에 바인딩되지 않으므로 사용하지 않는 16 진수 코드로 설정하여 zsh에서 수정할 수 있습니다

+ + Z또는 + y16 진수 코드 보내기 :0x18 0x1f

이제 작동하지 않는 문제를 해결하는 방법

zsh의 경우 다음을 실행하여 아직 작동하지 않는 + ←Delete+ + Z/ + y에 대한 바인딩을 설정할 수 있습니다 .

# changes hex 0x15 to delete everything to the left of the cursor,
# rather than the whole line
$ echo 'bindkey "^U" backward-kill-line' >> ~/.zshrc

# binds hex 0x18 0x7f with deleting everything to the left of the cursor
$ echo 'bindkey "^X\\x7f" backward-kill-line' >> ~/.zshrc

# adds redo
$ echo 'bindkey "^X^_" redo' >> ~/.zshrc

# reload your .zshrc for changes to take effect
$ source ~/.zshrc

bash 또는 readline에 redo를 추가하기위한 솔루션을 찾을 수 없으므로 누군가가 그 중 하나에 대한 솔루션을 알고 있다면 아래에 의견을 말하고 추가하려고 시도합니다.

키 시퀀스를 16 진으로 변환하는 방법에 대한 검색 테이블을 찾는 사람에게는 이 테이블이 매우 유용합니다.


2
정말 유용합니다. 많은 차이가 있습니다! 나는 어떤 사람들이 $앞에서 와 혼동 될 수 있음을 지적하고 싶습니다 echo(단지 제거 하시겠습니까?). 그 외에는 완벽합니다. 감사합니다.
edmundo

1
@Christophe 키 바인딩이 있어야하는 것처럼 보입니다. 16 진 값을 추가하는 중 실수가 발생했거나 하위 단어의 키 바인딩을 덮어 쓰고 있습니다. 실행 bindkey | grep "\^\[b"하면 설정된 후에 다른 항목이 덮어 쓰고 있는지 알 수 있습니다. 그것은 해야 에만 반환 #=> "^[b" backward-word. 덮어 쓰는 경우 덮어 쓰는 위치를 찾아서 제거해야합니다. 그것이 가능하지 않다면, 당신은 echo 'bindkey "^[b" backward-word' >> ~/.zshrc그것을 마지막 줄에 추가하고 .zshrciTerm을 다시 시작할 수 있습니다.
Travis

2
@Christophe keys는 iTerm 환경 설정 의 탭을 확인하여 + 무언가에 매핑되어 있는지 확인하십시오 . 그렇다면 제거하십시오. 릴리스 b를 빠르게 누른 esc다음을 눌러 올바르게 작동하는지 테스트 할 수 있습니다 b. 단어가 왼쪽으로 이동합니다. 또는 + 를 16 진수 0x1b 0x42 또는로 매핑 할 수 있습니다 0x1b 0x5b 0x31 0x3b 0x35 0x44. 나는 그 두 가지 모두 나를 위해 일한다는 것을 확인했다. 나는 당신이 당신의 탭이나 탭 에서 iTerm으로 + 덮어 썼다고 생각합니다 . profile keyskeys
트래비스

3
놀랄 만한! 여기서 Undo + Redo 바인딩에 대해 배웠습니다.
ecbrodie

3
이 작업을 수동으로 수행했는데 왜 그렇게하기 위해 프로필을 가져올 수 없는지 생각했습니다. 그런 다음 이 지침에 따라 GabLeRoux / iterm2-macos-dynamic-profile을 작성했습니다. 감사합니다 🍻
GabLeRoux

48

iterm2 에서 주요 환경 설정을 설정하려면 위에 나열된 학습서를 따르십시오 .

  1. 새로운 단축 키 만들기
  2. 조치로 "이스케이프 시퀀스 전송"을 선택하십시오.
  3. 그런 다음 아래 텍스트에서 cmd-left 를 설정 하십시오.
    • 입력 [H을위한 라인 시작
      OR
    • 입력 [F을위한 라인 끝

1
F는 내 iterm2 내에서 한 단어 만 점프합니다
Matthias

1
ITerm => 기본 설정 => 키
pfrank

이거 너무 좋아! 다른 솔루션은 나를 위해 작동하지 않았습니다. 나는 iterm2에서 ctrl + a와 ctrl + e를 사용할 수 없다는 것에 시간을 낭비했다. 그러나 나는 그것을 위해 물고기를 포기하고 싶지 않았습니다. 이것은 완전히 작동합니다 감사합니다!
FLY

다른 솔루션도 나에게 효과가 없었지만 이것은 효과가있었습니다.
브라함 스나이더

42

iTerm 3.0.12에서는 Natural Text Editing사전 설정으로 전환 할 수 있습니다 .

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

iTerm → 환경 설정 → 프로파일 → 키

경고 사전 설정이므로 이전에 바인딩 한 키를 무시할 수 있습니다. 따라서 사전 설정을 적용하기 전에 현재 키 바인딩을 저장하는 것이 좋습니다.


2
좀 더 정교하게 대답 해 주시겠습니까? 마찬가지로, 사전 설정에는 무엇이 포함되며 덮어 쓸 수 있습니까?
Carles Alcolea

답변 해주셔서 감사합니다. 또한 기본값으로 고정하지 않고 자연 텍스트 편집 "모드"로 프로파일을 토글 할 수있는 방식으로 사용자 정의 프로파일에 적용하는 것이 가장 좋습니다.
aug

29

iTerm2에서 줄의 끝 또는 줄의 시작으로 가고 싶은 사람을 빠르게 참조하려면 위의 링크 http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word- in-iterm.html은 iTerm2에서 다음과 같이 지적합니다.

  • Ctrl+ A, 줄의 시작 부분으로 이동
  • Ctrl+ E, 줄 끝으로 이동합니다.

이 답변이 왜 맨 위에 있지 않습니까?
Gangadhar JANNU

1
@ GangadharJannu : 완전히 동의합니다. 그것은 바로 간다. 상단에 있어야합니다.
Catbuilts

10

Travis 답변을 사용 했고 지침에 따라 가져올 수 있는 동적 프로필 을 만들었습니다 .

GabLeRoux / iterm2-macos- 동적 프로파일

지침은 readme에 있으며 수동으로 모두 추가하는 것보다 가져 오는 것이 훨씬 빠릅니다. 의견에 숨겨져 있기 때문에 @gooli의 요청에 따라 답변했습니다. 당신이 이것을 즐기기를 바랍니다


2
1 년 후 여기로 돌아와서 이것을 찾아서 너무 행복합니다!
elifiner

9

동일한 문제가 있지만 특히 iTerm 2와 함께 Zsh 셸을 사용하는 사람을 돕기 위해 Zsh /etc/inputrc올바르게 읽히지 않으므로 환경 설정을 통해 설정 한 키 바인딩을 이해하지 못하는 것으로 나타났습니다!

이 문제를 해결하려면 다음 .zshrc과 같은 키 바인딩을 파일 에 추가해야합니다 .

# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line

위의 예에서 "e"앞의 백 슬래시는 참고하십시오. 링크 된 기사에는 표시되지 않으므로 .zshrc바인딩을 추가 할 때 파일에 추가 하십시오 .


4

구식 emacs 바인딩은 여전히 ​​iterm2 및 os x 터미널에서 작동 할 수 있습니다.

환경 설정-> 프로파일-> 키 (프로파일의 하위 탭)

  • 세트 Left/Right option <kbd>⌥</kbd> key acts as +Esc(os x 터미널과 유사)

이것은 활성화해야 alt- falt- b단어 단어를 이동. (스틸 ctrl- actrl- e항상 정상적으로 작동)

meta이전 바인딩 으로 설정하면 일부 iterm2 바인딩을 사용할 수없는 동안 작동합니다.


2

여기에 설명 된 것처럼 간단한 단계로 수행 할 수 있습니다.

기본적으로 단어 점프 (옵션 + → 또는 ←) 및 단어 삭제 (옵션 + 백 스페이스)는 작동하지 않습니다. 이를 활성화하려면 "iTerm → 환경 설정 → 프로파일 → 키 → 사전 설정로드 ... → 자연 텍스트 편집 → 붐! 헤드 폭발"로 이동하십시오.


2

줄의 시작과 끝으로 이동하기 위해 작동하는 유일한 것은

⌘← "SEND ESC SEQ" OH-줄의 시작
⌘→ "SEND ESC SEQ" OF으로 이동- 줄 의 끝으로 이동


1

bind -p 쉘에 바운드 이스케이프 된 키 목록이 표시되어 더 많은 아이디어 / 검색어를 제공하는 데 도움이 될 수 있습니다.


5
bind -pzsh, csh tcsh, Bourne 쉘 (bash, sh)에서만 작동합니다 bindkey.
트래비스


0

나를 위해 다음 조합이 효과가있었습니다.
| Key Action Esc+ End result | |-----------------------------------------------------| | Send Escape Sequence a Send ^[ a | | Send Escape Sequence e Send ^[ e |

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