나에게는 기능이 있습니다. 사용 가능한 글꼴 이름으로 자동 완성을 어떻게 추가할 수 있나요?
예를 들어 이와 같이 입력하면 doSomethingWithFont Ubun<tab>
완료됩니다 doSomethingWithFont Ubuntu\ Mono
.
doSomethingWithFont () {
echo $1
}
_completeWithFontName () {
# ????
}
complete -F _completeWithFontName doSomethingWithFont
답변1
입력하려는 형식으로 사용 가능한 글꼴을 나열하려면 fc_list 명령을 사용해야 할 수도 있습니다.
이것이 예제 코드에 맞는 방식입니다:
_completeWithFontName() { < <(fc-list -f "%{family}\n" | grep "^$2" | sort -u) mapfile -t COMPREPLY; }
complete -F _completeWithFontName doSomethingWithFont
mapfile 명령을 파이프하면 안 됩니다. 대상 명령을 서브셸로 파이프하면 서브셸을 종료할 때 COMPREPLY 배열의 새 내용이 즉시 손실됩니다. <
프로세스에서 리디렉션을 교체하는 것이 <(...)
더 잘 작동합니다.
fc-list에 대한 인수는 -f
간단한 grep 명령의 형식을 지정하여 명령줄에 입력된 첫 번째 문자와 일치하는 글꼴 이름을 선택하고 편의상 정렬합니다. 또한 -u
정렬에 (유일한) 매개변수를 추가했습니다. 이 경우에는 제품군만 나열하기 때문입니다. 각 변형은 중복 항목으로 표시되므로 분류해야 합니다.