원래의:

원래의:

스크립트를 통해 zsh-autosuggestions플러그인을 추가하고 싶습니다.~/.zshrc

원래의:

plugins=(git)

또는

 plugins=(git
 some1
 some2)

표적:

plugins=(git
zsh-autosuggestions)
  1. 이것은 작동하지 않습니다.

    sed -i  's/^plugins=\(([^\)]*)\)/plugins=\(\1\nzsh-autosuggestions\n\)/' ~/.zshrc
    

    헷갈리네요 ([^\)]*) 1그룹인줄 알았는데 왜 안되나요

  2. 하지만 첫 번째 그룹을 삭제하세요.()

    sed -i  's/^plugins=\([^\)]*\)/plugins=\(\1\nzsh-autosuggestions\n\)/' ~/.zshrc
    

    밝혀지다

    plugins=((git
    zsh-autosuggestions
    )
    )
    

    ()으로 탈출했는데 \왜 1군이 되나요?

답변1

Sed해결책:

샘플 ~/.zshrc콘텐츠:

param=val1
plugins=(git)
param2=val2

plugins=(git
some1
some2)
param3=val3

sed '/^plugins=/ N;N; s/\(=([^)]*\))/\1\nzsh-autosuggestions)/' ~/.zshrc
  • N- 패턴 공간에 개행 문자를 추가한 후 패턴 공간에 다음 입력 라인을 추가합니다.
  • \(...\)- 정규식으로 캡처된 그룹은 \in으로 이스케이프 되어야 합니다.갈아 바수다특별한 의미를 부여하다

산출:

param=val1
plugins=(git
zsh-autosuggestions)
param2=val2

plugins=(git
some1
some2
zsh-autosuggestions)
param3=val3

답변2

다음 명령은 나에게 잘 작동합니다


주문하다

 echo "plugins=(git)" | sed "s/(.*[^)]/&\nzsh-autosuggestions/g"

산출

plugins=(git
zsh-autosuggestions)

관련 정보