I am using zsh with oh-my-zsh on Ubuntu:14.04.
The shell autocompletes escape character with backslash when I paste a URL.
For example with environment variables:
$ wget http://{DEFAULT_IP}/index.html
It will become:
$ wget http://\{DEFAULT_IP\}/index.html
How can I disable this function?
update 2019-05-12:
new version(> 486fa10) oh-my-zsh have a configuration for this, add DISABLE_MAGIC_FUNCTIONS=true before source $ZSH/oh-my-zsh.sh:
DISABLE_MAGIC_FUNCTIONS=true
source $ZSH/oh-my-zsh.sh
via: https://github.com/robbyrussell/oh-my-zsh/commit/486fa1010df847bfd8823b4492623afc7c935709
Original answer:
This is a bug in zsh 5.1.1 ~ 5.2(current).
The plugin bracketed-paste-magic did not works in the zsh versions.
The issue is here:
I suggest you disable bracketed-paste-magic.
Comment these code from oh-my-zsh's ~/.oh-my-zsh/lib/misc.zsh solve the problem:
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
via
I ended up at this answer but still could not understand why pasting a URL was escaping characters like & ? [ ] and causing my curl commands to fail.
The culprit (for me) was iTerm2 on Mac.
To disable the behavior, go into iTerm2 > Preferences > Profiles > Terminal and UNCHECK Terminal may enable paste bracketing.
Make sure you do this for the correct profile.

If the URL is not quoted, the backslashes may be necessary, that's why zsh adds them (via url-quote-magic). If you do not like them, then quote the URL:
$ wget '
then paste the URL and type the ending quote:
$ wget 'http://{DEFAULT_IP}/index.html'
To disable the url-quote-magic feature entirely:
zstyle ':urlglobber' url-other-schema
EDIT: As of version 5.1, zsh supports bracketed paste in some terminals, in which case url-quote-magic is no longer involved (bracketed-paste-magic replaces it for pastes).
show my zsh version
echo $ZSH_VERSION
5.3
open misc.zsh
vim ~/.oh-my-zsh/lib/misc.zsh
you will see the following:
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
add the following line at the top of the file
DISABLE_MAGIC_FUNCTIONS=true
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With