Bash CTRL을 사용하여 단어 / 문자열간에 커서 이동


85

CTRL왼쪽 및 오른쪽 화살표 키를 사용할 때 더 빠르게 이동하기 위해 키 를 사용하는 데 익숙합니다 (한 번에 한 문자가 아닌 단어의 끝으로 이동).

어떻게 든 bash에서 할 수 있습니까?

나는 아마 그것을 코딩 할 수 있지만, 더 쉬운 / 이미 완료된 것이 있는지 궁금합니다.

답변:


94

기본 readline 키 바인딩을 사용하면 ALT+ B는 한 단어 뒤로 이동하고 ALT+ F는 한 단어 앞으로 이동합니다.

기본 Ubuntu 설정 CTRL은 익숙한 + 화살표를 추가로 제공 합니다. 이들에 /etc/inputrc다음과 같이 지정된 :

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

왜 세 개가 필요한지 모르겠습니다 ...


20
@bryan_ruiz : 다른 키보드 (터미널 에뮬레이터 등)는 다른 시퀀스를 출력합니다. 시퀀스를 보려면 Ctrl-v를 누른 다음 키를 누르십시오. PuTTY에서 나에게 Ctrl-v Ctrl-RightArrow는 ^[OC당신과 같은 것을 제공합니다. 에서 xterm내가 얻을 ^[[1;5'토마스와 동일하다.
추후 공지가있을 때까지 일시 중지되었습니다.

7
편집하여 그렇게 좋을 것 ~/.inputrc대신에
svassr

1
이것없이 얼마나 오래 살았는지 믿을 수 없습니다.
Ryan Shillington

3
~ / .inputrc를 편집하면 '시스템'하나 (/ etc / inputrc)가로드되는 것을 중지 할 수 있습니다. 또한 'set -o'설정- "set -o emacs"는 예를 들어 "set -o vi"와는 반대로 명령 줄에서 emacs 스타일 키 바인딩을 제공해야합니다 (이 작업을 수행 한 후 w 또는 b)를 사용하기 전에 ESC.
David Goodwin 2014

4
@DavidGoodwin 약간의 검색 후 추가 $include /etc/inputrc하면 시스템 inputrc 파일도로드됩니다.
SirGuy

42

Thomas가 설명했듯이 바인딩을 /etc/inputrc.

로그인 할 때마다로드되는 또 다른 대안은 다음 ~/.bashrc 과 같이 입력하는 것입니다 .

#use ctl keys to move forward and back in words
bind '"\eOC":forward-word'
bind '"\eOD":backward-word'

cat > /dev/null 키보드가 보내는 문자를 보는 데 사용할 수 있다는 것을 배웠습니다 . 예를 들어 CTRL + 오른쪽 화살표가 표시됩니다.

^[OC

여기서는 명령 에서 코드가 나오는 곳 ^[과 동일 \e합니다 bind.

다음과 같이 바인딩을 조회 할 수도 있습니다.

bind -p | grep forward-word

이 모든 것은 꽤 굉장하며 bash의 더 많은 힘을 알게되어 기쁩니다.


6
나는 이것이 bash에만 영향을 미칠 것이라고 생각 하는 반면 inputrc솔루션은 readline을 사용하는 다른 프로그램, 예를 들어 Python 인터프리터, 대부분의 다른 쉘에도 적용될 것입니다. ~/.inputrc루트가 없거나 모든 사용자에게 적용하지 않으려면 명령을 넣을 수도 있습니다 .
Thomas

어떤 이유로 든 위의 라인 순서를 바꿀 때만 저에게 효과적이었습니다. 추가 참고. Windows 8.1의 퍼티 뒤에 Ubuntu 14.04LTS를 사용하고 있습니다.
Rebecca Dessonville 2015 년

2
특히 I learned that you can use cat > /dev/null to look at the characters that your keyboard is sending. #TIL
Sungam

3
간단히 입력 read하고 Enter 키를 눌러와 동일한 효과를 얻을 수도 있습니다 cat > /dev/null. 나는 게으 르기 때문에 타이핑이 적은 솔루션을 좋아합니다. :)
theglossy1

ctrl + 4가 내 고양이 충돌 (^ / 전송)
user1040495

4

홈 디렉토리에 .inputrc가 있으면 ctrl + left가 Ubuntu에서 작동을 중지합니다 (예 :).

모든 것이 작동하도록하려면 ~ / .inputrc에 다음을 추가하십시오.

# Include system-wide inputrc, which is ignored by default when
# a user has their own .inputrc file.
$include /etc/inputrc

f.kowal에 대한 크레딧

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