这是一个不太可能的尝试,但我想知道是否有一种方法zsh
可以在某些命令中自动引用该行的其余部分。例如,对于命令he
he (foo*bar + baz)^2
我希望它能够像我写的那样进行解析
he '(foo*bar + baz)^2'
原因是我喜欢使用 Perl 或 Haskell 来完成某些任务,而且我不喜欢担心引用(特别是因为有时我有理由在表达式中使用单引号)。
答案1
我认为rc_quotes
这个选择已经足够好了。
RC_QUOTES
Allow the character sequence `''' to signify a single quote
within singly quoted strings. Note this does not apply in quoted
strings using the format $'...', where a backslashed single quote
can be used.
但如果您愿意,您可以编写自定义接受行小部件来为您自动报价。
这是一个例子,它将引用后面的所有内容python -c
:
function quote-accept-line() {
local -a starts_with=("python -c ")
for str ($starts_with) {
if [[ ${(M)BUFFER#$str} ]] {
BUFFER=$str${(qq)BUFFER#$str}
}
}
zle accept-line
}
zle -N quote-accept-line
# bind it to "Enter"
bindkey "^M" quote-accept-line
将这些代码复制到您的~/.zshrc
。