대화형 모드에서 Zsh에 여러 줄 문을 작성할 때 다음과 같이 내가 속한 블록 유형을 내 문 앞에 추가합니다.
% for i in $(seq 3); do
for> echo $i
for> done
1
2
3
% function foo() {
function> echo bar
function> }
% foo
bar
나는 다른 코드 블록 접두사를 보는 for>
것을 좋아하지 않습니다 . function>
이러한 접두사를 억제하는 방법을 적절하게 검색하기 위해 이러한 접두사가 무엇인지 잘 모르겠습니다. Bash는 또한 문자만을 사용하여 이 작업을 수행 >
하지만 이 경로에서는 알아낼 수 있는 행운이 없었습니다. Zsh에서 이를 비활성화하는 방법이 있습니까?
- 편집하다 -
어느 날 검색 엔진을 통해 이 문제에 직면한 사람을 위해 $PS2
Zsh의 기본값은 입니다 . PS2=%_>
~에서문서:
%_
파서의 상태, 즉 명령줄에서 시작된 셸 구성(예: "if" 및 "for")입니다. 정수가 주어지면 많은 문자열이 인쇄됩니다. 0 또는 음수 또는 정수가 없으면 가능한 많은 값을 인쇄한다는 의미입니다. 이는 연속 라인을 위해 PS2를 프롬프트하고 XTRACE 옵션을 사용하여 디버깅을 위해 PS4를 프롬프트할 때 가장 유용합니다. 후자의 경우 비대화식으로도 작동합니다.
승인된 답변을 바탕으로 저는 다음과 같은 PS2 설정을 마쳤습니다. 각 블록에 2칸 들여쓰기를 추가하고 PS1 길이에 맞춰 초기 2칸을 차지합니다.
PS2='${${${(%):-%_}//[^ ]}// / } '
답변1
PS2
이는 모든 Bourne 스타일 셸(zsh 포함)의 변수를 통해 구성된 두 번째 프롬프트입니다.zsh에서, 기본적으로 어떤 쉘 구조(루프, 따옴표 등)가 열려 있는지 표시합니다.%_
빨리 탈출해라.배쉬에서, 기본값은 >
및이스케이프 시퀀스를 사용할 수 있습니다하지만 그다지 유용하지는 않습니다.
도우미 프롬프트를 원하지 않으면 공백으로 두십시오.
PS2=
이 prompt_subst
옵션을 활성화하면 각 중첩 수준에 공백이 생기도록 할 수 있으며, 이는 시각적 피드백을 제공하지만 터미널에서 코드를 복사할 수 있게 해줍니다.
setopt prompt_subst
PS2='${${(%):-%_}//[^ ]} '