在 zsh 中自动引用参数

在 zsh 中自动引用参数

这是一个不太可能的尝试,但我想知道是否有一种方法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

相关内容