특정 문자 완성 중지

특정 문자 완성 중지

와 함께grep저는 다양한 조합을 사용하는 경향이 있습니다.-irln하나 이상의 동일한 파일 형식을 포함하도록 제한합니다.py, js, HTML, CSS.

예를 들어

grep -ril --include=*{html,css}

나는 다음 형식으로 사용하는 grep의 다양한 순열에 대한 별칭 세트를 정의하고 있습니다.

grep.[options].[extensions]

이 경우 약 100개의 별칭을 생성하기 위해 옵션 조합을 반복하는 Python 스크립트를 사용하여 별칭 파일을 생성합니다. 그 중 일부는 다음과 같습니다.

alias grep.il.html-css='grep -ril --include=*{html,css}'
alias grep.il.html-css='grep -ril --include=*{html,css}'
alias grep.il.html-js='grep -ril --include=*{html,js}'
alias grep.iln.html-js-css='grep -riln --include=*{html,js,css}'

(또한 모두 node_modules 디렉터리를 제외합니다. 간결하게 하기 위해 숨겼지만 이제 이러한 별칭이 필요한 이유를 알 수 있습니다!)

마침표를 쓰는 이유는 완성으로 인해거의이는 IDE에서 개체의 속성을 입력하는 것과 비슷하지만 정확히 동일하지는 않습니다. 여기서 도움이 필요합니다.

Tab 키는 찾은 첫 번째 완전한 명령을 선택하려고 시도합니다. 완전히 멈출 때까지 옵션을 순환하고 싶습니다(원하는 경우 현재 네임스페이스에서).

현재 다음을 입력하면 (Mint/Ubuntu/Debian bash 기본값은 건드리지 않습니다):

grep.i

그런 다음 탭을 클릭하면 다음으로 바로 이동됩니다.

grep.i.css

그리고 나는 이것을 하지 않고 다음 기간에 먼저 도달할 때까지 사용 가능한 옵션을 순환하기를 원합니다.

grep.i
grep.il
grep.in
grep.iln
grep.l
grep.n

를 누르면 해당 옵션이 선택되고 탭은 사용 가능한 옵션을 순환합니다. 예:

grep.il.css
grep.il.css_html
grep.il.css_js_html

가능합니까? 바람직합니까?

나는 bash를 사용하고 있으며 이것이 유일한 방법이라면 zshell로 이동하는 것을 고려할 것입니다.

고쳐 쓰다:

각 중간 별칭에 대해 스텁 별칭을 만드는 약간의 트릭을 사용하여 이 상황을 개선할 수 있습니다. 위의 예에서는 다음과 같습니다.

alias grep.='echo stub'
alias grep.il.='echo stub'

이는 마침표에서 중지되지만 완료되면 공백이 추가되므로 다음과 같이 끝납니다.

"그렙."

터미널에서. 여전히 Tab 키를 눌러 옵션을 순환할 수 있지만 입력을 시작하기 전에 백스페이스를 수행해야 합니다. 그렇지 않으면 다음과 같은 결과가 나타납니다.

"grep.i"

.main.py hello

답변1

다음 환경에서 작동하게 하는 방법은 다음과 같습니다 zsh.

autoload -Uz compinit && compinit
bindkey '^I' complete-word

zle -C complete-word complete-word complete-word
complete-word() {
  _main_complete
  (( compstate[unambiguous_cursor] > ${#:-$PREFIX$SUFFIX}+1 )) \
  && compstate[insert]='automenu-unambiguous'
  compstate[list]='list force'
}

zstyle ':completion:*:complete:*' show-ambiguity '07'


그런 다음 입력 grep하고 누르면 tab다음이 표시됩니다. grep+탭tab그런 다음 표시된 완료 과정을 순환하면서 길게 누를 수 있습니다 .다시 탭 루프 또는 강조 표시된 문자 중 하나를 입력하고 tab다시 눌러 나열된 완성에 공통적으로 사용되는 다음 문자 세트를 삽입할 수 있습니다. 또는 강조 표시된 문자 + Tab을 누르세요. 그런 다음 tab다시 누르면 새 완성 목록이 표시됩니다. 탭을 다시 당기고 헹구고 반복하세요. 기타 등등 거품을 내고 헹구고 반복하십시오.

관련 정보