OS X 터미널에서 단어 단위로 커서를 이동하는 방법


762

나는 조합 알고 Ctrl+는 A현재 명령의 시작 부분으로 이동하고, Ctrl+ E끝으로 이동합니다.

그러나 Cocoa 응용 프로그램에서 Alt+ / 와 같이 단어별로 단어를 건너 뛸 수있는 방법 이 있습니까?


2
어떤 쉘을 사용하고 있습니까? 세게 때리다?
Sargun Dhillon

4
iTerm2는 내장 터미널보다 훨씬 좋습니다. 키보드를 사용자 정의하는 방법에 대한 지침을 아래에 게시했습니다 :)
cwd

21
ALT바로 가기 최신의 OS X 버전의 터미널에 추가되었습니다.
Mosty Mostacho

7
이것은 내 의견으로는 주제가 아니며 Bash 셸은 관련 프로그래밍 환경이며 대부분의 인기있는 Linux CLI 앱에서 readline 바인딩이 널리 퍼져 있습니다. 또한 지역 사회가 말한 공감의 수를 살펴보십시오.
GL2014

11
다시 열기 투표, OS X 터미널 은 프로그래밍 도구로 매우 중요합니다.
djechlin

답변:


566

상자에서 상당히 기괴한 Esc+ F를 사용하여 다음 단어 의 시작으로 이동 하고 Esc+ B를 사용하여 현재 단어의 시작으로 이동할 수 있습니다.


47
명령을 다시 실행하기 위해 두 키를 다시 누르는 것은 불편했습니다. 그놈 터미널과 비교할 때 Mac OSX 터미널 에서이 작업을 수행하는 것은 꽤 불충분합니다.
Phương Nguyễn

244
터미널> 환경 설정> 설정> [프로필]> 키보드 에서 "옵션을 메타 키로 사용"을 활성화 할 수 있습니다 . 그런 다음 Esc를 수동으로 직접 입력 할 필요가 없습니다.
Chris 페이지

7
또한 줄의 끝에서 Esc+ 를 누르 F거나 줄의 시작에서 다른 키 콤보를 입력하면 대신 문자가 삽입됩니다. 성가신!
Noldorin

10
"기괴한": "F"와 "B"는 "앞으로"와 "뒤로"를 나타냅니다. Control-F는 커서를 한 문자 앞으로 이동하고 Control-B는 커서를 한 자리 뒤로 이동합니다. 메타 수정 자 (또는 ESC)를 사용한다는 것은 "단어로 이동"을 의미합니다. 이맥스 호환 바인딩입니다. bash를 사용하는 경우 vi 호환 바인딩을 사용하는 옵션이 있거나으로 완전히 사용자 지정할 수 있습니다 ~/.inputrc.
Chris 페이지

5
안타깝게도 옵션을 메타로 사용하는 것은 ~와 | (프랑스어 키보드처럼).
Eric O Lebigot

417

Mac OS X의 경우 다음 키보드 단축키가 기본적으로 작동합니다. 터미널 탭의 키보드 탭 아래에있는 옵션 키가 메타 처럼 작동하도록 해야합니다.

  • alt (⌥)+ F점프 F의 단어로 orward을
  • alt (⌥)+ 한 단어로 B를 ackward B로 점프

간단한 텍스트 탐색을위한 기본 emacs 키 바인딩이 bash 쉘에서 작동하는 것으로 나타났습니다. 당신이 사용할 수있는

  • alt (⌥)D현재 커서 위치에서 시작하는 단어를 삭제하려면 +
  • ctrl+ A줄의 시작으로 점프
  • ctrl+ E줄의 끝으로 점프
  • ctrlK커서 위치에서 시작하여 줄을 죽이려면 +
  • ctrl+ Ykill 버퍼에서 텍스트를 붙여 넣기
  • ctrl+ R기록에서 과거에 입력 한 명령을 역으로 검색
  • ctrl+ S검색을 전달하려면 (zsh에서는 작동하지만 bash는 작동하지 않음)
  • ctrl+ F한 문자 씩 앞으로 이동
  • ctrl+ B한 문자 씩 뒤로 이동
  • ctrl+ W커서 위치에서 단어를 뒤로 제거

