オリジナル:

オリジナル:

スクリプトを介して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)

関連情報