この記事はZOZO Advent Calendar 2023 #8 21日目の記事になります💁♂️
この記事で解決できること
ターミナル(iTerm, VScodeのターミナルも同様)にコピペしたときに勝手に" \ "が追加されてしまう問題を追加されないように修正し、解決していきます。
文字だけだとわかりづらいと思うので、このような現象です👇
- コピペ前
http://www.weather-from-the-future.com/forecast?date=2080-01-01&location=MoonBase
- コピペ後
http://www.weather-from-the-future.com/forecast\?date\=
2080-01-01\&location\=MoonBase
コピペ前とコピペ後で何が変わったのかというと"?", "&", "="の前に" \ "が追加されてしまっています...
この" \ "が勝手に追加されないように修正していきます👨💻
環境
- macOS Ventura13.6.2
- zsh 5.9
- oh-my-zsh
解決方法
さっそく、解決方法を書きます!!
"oh my zsh"関係のファイルが原因なので修正します。修正すると行っても、下記ファイル(misc.zsh)の中身を数行コメントアウトするのみで解決します🙌
# *-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
おつかれさまでした🎉 これで修正は完了です!!
(余談)なぜこの記事を書こうと思ったのか
修正自体は簡単です!!
しかし、日本語の記事を見つけることができず、英語の記事を呼んで解決したので少々時間がかかりました... 同士のためになればと思い書くことにしました👏
参考URL:https://github.com/ohmyzsh/ohmyzsh/issues/5569#issuecomment-453144639
原因
原因は、"oh my zsh"関係のファイルの設定でターミナルにコピペした特殊文字がエスケープシーケンスされてしまうところにありました。
今回の記事はここまで!! 良きzshライフを~~💁♂️
[おまけ] GPT先生に"エスケープシーケンス"について聞いてみた
エスケープシーケンスは、プログラミングやコンピューティングにおいて、特殊文字やコントロール文字を表現するために使用される方法です。
具体的には、エスケープシーケンスは特定の文字の前にバックスラッシュ(\)を置くことで、その文字が通常持つ特別な意味や機能を無効化(エスケープ)し、文字をリテラル(そのままの意味)として扱います。
例えば、ターミナルやシェルでコピペする際に、? や & といった特殊文字がコマンドや引数の区切りとして解釈されるのを防ぐために、これらの文字の前にバックスラッシュが追加されることがあります。これにより、これらの文字を文字通りの意味で扱うことができます。