21

我在 Ubuntu:14.04 上使用zshwith 。oh-my-zsh

当我粘贴 URL 时,shell 会使用反斜杠自动完成转义字符。

例如使用环境变量:

$ wget http://{DEFAULT_IP}/index.html
It will become:
$ wget http://\{DEFAULT_IP\}/index.html

如何禁用此功能?

4

4 回答 4

43

2019-05-12 更新:

new version(> 486fa10) oh-my-zsh 有一个配置,在DISABLE_MAGIC_FUNCTIONS=true之前添加source $ZSH/oh-my-zsh.sh

DISABLE_MAGIC_FUNCTIONS=true
source $ZSH/oh-my-zsh.sh

通过:https ://github.com/robbyrussell/oh-my-zsh/commit/486fa1010df847bfd8823b4492623afc7c935709


原答案:

这是 zsh 5.1.1 ~ 5.2(current) 中的一个错误。

该插件bracketed-paste-magic在 zsh 版本中不起作用。

问题在这里:

我建议你禁用bracketed-paste-magic.

注释掉 oh-my-zsh's 中的这些代码来~/.oh-my-zsh/lib/misc.zsh解决问题:

if [[ $ZSH_VERSION != 5.1.1 ]]; then
  for d in $fpath; do
    if [[ -e "$d/url-quote-magic" ]]; then
      if is-at-least 5.1; then
        autoload -Uz bracketed-paste-magic
        zle -N bracketed-paste bracketed-paste-magic
      fi
      autoload -Uz url-quote-magic
      zle -N self-insert url-quote-magic
      break
    fi
  done
fi

通过

于 2016-11-25T07:27:18.917 回答
10

我最终得到了这个答案,但仍然不明白为什么粘贴 URL 会转义字符& ? [ ]并导致我的 curl 命令失败。

罪魁祸首(对我来说)是 Mac 上的 iTerm2。

要禁用该行为,请进入iTerm2 > Preferences > Profiles > Terminal并 UNCHECK Terminal may enable paste bracketing

确保为正确的配置文件执行此操作。

iTerm2 - 禁用粘贴括号

于 2020-02-07T18:24:45.293 回答
9

如果 URL 没有被引用,反斜杠可能是必要的,这就是 zsh 添加它们的原因(通过url-quote-magic)。如果您不喜欢它们,请引用 URL:

$ wget '

然后粘贴 URL 并输入结尾引号:

$ wget 'http://{DEFAULT_IP}/index.html'

要完全禁用该url-quote-magic功能:

zstyle ':urlglobber' url-other-schema

编辑:从 5.1 版开始,zsh 在某些终端中支持括号粘贴,在这种情况下url-quote-magic不再涉及(bracketed-paste-magic将其替换为粘贴)。

于 2014-09-02T11:57:57.123 回答
1

显示我的 zsh 版本

echo $ZSH_VERSION
5.3

打开 misc.zsh

vim ~/.oh-my-zsh/lib/misc.zsh

您将看到以下内容:

autoload -Uz is-at-least

# *-magic is known buggy in some versions; disable if so
if [[ $DISABLE_MAGIC_FUNCTIONS != true ]]; then
  for d in $fpath; do
    if [[ -e "$d/url-quote-magic" ]]; then
        if is-at-least 5.1; then
            autoload -Uz bracketed-paste-magic
            zle -N bracketed-paste bracketed-paste-magic
        fi
        autoload -Uz url-quote-magic
        zle -N self-insert url-quote-magic
      break
    fi
  done
fi

## jobs
setopt long_list_jobs

env_default 'PAGER' 'less'
env_default 'LESS' '-R'

## super user alias
alias _='sudo'

## more intelligent acking for ubuntu users
if which ack-grep &> /dev/null; then
  alias afind='ack-grep -il'
else
  alias afind='ack -il'
fi

# only define LC_CTYPE if undefined
if [[ -z "$LC_CTYPE" && -z "$LC_ALL" ]]; then
    export LC_CTYPE=${LANG%%:*} # pick the first entry from LANG
fi

# recognize comments
setopt interactivecomments

在文件顶部添加以下行

DISABLE_MAGIC_FUNCTIONS=true
于 2019-07-17T03:15:21.427 回答