1
감사! 나는 그것이 왜 즉시 작동하지 않는지 궁금해했습니다. 그것이 바로 내가 필요한 것입니다.
Flov

11
다음과 같이 iterm2에서 메타를 변경할 수 있습니다. 환경 설정-> 프로파일-> 키-> 왼쪽 옵션 키는 +ESC다음 과 같이 작동하며 옵션 f / b를 사용하여 단어를 앞뒤로 이동할 수 있습니다.
Alan Dong

5
[ Ctrl + W ]-커서 위치에서 단어를 뒤로 제거
YemSalat

[ctrl + u] -전체 항목 삭제
Cornelius

286

당신이 그것을 할 수있는 방법은 다음과 같습니다

기본적으로 터미널에는 단어별로 이동 (왼쪽 및 오른쪽)하는 바로 가기가 있습니다.

  • esc+ B(왼쪽)
  • esc+ F(오른쪽)

alt+ 를 구성 하고 해당 시퀀스를 생성 할 수 있습니다 .

  • 터미널 환경 설정 열기 ( cmd+ ,);
  • 설정 탭에서 키보드를 선택하고 키보드가있는 ⌥ ←경우 두 번 클릭 하거나없는 경우 추가하십시오.
  • 수정자를 원하는대로 설정하고 상자에 esc+를 입력 B하여 텍스트를 생성합니다 \033b(이 텍스트를 수동으로 입력 할 수 없음).
  • 오른쪽 단어에 반복 ( esc+ F\033f)

또는 textmate에서이 블로그 게시물을 참조 할 수 있습니다.

http://blog.macromates.com/2006/word-movement-in-terminal/


7
MacOSX 10 이상 및 iTerm 사용자의 경우 : 전체 환경 설정에서 키 단축키를 지정하거나 프로파일 키 조합으로 지정하십시오. 반드시 선택합니다 드롭 다운에 "순서를 탈출 보내기"를 선택하고 입력 단지 B에 대해 다시F에 대한 기대Esc+필드
거스

내가 이전에 생각하지 못했던 위대한 니모닉에 +1. 이러한 시퀀스를 구성 하고 생성 하기 때문에 지금은 이것을 유감스럽게도 기억 하지 못할 것입니다.alt leftalt right
Arc676

키 매핑을 터미널에 추가하면 Esc-B 대신 '^ [B'에 바인딩됩니다.
Andrea Bergonzo

164

iTerm2로 전환 하십시오 . 평범한 오래된 터미널보다 무료이며 훨씬 좋습니다. 또한 키보드 단축키와 같이 사용자 정의를위한 훨씬 더 많은 옵션이 있습니다.

또한 cmd1-9를 사용 하여 탭 사이를 전환 할 수 있음을 좋아 합니다. 그것을 시도하고 당신은 일반 터미널로 돌아 가지 않을 것입니다 :)

iterm2에서 사용자 정의 키보드 환경 설정을 설정하는 방법

  • iTerm2 설치
  • 시작한 다음 환경 설정 창으로 이동하십시오.
  • 키보드 프로파일 탭을 선택하십시오
  • 프로필을 새로운 것으로 복사 한 다음 ^+ Right/ 와 같은 화살표 키 바로 가기를 삭제 Left하거나 백업에 신경 쓰지 않으면 기본 프로필에서 삭제하십시오.
  • 그런 다음 수정 된 프로필이 선택되어 있는지 확인하십시오 (별표 표시).

그림 1.png

  • 이제 키보드 탭을 선택하십시오 (맨 위 줄)

iTerm 2

  • 더하기 버튼을 클릭하여 새로운 키보드 단축키를 추가하십시오
  • 첫 번째 상자에 CMD+를 입력하십시오Left arrow
  • 두 번째 상자에서 "이스케이프 코드 보내기"를 선택하십시오.
  • 세 번째 상자에 문자를 입력하십시오 B

그림 2.png

  • 원하는 키 조합으로 반복하십시오. escape+ B한 단어를 왼쪽으로 이동 하고 escape+ f한 단어를 오른쪽으로 이동합니다.
  • 당신은 또한 설정하실 수 있습니다 cmd+ d와 커서 앞에있는 단어를 삭제 escape+d

