'zstyle'은 무엇을 합니까?

'zstyle'은 무엇을 합니까?

zstyleexport-ing 쉘 인수에 대한 대안 처럼 데이터를 저장하고 검색하는 중앙 장소인 것처럼 보입니다 . 이것이 사실입니까, 아니면 더 많은 것이 있습니까?

답변1

zstyle완성 시스템의 명백한 스타일 제어를 다루지만, 그 이상을 다루는 것 같습니다. 예를 들어, 이 vcs_info모듈은 프롬프트에 git 상태를 표시하기 위해 이를 사용합니다. man zshmodules이 섹션 zstyle의 몇 가지 설명 단락을 살펴보면서 시작할 수 있습니다 .

호출하면 어떤 설정이 적용되는지 확인할 수 있습니다. 이는 유익할 수 있습니다.

이것zstyle다양한 영역을 자세히 설명하는 좋은 장 처리도 있습니다 .

.../Completion/시스템의 디렉토리를 grep하여 이러한 파일 중 일부가 어떻게 사용되는지 확인할 수 있습니다 zstyle. 일반적인 장소는 근처에 있습니다 /usr/share/zsh/functions/Completion/*. 나는 그것이 내 시스템의 100개 이상의 파일에서 사용되는 것을 보았습니다. 사용자들은 zstyle주변에 물건을 뿌리는 경우도 많습니다 ~/.zshrc. 마무리에 색상과 설명을 추가할 수 있는 몇 가지 좋은 항목은 다음과 같습니다.

# Do menu-driven completion.
zstyle ':completion:*' menu select

# Color completion for some things.
# http://linuxshellaccount.blogspot.com/2008/12/color-completion-using-zsh-modules-on.html
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}

# formatting and messages
# http://www.masterzen.fr/2009/04/19/in-love-with-zsh-part-one/
zstyle ':completion:*' verbose yes
zstyle ':completion:*:descriptions' format "$fg[yellow]%B--- %d%b"
zstyle ':completion:*:messages' format '%d'
zstyle ':completion:*:warnings' format "$fg[red]No matches for:$reset_color %d"
zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'
zstyle ':completion:*' group-name ''

# Completers for my own scripts
zstyle ':completion:*:*:sstrans*:*' file-patterns '*.(lst|clst)'
zstyle ':completion:*:*:ssnorm*:*' file-patterns '*.tsv'
# ...

완성 시스템을 사용하면 대부분의 필드가 명확해집니다. 입력해 zstyle :«tab»보면 몇 가지 옵션이 표시됩니다. Tab을 눌러 다음 콜론을 완성하면 다음 옵션 세트 등이 표시됩니다.

답변2

작동 방식을 제대로 이해하려면 zstyle먼저 zsh가 모듈식 프로그램이라는 점을 이해해야 합니다. ~에서man zshmodules

zsh의 일부 선택적 부분은 셸의 핵심과 별도로 모듈에 있습니다. 이러한 각 모듈은 빌드 시 셸에 연결되거나, 설치에서 이 기능을 지원하는 경우 셸이 실행되는 동안 동적으로 연결할 수 있습니다. [...]

이런 점에서 zsh는 주요 내장 명령이 "코어" 모듈에 정의되어 있지만 다른 내장 명령은 "모듈"에 포함되어 있는 PHP와 유사한 인터프리터와 더 유사합니다.
좋아요, 그럼 "zstyle"은 무엇인가요? zsh에는 , 또는 - 이러한 "내장 명령" 중 또 다른 하나와
같은 다른 쉘과 같은 내장 명령이 있습니다 .sourcecddeclarezstyle

내장 기능 및 셸 옵션의 범위

내장 및 쉘 옵션은 일반적으로 (항상은 아니지만) 전체 쉘 프로세스 내에서 언제든지 또는 컨텍스트에 적용/사용 가능하다는 의미에서 "전역"입니다. 즉, 일반적으로 zsh 및 모든 하위 시스템에 적용됩니다. ( 모듈). 이는 쉘이 대화형 또는 비대화형 인터프리터로 호출되는지에 관계없이 적용됩니다. 따라서 예를 들어 명령 프롬프트나 비대화형 스크립트의 명령문 또는 동일한 스크립트의 함수에서
내장 또는 셸 옵션 "globstar"를 사용할 수 있습니다 . 위의 다른 답변과는 달리 "compsys"(완성 시스템) 모듈에 특정한 내장 기능이 아니라 "전역" 내장 기능입니다. sourcecdcase
zstylezstyle

zstylemodule 로 정의되면 zsh/util이는 단순히 구문 분석 방법을 정의하는 코드를 의미하며 "do"는 모듈에 정의 zstyle됩니다 . 또한 bash에서는 내장 함수에 대한 코드가 파일에 포함되어 있다는 사실을 알 필요가 없지만 이에 대한 도움을 받으려면 이것이 내장 함수라는 것을 아는 것이 도움이 됩니다. 이는 모듈에 정의되어 있으며 이 모듈에 대한 문서를 실행하여 액세스할 수 있습니다 . zsh/zutil
evaleval.czstylezstylezsh/zutilzsh/zutilman zshmodules

모듈 또는 셸 기능과 관련된 옵션 설정

man zshmodules따라서 전통적으로 쉘 옵션은 일반적 으로 "전역"이지만 설명에 따르면zsh의 일부 선택적 부분은 모듈에 있습니다., 많은 zsh함수는 쉘 함수를 사용하여 작성됩니다. (vim과 같은 많은 핵심 및 선택 기능이 vimscript로 작성되었습니다.)
그렇다면 해당 모듈이나 기능에만 적용되는 옵션을 지정하려면 어떻게 해야 할까요?
글쎄요, 그것이 바로 zstyle여러분이 전통적인 "전역" 셸 옵션보다 더 세부적으로 옵션을 "대상"으로 지정할 수 있도록 하는 것입니다.
zstyle인수를 통해 이를 달성"pattern"

"compsys"와 관련된 일부 선택적 동작을 구성하는 명령 예:

zstyle ':completion::complete:lsof:*' menu yes select

그리고 "vcs_info"와 관련된 몇 가지 선택적 동작을 구성합니다.

zstyle ':vcs_info:*' actionformats \
      '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '

그러나 여기서 끝나지 않습니다. 컨텍스트를 대상으로 하는 기능은 매우 강력합니다. 예를 들어 해당 기능에 대한 일부 동작/옵션을 정의 하고 저장소가 아닌 저장소일 때 컨텍스트를 수정할 수 있다고 zstyles가정해 보겠습니다. 방법vcs_info.gitsvn

:vcs_info:<svn_or_whatever_SCM_system>:* <style>

저장소가 있는 특정 프로젝트에 대한 선택적 동작은 어떻습니까 svn? 그 다음에

:vcs_info:<svn_or_whatever_SCM_system>:*:repo-root-name <style>

답변3

오직막연하게 의미가 있는내가 발견한 어리석은 이름과 잘못 문서화된 "(z)스타일"에 대한 설명 - 용어집에서Bash에서 Z Shell까지

style

에서 zsh스타일 메커니즘은 완성 시스템 및 편집기 위젯과 같은 기능을 사용하는 셸 플러그인을 구성하는 유연한 방법입니다. 변수와 달리 상황에 따라 다를 수 있으며 셸 옵션과 달리 값을 가질 수 있습니다. 메커니즘은 명령 스타일을 기반으로 합니다.

또한 "처리 스타일" 섹션에서작가더 자세히 설명하자면...

더 복잡한 완성 기능의 경우 함수 동작의 다양한 측면을 구성하는 데 사용할 수 있습니다 style.

...많은 도우미 함수가 스타일을 찾아주므로 함수가 특정 작업을 수행하지 않고도 여러 스타일에 반응할 수 있습니다. 특정 상황에서 어떤 스타일을 찾아야 하는지 알아보려면 숫자 인수와 함께 _complete_help 함수를 호출하세요. 일반적으로 Esc2을 누른 다음 를 눌러 이 작업을 수행 할 수 있습니다 Ctrl-x h. 이는 어떤 스타일이 조회되었는지와 관련 컨텍스트를 확인할 수 있으므로 구성이 완료되었을 때 주로 유용합니다.

답변4

ZSH에서 가장 실망스러운 점 중 하나는 매뉴얼 페이지에서 다양한 명령을 찾을 수 있는 위치를 찾는 것입니다. 이 예에서 문서는 다음과 같습니다.스타일man zshmodules또는에서 찾을 수 있습니다.여기서 온라인으로.

이 내장 명령은 스타일을 정의하고 찾는 데 사용됩니다. 스타일은 이름과 값의 쌍이며, 여기서 값은 임의 개수의 문자열로 구성됩니다. 패턴과 함께 저장되며 패턴과 비교되는 "컨텍스트"라는 문자열을 제공하여 조회가 수행됩니다. 첫 번째로 일치하는 패턴에 대해 저장된 정의를 반환합니다.

관련 정보