![zsh에서 특정 문자가 완료된 후 공백을 유지합니다.](https://linux55.com/image/60284/zsh%EC%97%90%EC%84%9C%20%ED%8A%B9%EC%A0%95%20%EB%AC%B8%EC%9E%90%EA%B0%80%20%EC%99%84%EB%A3%8C%EB%90%9C%20%ED%9B%84%20%EA%B3%B5%EB%B0%B1%EC%9D%84%20%EC%9C%A0%EC%A7%80%ED%95%A9%EB%8B%88%EB%8B%A4..png)
Zsh에는 대부분의 경우 잘 작동하는 몇 가지 완성 관련 자동화 기능이 있습니다. 을 누르면 Tab공백(또는 ,
중괄호 내부와 같은 다른 적절한 문자)이 자동으로 삽입됩니다.
&
한 가지 상황을 제외하고는 이 기능을 유지하고 싶습니다. 를 입력 하거나 |
누른 후에 공백이 제거되는 것을 원하지 않습니다 Tab. 나는 공백을 제거하는 것을 선호하며 ;
대괄호 열거형을 누를 때 쉼표가 자동 삽입되는 것을 확실히 억제하고 싶습니다 .Tab }
기본적으로 이 기능은 "이전"( compctl
) 및 "새"( ) 완성 시스템 compadd
모두에서 작동합니다 . 나는 새로운 시스템에만 관심이 있어요.
삽입을 완료하는 자동 접미사의 자동 억제를 조정하는 방법은 무엇입니까?
답변1
이 기능은 다음에 의해 조정될 수 있습니다.ZLE_REMOVE_SUFFIX_CHARS
그리고ZLE_SPACE_SUFFIX_CHARS
쉘 매개변수.
이 변수가 설정된 경우
ZLE_REMOVE_SUFFIX_CHARS
입력 시 자동 완성 접미사가 제거되는 문자 집합이 포함되어야 합니다. 설정되지 않은 경우ZLE_REMOVE_SUFFIX_CHARS
기본 동작은 다음과 동일합니다.ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|'
suffices로 설정된 문자는
ZLE_SPACE_SUFFIX_CHARS
공백으로 대체됩니다. 또한 그보다 우선한다.ZLE_SPACE_SUFFIX_CHARS
따라서 원하는 동작을 얻으려면 설정하는 것만으로도 충분합니다.
ZLE_SPACE_SUFFIX_CHARS=$'|&'
,
입력할 때 자동으로 삽입된 중괄호 열거가 항상 제거되는 것 같습니다 }
.
zshparam(1)
일부 완성 시스템이 이 동작을 무시할 수 있다고 언급되어 있지만 " new" compsys
(당신이 부르는 대로 )에서는 compadd
잘 작동하는 것 같습니다.