所以我在下面的字符串config.fish
,以及init.vim
:
鱼:eval sh ~/.config/fish/colors/base16-monokai.dark.sh
Vim:colorscheme base16-monokai
Vim:let g:airline_theme='base16_monokai'
我有以下shell脚本:
#!/bin/sh
theme=$1
background=$2
if [ -z '$theme' ]; then
echo "Please provide a theme name."
else
if [ -z '$background' ]; then
$background = 'dark'
fi
base16-builder -s $theme -t vim -b $background > ~/.config/nvim/colors/base16-$theme.vim &&
base16-builder -s $theme -t shell -b $background > ~/.config/fish/colors/base16-$theme.$background.sh &&
base16-builder -s $theme -t vim-airline -b $background > ~/.vim/plugged/vim-airline-themes/autoload/airline/themes/base16_$theme.vim
sed -i -e 's/foo/eval sh ~/.config/fish/colors/base16-$theme.$background.sh/g' ~/Developer/dotfiles/config.fish
sed -i -e 's/foo/colorscheme base16-$theme/g' ~/Developer/dotfiles/init.vim
sed -i -e 's/foo/let g:airline_theme='base16_$theme'/g' ~/Developer/dotfiles/init.vim
fi
基本上,想法是脚本将生成使用此生成器传递的任何主题。
我曾尝试查阅此文档,但是我对regex并不熟练,因此,如果有人可以帮我,我将不胜感激。
我需要做的是,一旦生成脚本,sed
就会查找上述字符串,并用新生成的主题字符串替换主题。
试试这个 :
sed -i "s|\(eval sh ~/\.config/fish/colors/base16-\)\([^.]*\)\.\([^.]*\)\\(.*\)|\1$theme.$background\4|
" ~/Developer/dotfiles/config.fish
sed -i "s/\(base16\)\([-_]\)\([a-zA-Z]*\)/\1\2$theme/g" ~/Developer/dotfiles/init.vim
假设第二个sed命令中的主题是字母数字字符串。如果没有,您可以[a-zA-Z]
使用其他字符(例如[a-zA-Z0-9]
)来完成字符范围:。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句