假设我在这里定义了这些变量bashrc:
i='cgi-bin/internal';
e='cgi-bin/external';
f='cgi-bin/foo';
b='cgi-bin/bar';
ad='cgi-bin/admin';
#etc...
Run Code Online (Sandbox Code Playgroud)
当我在命令行上使用变量时vim $i/edit_TAB,它将扩展变量并且命令行上的输入变为vim /www/productX/subdomain_x/cgi-bin/internal/edit_(相应于我所在的任何站点)然后我TABTAB获得可能的完成.
没关系,功能不是问题.只是每次看到完整路径而不仅仅是变量的值会变得烦人.
有没有办法不在命令行上扩展bash变量而不影响功能?
是这样做的bash完成吗?
期望的结果$i不会扩展到它的价值(视觉上)或$i扩展到相对路径而不是完整路径.
我目前正在使用以下内容来捕获发送到终端的所有内容并将其放入日志文件中
exec 4<&1 5<&2 1>&2>&>(tee -a $LOG_FILE)
Run Code Online (Sandbox Code Playgroud)
但是,我不希望颜色转义码/杂乱进入日志文件.所以我有类似的东西,sorta工作
exec 4<&1 5<&2 1>&2>&>(
while read -u 0; do
#to terminal
echo "$REPLY"
#to log file (color removed)
echo "$REPLY" | sed -r 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' >> $LOG_FILE
done
unset REPLY #tidy
)
Run Code Online (Sandbox Code Playgroud)
除了read等待回车,这对于脚本的某些部分是不理想的(例如echo -n "..."或printf没有\n).
Jonathan Leffler回答的后续行动:
给出示例脚本test.sh:
#!/bin/bash
LOG_FILE="./test.log"
echo -n >$LOG_FILE
exec 4<&1 5<&2 1>&2>&>(tee -a >(sed -r 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' > $LOG_FILE))
##### ##### #####
# Main
echo "starting execution"
printf "\n\n" …Run Code Online (Sandbox Code Playgroud) 我有一个脚本,它读取HTML文件并用~%foo%~Perl设置的值替换出现的内容.像这样的东西:
<span class="~%classname%~">~%hi_mom%~</span>
Run Code Online (Sandbox Code Playgroud)
会在浏览器中产生这样的东西:
<span class="classyclass">Hello World</span>
Run Code Online (Sandbox Code Playgroud)
是的,所以我想使用Vim语法高亮来区分~%foo%~HTML中的出现.默认情况下,HTML语法突出显示将生成HTML元素的属性值Magenta,我希望该~%foo%~部分是DarkMagenta.我在正确的轨道上,因为如果我注释掉tokenQuoted线(或标记线),我会得到所需的结果,但是两个匹配和突出显示未注释,令牌突出显示会覆盖tokenQuoted突出显示.
syntax match token containedin=ALLBUT,htmlString,htmlValue '\~%[^%]\+%\~'
syntax match tokenQuoted containedin=htmlString,htmlValue '\~%[^%]\+%\~'
" tokenQuoted assumes htmlString/htmlValue (:highlight String) is Magenta
highlight token term=none ctermfg=White guifg=White
highlight tokenQuoted term=none ctermfg=DarkMagenta guifg=DarkMagenta
Run Code Online (Sandbox Code Playgroud)
我正在使用的文件是在默认html.vim通过
autocmd *.html ~/.vim/syntax/html.vimin 来源后获取的.vimrc.