나는 몇 달 동안 setopt completealiases
내 작업을 해왔습니다 .zshrc
. 왜 그것이 추가되었는지 전혀 모르겠습니다. 대부분의 다른 내용은 주석 처리되어 있거나 인접한 설정에서 이해할 수 있습니다. 그래서 나는 몇 달 동안 별칭에 대한 전체 탭을 수행하지 않았습니다.자일스의 대답은 여기에 있습니다. 왜 어리석은 과거의 내가 아무런 설명도 없이 덧붙였 는지 이해하려고 노력 중입니다 .
의도된 사용 사례는 무엇입니까? 일반적인 상황은 무엇입니까?
1내 추측으로는 다음과 같습니다.활성화됨별칭이 완전히 완성되었으며 문서를 확인하는 데 신경 쓰지 않았습니다.
답변1
기본적으로 zsh는 실행이 완료되기 전에 별칭을 확장합니다. 이는 대부분의 경우 바람직합니다. 별칭을 통해 명령을 사용할 때 명령에 대해 다른 완성 방법을 사용하려는 경우가 있습니다. 이는 드물며 완료 시스템이 실제 완료를 결정할 만큼 똑똑하지 않고 추가 힌트를 받아야 하는 경우에만 발생합니다. 별칭이 시스템 상태를 변경하는 경우에도 이런 일이 발생할 수 있습니다 . 예를 들어 alias e1='cd ~/myproject1 && $EDITOR'
파일 이름은 을 기준으로 완성되지만 기본적으로는 현재 디렉토리를 기준으로 파일 이름을 가져옵니다. ~/myproject1
그러면 두 가지 해결책이 있습니다.
- settings
complete_aliases
, 별칭에 대한 다양한 완성 기능을 정의합니다. 이렇게 하면 정의한 모든 별칭에 대해 설정해야 하므로 번거롭습니다. - 다른 완성이 필요한 드문 경우에는 별칭 대신 함수를 사용하세요. Zsh는 주어진 의 완료가
foo () { bar --wibble --wobble "$@"; }
afterfoo
와 동일해야 한다고 추측하려고 시도하지 않습니다bar --wibble --wobble
.
별칭을 개별적으로 수행해야 하는 경우가 드물기 때문에 함수를 대신 사용할 생각은 없습니다 setopt complete_aliases
.