OS X 터미널에서 단어를 건너 뛰는 방법?


11

Mac OSX 터미널에 긴 명령을 작성했다고 가정 해 봅시다.

say "Hello, how are you? I am good thank you. How is it going with you? Fine, thanks"

이제 단어 Hello를 로 변경하고 싶습니다 Hi.

그렇게하려면, 지금 "커서"가 단어의 끝에 도달 할 때까지 왼쪽 키보드 키를 계속 누르고 있거나 Hello삭제해야합니다. 일반적인 'holding down option'기술은 대부분의 다른 OS X 응용 프로그램에서와 같이 작동하지 않습니다.

한 번에 단어를 건너 뛸 수있는 방법이 있습니까 (또는 커서를 가져 오는 다른 짧은 방법)?

답변:


19

커맨드 라인 편집은 터미널이 아닌 쉘의 기능입니다 . 아마도 쉘은 bash 이고 아마도 명령 행 편집 스타일은 "emacs"로 설정되어있을 것입니다.

다음은 편리한 Emacs 스타일 키 조합입니다.

  • Ca : beginning-of-line
  • Ce : end-of-line
  • MF : forward-word
  • Mb : backward-word
  • CD: delete-char
  • Md : kill-word(다음 '단어'삭제)
  • M-DEL : backward-kill-word

C- xControl+를 의미 x하므로 Ca는 Control+ a입니다.

M- xMeta+를 의미 x하지만 키보드에 메타 키가 없을 수 있습니다. 그래서 그 대신, 당신은 ESC 사용할 수있는 X (즉, Escape다음 x). 터미널 에는 키를 누른 채로 Option유지 하기 전에 ESC를 자동으로 보내도록 설정되어 있습니다. 이 기능을 사용하면 옵션 수정자를 사용할 때 Mac OS X에서 일반적으로 제공하는 확장 문자 처리가 비활성화됩니다. 따라서 확장 문자를 거의 사용하지 않고 Option+ xESC x 보내기를 원하면 이 터미널 옵션을 활성화 할 수 있습니다 .

귀하의 예에서“Hello”로 이동하는 방법에는 여러 가지가 있습니다.

  • "Hello"검색 : Cr H ello Cj (또는 ESC)
    • 일반 Emacs에서는 RET ( Return)을 사용 하여 현재 위치에서 검색을 끝내고 편집으로 돌아갑니다. 그러나 bash 에서 기본 바인딩은 증분 검색이 활성화 된 경우에도 RET (예 : Cm)이 항상 현재 행을 실행하도록합니다. 따라서 Cj / ESC 부분은 일반 Emacs와의 편차입니다.
  • 줄의 시작 부분으로 이동하여 앞으로 이동하십시오. Ca Mf Cf (또는 )
  • 줄의 시작 부분으로 이동 한 다음 단어별로 이동하십시오. Ca Mf Mf Mb
  • Mb를 많이 사용하십시오 (Meta에 Option을 매핑 한 경우에만 실행 가능).

원하는 교체를 수행하는 몇 가지 방법이 있습니다.

  • 단어를 삭제하고 바꿉니다 : Md H i
  • 문자를 삭제하고 교체하십시오 : Cd Cd Cd Cd Cd H i
  • "H"를지나 다음 작업을 삭제하고 교체하십시오. Cf Md i
  • "H"를지나 나머지 문자를 삭제하고 교체하십시오. Cf Cd Cd Cd Cd i

단어 끝에서 멈춘 경우 (아마 Ca Mf Mf를 통해) M-DEL H i를 사용할 수 있습니다.

bind -P | less다른 재미있는 바인딩을 찾는 것과 같은 것을 할 수 있습니다 . 자세한 내용은 bash 매뉴얼 페이지readline 섹션 또는 bash 정보 페이지readline 부분 을 참조하십시오.


좋아, 이것은 실제로 질문과 관련이 없지만 키보드 키와 같은 단어를 어떻게 거기에 넣습니까?
Wuffers

1
@씨. 남자 : <kbd>요소를 사용하십시오 . 마크 업에서 HTML하위 집합이 여기에 허용됩니다 . 모양은 태그의 사이트 로컬 스타일 (배경, 테두리 색상, 테두리 스타일, 테두리 너비 등) 때문입니다. 내 게시물소스 마크 업을 검토 할 수 있습니다 ( 이 페이지의 "소스보기" ). MSO에서 멋진 스타일을 사용할 수없는 경우에도 meta.stackexchange.com/questions/5527을 참조하십시오 . meta.stackexchange.com/questions/1939/#23571
Chris Johnsen

이것이 명백한 지 확실하지 않은지, 알아내는 데 1 분이 걸렸지 만 메타 키가없는 MBP에 있고 기본 터미널 구성을 사용하고 있습니다. 단어를 앞뒤로 이동하려면 Esc 키를 누른 다음 F 또는 Esc 키를 누른 다음 B 키를 누를 수 있습니다. 위에서 설명한 방식으로 인해 Esc + x를 누른 다음 f 또는 b를 누르면됩니다.
cwd

IDE와 일치하도록 ctrl 또는 fn + 화살표 키를 사용할 수 있도록 환경 또는 쉘을 변경하는 방법이 있습니까?
codecowboy

1
set -o vi.bashrc 를 추가하여 vi 바인딩을 사용할 수도 있습니다 ! gnu.org/software/bash/manual/html_node/…
Will Munn

2

에 대한 기본 readline 바인딩 forward-word은 Meta-F입니다 ( bash(1)맨 페이지, READLINE 섹션, 이동 명령 하위 섹션). 그래도 OS X에서 메타가 무엇을 번역하는지 잘 모르겠습니다. 아마도 옵션 일 것입니다.


+1-당신이 실제로 옳습니다. 이것은 OSX의 bash에서 작동합니다
Yuval
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.