나는 종종 화살표 키로 잘못된 버튼 ( cmd/ control/ alt)을 누르기 때문에 그 버튼들과 화살표 키 조합이 모두 앞뒤 단어로 점프하도록 설정되어 있지만 가장 적합한 것을하십시오.


4
상관없이 내가 뭘, 내가 입력 할 수 없습니다 Ctrl + Arrow Left또는 Right- UpDown작동합니다 / 함께 기본적으로 새 프로파일 세트없이 시도
토비

4
솔루션 : MacOS 시스템 환경 설정-> 키보드에서 미션 컨트롤 단축키를 비활성화해야했습니다.
Tobi

위의 명령은 더 이상 iTerm2에서 작동하지 않습니다. iTerm2 Build 3.3.4에 대한 아래 답변을 참조하십시오.
잠깐

150

실제로 훨씬 더 나은 접근 방식이 있습니다. 홀드 option( alt일부 키보드에)하고 Enter 키를 눌러 화살표 키를 왼쪽이나 단어로 이동 맞아. 그렇게 간단합니다.

option
option

또한 ctrle줄의 끝으로 ctrla당신을 데려다 줄 것입니다.


2
때로는 특정 경우에 작동하지 않습니다. 나에게 Terminal.app을 열었을 때 괜찮 았지만 IntelliJ의 경우 인쇄 [D하고 [C. 이 문제를 해결하려면 bind '"[D": backward-word'bind '"[C": forward-word'에 추가하십시오 .bashrc.
Jamie Counsell 15

@JamieCounsell 나는 바인딩 일을 추가 .bashrc했지만 작동하지 않았다. (나는 RubyMine을 사용한다)
张艳军

@ 张艳军.bashrc터미널을 부팅 할 때 RubyMine이 읽는지 확실하지 않습니다 . 시도 echo "here"하고 새 터미널을 열 때 메시지가 표시되는지 확인합니다. 또한 source ~/.bashrc새 파일을 읽으려면 터미널을 닫았다가 다시 열거 나 실행 해야합니다.
Jamie Counsell

79

I이 Alt+ / 일 : 개방 환경 설정»설정»키보드 , 대한 항목 설정 옵션 커서 왼쪽\ 033b : 쉘 문자열을 전송 하고, 세트 옵션 커서를 오른쪽쉘 문자열을 보내 : \ 033f를 . 다른 Control 키 조합에도 사용할 수 있습니다.


20
\ 033b를 얻으려면 실제로 Esc를 누른 다음 b를 눌러야합니다.
Matthew Schinckel

7
Snow Leopard를 사용 중이며를 사용하도록 설정 한 경우에만 작동합니다 Enable option as meta key. 그건 그렇고, 그것은 매우 시원합니다. 열쇠는 Esc + B 또는 Esc + F와 비교하여 훨씬 편리하게 도달 할 수 있습니다
Phương Nguyễn

2
curisoity에서 정확히 무슨 일이 일어나고 있습니까? OSX에서이 코드가 다른 이유는 무엇입니까? 다른 코드를 어떻게 찾을 수 있습니까?
Koobz

내 Mac에서 환경 설정> 프로필> 키 왼쪽 옵션 키 + Ecs로 설정
Arun

38

실제로 사용하는 쉘에 따라 다르지만 대부분의 쉘에는 비슷한 바인딩이 있습니다. 참조하는 바인딩 (예 : Ctrl+ ACtrl+ E)은 다른 많은 프로그램에서 찾을 수있는 바인딩이며 연령대에 사용되며 BTW는 대부분의 UI 앱에서도 작동합니다.

Bash에 대한 기본 바인딩은 다음과 같습니다.

가장 중요한 배쉬 키보드 단축키

또한 사용자 정의 할 수 있습니다. 파일 이름을 원하는대로 만들어야합니다. 이름을 mine .bash_key_bindings로 지정하고 내 홈 디렉토리에 넣습니다. 여기에서 일반적인 bash 옵션을 설정하고 키 바인딩을 설정할 수도 있습니다. 파일이 적용되도록하려면 시작시 bash가 읽은 ".bashrc" 라는 파일을 수정하고 (존재하지 않는 경우 작성해야 함) 다음을 호출해야합니다.

bind -f ~/.bash_key_bindings

~는 위에서 언급 한 것처럼 bash의 홈 디렉토리를 의미하며 원하는대로 파일 이름을 지정하고 바인딩 할 올바른 경로 + 이름을 제공하는 한 원하는 곳에 배치 할 수도 있습니다.

내 .bash_key_bindings 파일의 일부를 보여 드리겠습니다.

set meta-flag on
set input-meta on
set output-meta on
set convert-meta off
set show-all-if-ambiguous on
set bell-style none
set print-completions-horizontally off

이것들은 몇 가지 옵션을 설정합니다 (예 : 종소리 비활성화; 이것은 bash 웹 페이지에서 모두 볼 수 있습니다).

"A": self-insert
"B": self-insert
"C": self-insert
"D": self-insert
"E": self-insert
"F": self-insert
"G": self-insert
"H": self-insert
"I": self-insert
"J": self-insert

이것들은 문자만으로 아무 것도하지 않고 문자가 "타이핑"되도록합니다 (쉘에 자신을 삽입합니다).

"\C-dW": kill-word
"\C-dL": kill-line
"\C-dw": backward-kill-word
"\C-dl": backward-kill-line
"\C-da": kill-line

이것은 매우 흥미 롭습니다. Ctrl+ D만 누르면 (삭제를 위해 d를 선택) 아무 일도 일어나지 않습니다. 그러나 소문자 w를 입력하면 커서 왼쪽의 단어가 삭제됩니다. 그러나 대문자를 입력하면 커서 오른쪽의 단어가 죽습니다. 커서에서 시작하는 전체 줄에 대해 l과 L도 같습니다. "a"를 입력하면 전체 줄이 실제로 삭제됩니다 (커서 앞뒤에있는 모든 것).

나는에 한 단어 앞으로 점프 여겼다 Ctrl+ F에 후진 한 단어 Ctrl+B

"\C-f": forward-word
"\C-b": backward-word

보시다시피, 바로 가기를 만들면 즉시 동작으로 이어 지거나 문자 시퀀스를 시작한 다음 하나 이상의 문자를 입력하여 동작을 수행하도록 할 수 있습니다. 위의 예에 더 나와 있습니다.

따라서 기본 바인딩에 만족하지 않으면 원하는대로 자유롭게 바인딩을 사용자 정의하십시오. 여기의 bash는 설명서 링크 자세한 내용은.


어떻게 command키 코드는? 귀하의 예에서 controlis \C입니다 command.
Paschalis

기본적으로 Ctrl + A를 cmd + left에 매핑하고 싶습니다 (줄의 시작 부분으로 이동)
Paschalis

1
@Paschalis MacOS X에서 명령 키 Meta는 bash ( \M) 에 매핑되며 cmd + left는입니다 \M-\e[D. 그러나 cmd + ...를 아무것도 매핑 할 수 없으며 모든 명령 바로 가기는 터미널 응용 프로그램 자체 (쉘로 전달되지 않음)에 의해 처리 (따라서 삼킨) 및 cmd + 왼쪽은 "이전 창"에 매핑됩니다 터미널 창이 열립니다. 터미널 앱으로는 불가능합니다.
Mecki

18

자연스러운 텍스트 편집 사전 설정을 사용하십시오 !

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

본질적으로 다른 키 시퀀스 중에서 Option + LeftArrow를 ^[b시퀀스에 바인딩 하고 Option + RightArrow를^[f

이것은 psql 터미널뿐만 아니라 fish 및 bash에서도 작동합니다.


이것은 키에 대한 좋은 오래된 매핑을 설정하는 가장 효율적인 방법입니다. 감사!
fedesismo 2016 년

다른 사람이 내가했던 것처럼 혼란 스러울 경우이 사전 설정은 최상위 탭 이 아니라 프로필 키 하위 탭 에서만 사용할 수 있습니다 .
벤 알브레히트

15

Vim 사용자라면 bash의 vim 모드를 사용해 볼 수 있습니다. 이것을 실행하거나~/.bashrc 파일에 .

set -o vi

기본적으로 삽입 모드에 있습니다. 일반 모드 Vim에서와 마찬가지로 이스케이프 처리하고 이동할 수 있으므로 단어 별 이동은 w또는 b이며 일반적인 이동 키도 작동 합니다.


15

Use option as meta key환경 설정의 키보드 탭 을 확인하면 각각 앞뒤 단어 및 ⌥F( Alt+ F) 및 ⌥B[ Alt+ B)에 대한 기본 emacs 스타일 명령이 표시 됩니다.

Bash에서 Z-Shell을 읽는 것이 좋습니다 . bash / zsh 실력을 높이고 싶다면!


1
그렇습니다. 그러나 문제는 Option-7, Option-8 및 Option-9에있는 중괄호 ([] {} |)를 입력하려는 경우입니다. 옵션은 이제 메타이므로 메타 -7, 메타 -8로 끝납니다 ... 어떤 아이디어?
Martin Wickman

12

Mac OS X Lion 10.7부터 터미널 은 기본적으로 Option- Left/Right ArrowEsc- 매핑 b/f되므로이 emacs 호환 키 바인딩을 사용하는 bash 및 기타 프로그램에 내장되어 있습니다.



8

Bash에서 이들은 Esc- BEsc-에 바인딩됩니다 F. Bash에는 더 많은 단축키가 있습니다. bind -p그들이 무엇을 볼 수 있는 결과를 살펴보십시오 .


4

아래 iterm2환경 설정> 프로필> 키 , 당신은을 클릭 +아래 키 매핑 하고 새로운 바로 가기를 기록합니다. 들어 액션 , 선택 Send Escape Sequence및 입력 b또는 f뒤로 및 앞으로 각각.

( Ctrl+ )에 대해 하나를 기록하려고 할 때 키보드 바로 가기 필드에서 화살표가 나타나지 않았다는 것을 알았 습니다. iterm2의 기본 단축키보다 우선하기 때문에 기본 Mac의 시스템 환경 설정> 키보드> 단축키> 미션 컨트롤 단축키 를 비활성화 해야 작동합니다. 표준 터미널 앱에서도 마찬가지입니다.

키보드 시스템 환경 설정


1

iTerm2 Build 3.3.4 사용자를위한 새로운 답변 :

1 단계 : (macOS X) 시스템 환경 설정> 키보드> 단축키 탭> 미션 컨트롤 선택 (왼쪽 패널)> "공간 왼쪽으로 이동"및 "공간 오른쪽으로 이동"이라고 표시된 바로 가기를 선택 취소하십시오.

2 단계 : (iTerm2 빌드 3.3.4) 환경 설정> 프로파일> 선택 * 기본값 (왼쪽 패널)> 키 탭> "⌥->"및 "⌥ <-"항목 모두 삭제> "왼쪽 옵션 (⌥) 키 설정 : "및"오른쪽 옵션 (⌥) 키 : "를 Esc +로

쉘 프로파일로 혼란스럽지 않고 열등한 masOS (기본) 터미널로 혼란스럽지 않고 어색한 Esc + F / B가 없으며 헹굼 및 반복적 의미가 없습니다.

거래 완료 !!!

동료 프로그래머 여러분,이 팁을 즐기십시오!


0

이전에 대답, 당신은 추가 할 수 있습니다 set -o vi귀하의 ~/.bashrc사용 vi/ vim키 바인딩, 그렇지 않으면 당신의 부분에 다음을 추가 할 수 있습니다 .bashrc로 이동하는 Ctrl및 화살표 키를 :

# bindings to move 1 word left/right with ctrl+left/right in terminal, just some apple stuff!
bind '"\e[5C": forward-word'
bind '"\e[5D": backward-word'
# bindings to move 1 word left/right with ctrl+left/right in iTerm2, just some apple stuff!
bind '"\e[1;5C": forward-word'
bind '"\e[1;5D": backward-word'

이러한 코드 줄의 효과를 시작하려면 source ~/.bashrc새 터미널 세션을 시작하거나 시작하십시오.

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