Emacs에서처럼 터미널에 다음을 입력하고 싶습니다.
emacs 2019-*subject*
내가 쳤을 때 Tab첫 번째 일치 항목을 얻습니다.
2019-08-03-subject.markdown
내가 원하는 것은 다음과 같은 옵션을 표시하는 것입니다.
2019-08-03-subject.markdown 2019-bla-bla-subject-predicate.markdown etc...
나는 온라인 어디에서나 찾아보았고 이것이 기능이 아니라는 것을 믿을 수 없습니다.
있다많은 비슷한질문을 받았습니다.답변이 내가 원하는 대로 작동하지 않습니다(위 참조).. 내가 시도한 다른 솔루션:여기.
PS 저는 Ubuntu 16을 사용합니다. 이것은 파일을 열 때 emacs에서 발견하는 일반적인 기능입니다. 매우 편리할 것입니다.
답변1
이후에 일어나는 일은 Tab완료 스크립트에 따라 다릅니다.이 답변2013년에는 최소한 한 명의 사용자가 원하는 동작이 있었다고 믿게 만듭니다. 하지만 2019년 데비안 9의 동작은 당신이 설명한 것과 같습니다. 그 이후로 스크립트/동작이 변경되었을 수 있습니다.
게다가 Bash는 입력된 명령(현재 줄의 첫 번째 단어)에 따라 스크립트를 선택합니다. 단일 변경 사항이 원하는 것을 제공하기 위해 모든 완성에 영향을 미칠 수 있다는 것은 즉시 명확하지 않습니다(내 생각에는 이 _filedir
함수가 좋은 시작인 것 같습니다).
다행히도 필요에 따라 확장이 가능합니다. man 1 bash
(헤더 아래 ) 에서 READLINE
:
glob-complete-word
(M-g
)
포인트 앞의 단어는 암시적으로 별표가 추가된 경로 이름 확장의 패턴으로 처리됩니다. 이 패턴은 가능한 완성에 대해 일치하는 파일 이름 목록을 생성하는 데 사용됩니다.
glob-expand-word
(C-x *
)
포인트 앞의 단어는 경로 이름 확장을 위한 패턴으로 처리되며 일치하는 파일 이름 목록이 단어를 대체하여 삽입됩니다. 숫자 인수가 제공되면 경로 이름 확장 앞에 별표가 추가됩니다.
glob-list-expansions
(C-x g
)
에 의해 생성되었을 확장 목록glob-expand-word
이 표시되고 선이 다시 그려집니다. 숫자 인수가 제공되면 경로 이름 확장 앞에 별표가 추가됩니다.
M-g
, 기본 키 바인딩을 설명합니다 C-x *
. C-x g
보다 친숙한 형식은 다음과 같습니다.
- Meta+ g( Alt+ g) for
glob-complete-word
, - Ctrl+ x, (release Ctrl) *for
glob-expand-word
(참고: *사실 Shift+ 는 8내 키보드에 있습니다), - Ctrl+ x, (릴리스 Ctrl) gfor
glob-list-expansions
.
다음 코드는 이러한 바인딩을 설정합니다(어떤 이유로든 누락된 경우).
현재 쉘에만 해당:
# commands to run in Bash bind '"\eg": glob-complete-word' bind '"\C-x*": glob-expand-word' bind '"\C-xg": glob-list-expansions'
또는 영구 구성(
/etc/inputrc
또는~/.inputrc
)에서:# lines to add "\eg": glob-complete-word "\C-x*": glob-expand-word "\C-xg": glob-list-expansions
(이것은 새 쉘에만 영향을 미칩니다.다시 장전하다).
glob-complete-word
당신은 또는 에 관심이 있을 것입니다 glob-list-expansions
. 주요 차이점:
glob-complete-word
항상 별표를 추가하지만glob-list-expansions
이는 조건부로 수행됩니다(인용 매뉴얼 참조).- 일치하는 항목이 많으면
glob-complete-word
무언가를 인쇄하기 전에 두 번 트리거해야 할 수도 있습니다(예: 키 조합을 두 번 누르기). 이것은 에 달려 있습니다show-all-if-ambiguous
.이미 언급한 답변. - 일치하는 항목이 하나만 있으면
glob-complete-word
실제 줄 완성을 수행하지만glob-list-expansions
여전히 일치 항목만 표시합니다.
특별한 경우에는 다음을 입력하십시오.
emacs 2019-*subject*
그런 다음 Ctrl+ x, g.