MacVim で iso-2022-jp の半角バックスラッシュを含むファイルを保存すると全角になってしまう。
Tahoe (26.0) の MacVim (9.1.1887) で iso-2022-jp のテキストファイルを保存しようとすると、半角のバックスラッシュが全角になって保存されてしまいます。皆さんのところでも起きますでしょうか。もし解決法がわかるととても嬉しいです。
Tahoe (26.0) の MacVim (9.1.1887) で iso-2022-jp のテキストファイルを保存しようとすると、半角のバックスラッシュが全角になって保存されてしまいます。皆さんのところでも起きますでしょうか。もし解決法がわかるととても嬉しいです。
自分で再コンパイルするのは苦しかったのですが、homebrew の formula を上手にいじくったら、問題を回避した MacVim を得ることができました。記録用にやったことを書いておきます。環境は、Tahoe (26.2, M4) です。
brew install libiconv
HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source --verbose --debug gettext
HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source --verbose --debug macvim
以上で /opt/homebrew/opt/macvim/ の下に MacVim.app が作られます。これで JIS のファイルも心配せずに使えるようになり、とてもほっとしています。皆さま、いろいろな情報、実験など、ありがとうございました。
自分で再コンパイルするのは苦しかったのですが、homebrew の formula を上手にいじくったら、問題を回避した MacVim を得ることができました。記録用にやったことを書いておきます。環境は、Tahoe (26.2, M4) です。
brew install libiconv
HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source --verbose --debug gettext
HOMEBREW_NO_INSTALL_FROM_API=1 brew install --build-from-source --verbose --debug macvim
以上で /opt/homebrew/opt/macvim/ の下に MacVim.app が作られます。これで JIS のファイルも心配せずに使えるようになり、とてもほっとしています。皆さま、いろいろな情報、実験など、ありがとうございました。
勉強になりました。ありがとうございます。
ありがとうございます。はい、他のソフトを使えばもちろん大丈夫なのですが、こちら、メールからプログラミング、latex 文書まですべてを MacVim で行っているヘビーユーザでして、MacVim を使ったまま JIS ファイルをうまく扱える方法があったらと思っています。BigSur までではこの問題は起きていなくて JIS のファイルでも大丈夫でした。最近は UTF で書くことが多いので、そこまで深刻ではないですが、古い JIS で書かれたファイルを編集できなくなるのはきついなぁと思っています。
BigSur でうまく動いていた MacVim のバイナリをそのまま Tahoe に持ってきて実行しても問題が起きてしまったので、MacVim 側ではなくシステムの方の問題かなと思っています。iconv 周りの変更があったのかなと想像しますが、確かなことは何もわかっていません。
MacVim r182
https://github.com/macvim-dev/macvim/releases/tag/release-182
This update is still built against macOS 15 Sequoia, and does not contain any specific fixes or improvements for macOS 26 Tahoe. That will come in a future update.
このアップデートはmacOS 15 Sequoiaをベースに構築されており、macOS 26 Tahoe向けの具体的な修正や改善は含まれていません。今後のアップデートで対応予定です。
となっている様です。
>> MacVim 側ではなくシステムの方の問題かなと思っています。
「ヘビーユーザ」と自称されているのでしたら、関連の調査してからにされては如何でしょうか?
情報、ありがとうございます。
> 「ヘビーユーザ」と自称されているのでしたら、関連の調査してからにされては如何でしょうか?
すみません。ヘビーユーザというのは MacVim を激しく使っているというだけの意味です。問題は Sequoia でも起きていて、その前の OS は手元にないのですが、BigSur では起きませんでした。これまでに得られた情報は、BigSur で問題が起きなかったバイナリを Tahoe で実行すると問題が起きるというところまでです。いろいろ検索したのですが、何も見つけられなかったので、他の人のところでは起きていないのだろうかと思って尋ねた次第です。
ヒマだったのでやってみました。(笑)
Monterey、 MacVim r182 (Vim 9.1.1887) にて。
iso-2022-jpに文字コードを変えて。。。
:wq で保存
それをまずは、、mi で開くと・・・
まぁiso-2022-jpで普通に保存されてますね。
これをVimで読み込んでみます。
:e ++enc=iso-2022-jp ~/a.txt
全く同じように読み込めてますが。。。
悪いお知らせです。
macOS 15.7.3にMacVimをインストールし、検証しましたら、
文字化けすることを確認しました。
① \section{あ\emph{a}}を新規に入力し、setl fenc=iso-2022-jpで保存。
結果:ターミナルのcatで見ると、文字化けしています。
hexdump
0000000 735c 6365 6974 6e6f 1b7b 4224 2224 4021
0000010 281b 6542 706d 7b68 7d61 0a7d
② \section{あ\emph{a}}を新規に入力し、そのまま保存。
結果:ターミナルのcatで見ると、文字化けしていない。
③ ②を再度開き、setl fenc=iso-2022-jpで別名保存。
結果:ターミナルのcatで見ると、①と同じく文字化けしています。
macOS 15.7.3でも、使えない結果となりました。
今までの結果をまとめますと、
① macOS 15.7.3のMacVimで出力 (MacBook Air M4 2025)
00000000: 5c73 6563 7469 6f6e 7b1b 2442 2422 2140 \section{.$B$"!@
00000010: 1b28 4265 6d70 687b 617d 7d0a .(Bemph{a}}.
サクラエディタでは、問題部分は全角の\になる。
② macOS 10.15.7のMacVimで出力 (MacBook Pro 2012)
00000000: 5c73 6563 7469 6f6e 7b1b 2442 2422 1b28 \section{.$B$".(
00000010: 425c 656d 7068 7b61 7d7d 0a B\emph{a}}.
サクラエディタでは、問題部分は半角の\になる。
になりました。
Parallels Desktop 18 / Sequoia 15.3.2 環境下の MacVim で問題が再現できました。OS 標準搭載の vim (/usr/bin/vim) でも同様の問題が起き、さらに iconv も問題が起きるので libiconv に原因がありそうです。なお、Ventura と Sonoma では大丈夫でした。
gaitiro さんのところでは問題ないとなると、15.3.2 から 15.7.3 の間で修正が入った可能性もあるので、Tahoe を最新版にアップデートしてみてはどうでしょうかね。
なお、当方の Sequoia は 15.3.2 より高いバージョンに上げることができない (Parallels Desktop 18 上ではまともに動かなくなる) ので、確かめることができません...。
もし、Tahoe 最新版でもダメな場合は libiconv と MacVim を自分でコンパイルすれば問題が解決できるかもしれません。
ちなみに当方では Homebrew でインストールした libiconv なら iconv で問題なし。その libiconv を使うようにコンパイルした vim も問題は起きませんでした。MacVim も同様にビルドすれば良いかもしれませんが上手くいきませんでした。(ここで力尽きました...)
あと、別の案としては、MacVim で編集後に一旦 UTF-8 でファイルを保存し、(iconv ではなく) piconv で iso-2022-jp に変換。都度 piconv なので手間が増えますがお手軽かと。
皆さま、いろいろな実験や情報をありがとうございます。とても参考になります。
Hiro__S さん、もし簡単に書けるようでしたら、iconv で問題が起きることをどのようにしたら確認できるのか教えていただけませんか。手元でも実験してみようと思います。
homebrew に MacVim の formula があるので、それを少しいじったら自分でもコンパイルできるかなと思ったのですが、ちょっとハードルが高く、うまくいっていません。でも、libiconv の問題っぽいということであれば、もう少しあれこれ試してみようかと思います。
vim-muttユーザ さんによる書き込み:
iconv で問題が起きることをどのようにしたら確認できるのか教えていただけませんか。手元でも実験してみようと思います。
# ファイルを作成
echo '\\section{あ\\emph{a}}' > a1.txt
# utf-8 から iso-2022-jp に変換して a2.txt に書き出し
iconv -f utf8 -t iso-2022-jp a1.txt > a2.txt
TextEdit の環境設定で「ファイルを開くとき」を「日本語 (ISO 2022-JP)」にセットして
a2.txt を開く
または、
piconv -f iso-2022-jp -t utf8 a2.txt
#追記: piconv のところをちょっと変更しました
試して見ました。
echo '\\section{あ\\emph{a}}' > a1.txt
① Mac mini(10.13.6)のテキストエディット環境では、半角のバックスラッシュが2個ずつ表示されます。
② MacBookPro(10.15.7)のテキストエディット環境では、半角のバックスラッシュになっています。
③ MacBookAir(15.7.3 と 26.2)のテキストエディット環境では、全角のバックスラッシュになっています。
なお、macOS11〜14までは、実機を持っていないので、検証出来ません。
> ①
zsh で試してください。
それか、bash でこんな感じとか、
echo '\section{あ\emph{a}}' > a1.txt
外部コマンドの /bin/echo で
/bin/echo '\section{あ\emph{a}}' > a1.txt
> ③
これはちょっと分かりません...。
外部コマンドの /bin/echo でもダメですか?
/bin/echo '\section{あ\emph{a}}' > a1.txt
Hiro__S さんによる書き込み:
> ①
zsh で試してください。
それか、bash でこんな感じとか、
echo '\section{あ\emph{a}}' > a1.txt
外部コマンドの /bin/echo で
/bin/echo '\section{あ\emph{a}}' > a1.txt
> ③
これはちょっと分かりません...。
外部コマンドの /bin/echo でもダメですか?
/bin/echo '\section{あ\emph{a}}' > a1.txt
結果になります。
①の方は、1文字の半角のバックスラッシュの表示になりました。
③の方は、相変わらずの全角のバックスラッシュままです。
仮想環境の Sequoia を 15.7.3 に上げて試してみました。この環境では Parallels Desktop を介したホスト間との共有機能が全く動作しませんが、今回のことについてはなんとか検証できそうです。
まず、次のコマンドの結果についてですが、全角になることはありませんでした。(というか、そんなの常識的にあり得ないと思います。)
echo '\\section{あ\\emph{a}}' > a1.txt
次に、iconv。結果は前掲のとおり2番目のバックスラッシュが全角になります。
もしかして、iconv の結果が全角になるとおっしゃったのでしょうか?
MacVim で iso-2022-jp の半角バックスラッシュを含むファイルを保存すると全角になってしまう。