スクリプトを介してzsh-autosuggestions
プラグインを追加したいと思います。~/.zshrc
オリジナル:
plugins=(git)
または
plugins=(git
some1
some2)
ターゲット:
plugins=(git
zsh-autosuggestions)
これはうまくいきません。
sed -i 's/^plugins=\(([^\)]*)\)/plugins=\(\1\nzsh-autosuggestions\n\)/' ~/.zshrc
混乱し
([^\)]*)
ています1グループだと思いましたが、なぜできませんかただし、最初のグループを削除してください。
()
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)