Bash : 커서를 한 번에 한 단어 씩 왼쪽으로 이동하려면 어떻게합니까?


14

OSX에서는 option키를 누른 채 왼쪽 커서 키를 눌러 편집해야 할 단어가 나올 때까지 (또는 Vi에서 그냥 눌렀을 수 b있지만, 터미널에서이 작업을 수행하는 방법을 알 수 없었습니다. 아직...


이 페이지 에서 고유 한 바인딩을 사용자 정의하는 방법에 대한 지시 사항을 포함 하여 전체 readline 바인딩 목록을 볼 수 있습니다 .
jasonwryan

답변:


26

키 바인딩을 설정하려면 먼저 Ctrl+ Left키 시퀀스가 ​​생성 하는 키 코드를 찾아야 합니다. 명령 cat을 사용하여 기존 키 바인딩과의 간섭을 끄고 키 시퀀스를 입력하십시오. 내 시스템 (Linux)에서는 다음과 같습니다.

$ cat
^[[1;5D

를 눌러 Ctrl+ d출구 고양이에. 이제 Ctrl-Left가 6 개의 키 코드를 발행 함을 알게되었습니다

  • 탈출 (^ [)
  • [
  • 1
  • ;
  • 5

이제 bind 명령을 실행할 수 있습니다 :

bind '"\e[1;5D": backward-word'

6
원하는 경우`` "\ e [1; 5D": 뒤로 단어 ''를 $ HOME / .inputrc에 추가하여 영구 효과를 얻을 수 있습니다.
llhuii

@llhuii +1, 나는 그것을 언급하는 것을 잊었다!
다니엘 쿨만

2
임의의 키 조합을 어디서나 바인딩 할 수있는 가장 유연한 방법은 +1입니다!
Irfy

14

원하는 bash 함수는 backward-word입니다. bind -q backward-word해당 기능에 바인딩 된 키 목록을 얻기 위해 실행할 수 있습니다 . 하나의 공통된 바인딩은 Esc+b

또한 많은 터미널이 Ctrl+를 지원합니다 Left(X에서 단어로 뒤로 건너 뛸 수있는 것과 동일한 단축키)


1
좋아, 반환 backward-word can be invoked via "\eb".하지만 Esc + b 대신 control + Left를 어떻게 바인딩합니까? 또한 이미 볼 수있는 Esc + b의 한 가지 단점은 단어를 되돌릴 수있을 때마다 Esc 키를 포기해야한다는 것입니다. 더 좋은 방법은 없습니까?
nipponese

1
더 좋은 방법이 있습니까? 자연스럽게 : set editing-mode vi:)
jasonwryan

3
@nipponese "esc b"는 키보드에서 ALT-b로도 사용할 수 있습니다. 구성에 따라 왼쪽 또는 오른쪽 고도 일 수 있으므로 두 가지를 모두 시도하십시오.
Random832

8

Bash의 기본 키 바로 가기 backword-wordAlt+ b입니다. Esc+로 동일한 결과를 얻을 수 있습니다 b. 키 바인딩을 편집하기 전에 해당 기능을 사용해보십시오.

bind명령을 사용 bind -q [name]하여 특정 작업의 현재 키 바인드 를 편집하거나 가져옵니다.


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