zsh에서 특정 문자가 완료된 후 공백을 유지합니다.

zsh에서 특정 문자가 완료된 후 공백을 유지합니다.

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잘 작동하는 것 같습니다.

관련 정보