Bash/readline에서 공백으로 구분된 단어로 이동

Bash/readline에서 공백으로 구분된 단어로 이동

Bash 라인 편집(또는 GNU readline을 사용하는 모든 프로그램)에서 Meta-f는 "단어" 하나를 오른쪽으로 이동하고 Meta-b는 "단어" 하나를 왼쪽으로 이동합니다. 여기서 "단어"는 문자와 숫자로 구성됩니다. 이것들은 forward-word명령 입니다 backward-word. (Meta-f는 Alt 수정자 키 또는 접두사가 붙은 Esc 키일 수 있습니다.)

예를 들어 내가 입력하면

cat /etc/motd

그런 다음 Meta-b를 반복해서 입력하여 커서를 m, e, 로 이동합니다 c.

단어를 유사하게 이동하지만 공백으로 구분하여 이동하는 명령이 있습니까 /etc/motd? 단일 단어에도 동일하게 적용됩니까?

(저는 매우 긴 파일 경로로 작업하는 경우가 많은데 쉽게 건너뛸 수 있기를 원합니다. 해결 방법은 기존 단어 이동 명령을 반복적으로 입력하거나 ^X ^E를 입력하여 편집기를 실행하는 것입니다. )

vim에서는 단어로 앞뒤로 이동하고 w공백 으로 구분된 단어로 이동합니다 . 나는 비슷한 것을 찾고 있습니다.bWB

문서를 살펴본 결과 readline대답이 '아니요'인 것 같지만 뭔가 빠졌을 수도 있습니다.

답변1

이렇게 하면 readline은 스타일 명령을 set -o vi채택하고 / 및 /는 Vim 자체와 동일한 WORD 동작을 갖게 됩니다. 나는 명령줄을 편집할 때 보통 전체 경로, URL 등을 / 건너뛰기 사용합니다. 출력에서 readline 명령이 and에 바인딩되어 있고 둘 다임을 알 수 있습니다.vimwWbBWBbind -lWBvi-forward-bigwordvi-backward-bigword

또는 shell-forward-word과 가 있습니다 shell-backward-word. Bash 매뉴얼 페이지에 따르면 이러한 명령은 이동합니다.쉘 메타문자캐릭터이고,인용되지 않은 경우 단일 단어. 따라서 명령보다 약간 덜 "공격적"이지만 vi-*-bigword긴 경로를 건너뛰는 데는 거의 항상 트릭을 수행합니다.

예를 들어 이렇게 하면 bind '"\C-x": shell-backward-word'+ Ctrlx설명된 대로 작동합니다.

답변2

다음을 추가할 수 있습니다.

set keymap vi-move
"\e[EMACS~": emacs-editing-mode
set keymap emacs
"\e[VI~": vi-movement-mode
"\ed": "\e[VI~dW\e[EMACS~"
"\ef": vi-fWord
"\eb": vi-bWord

귀하의 inputrc에 추가하거나 zsh사용자 정의하기 더 쉬운 곳을 사용하십시오. 바라보다자세한 내용은 다른 Q&A 답변을 참고하세요.

답변3

Ctrl++ 와 ++가 당신이 찾고 있는 것 같습니다(아마도 ++ 와 ++ 가 당신 Alt에게 적합할 것 입니다 ) .fCtrlAltbCtrlMetafCtrlMetab

나는 이것을 찾으러 여기에 왔고, 당신의 Meta+ fMeta+ 에서 힌트를 얻어 b그것을 결합해 보았는데 Ctrl그것은 나에게 맞는 것 같습니다!

WSL에서 Ubuntu를 사용하고 있습니다. 이것이 중요한지 확실하지 않습니다.

관련 정보