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 のファイルも心配せずに使えるようになり、とてもほっとしています。皆さま、いろいろな情報、実験など、ありがとうございました。
皆さま、いろいろな情報、ありがとうございます。やっと時間が取れたので、手元で実験してみました。Sequoia (15.7.2) でも Tahoe (26.2) でも、システムの /usr/bin/iconv (バージョン不明。--version の引数をサポートしていない) では \ が全角の\になってしまいますが、homebrew で入れた /opt/homebrew/opt/libiconv/bin/iconv や自分でソースからコンパイルした iconv(いずれも GNU libiconv 1.18)では、そのような変換は起きず半角の \ のままでした。
そうすると、なんとか MacVim がこちらでコンパイルした iconv を使うようにできれば良いのだろうと予想されますが、軽く MacVim のソースを眺めてみたところでは、iconv を指定するオプションは見当たりませんでした。もう少しあれこれ試してみようと思いますが、ちょっと手に負えないかもしれません。
vim (MacVim でなく) はこんな感じでできました。
git clone https://github.com/vim/vim
# /path/to は適宜変更
cd /path/to/vim
# これも適宜変更 (--prefix 以下は環境に応じて書き換える)
./configure \
--with-features=huge \
--enable-multibyte \
--enable-cscope \
--prefix "/usr/local/opt/vim" \
CFLAGS="-I/usr/local/opt/libiconv/include" \
LDFLAGS="-L/usr/local/opt/libiconv/lib" \
LD_RUN_PATH="/usr/local/opt/libiconv/lib"
make
make install
# 環境
仮想環境の Sequoia 15.3.2 (Intel)
ただ、MacVim は一筋縄ではいかないようです。(私はギブアップ)
以上ご参考まで。
そもそも、iso-2022-jp に半角(1byteコード)のバックスラッシュはありませんよ。
変換してくれてるんじゃないですかね。
ああ、すみません。ASCII コードの 0x5C (92) の円マークのことです。latex のファイルなどでたくさん使いますが、それを保存すると(どうも全角文字の後ろに出てくる円マークが)全角の 0xFF3C \になってしまいます。例えば \section{あ\emph{a}} などの場合、ふたつ目の \ が\になります。
>> 例えば \section{あ\emph{a}} などの場合
Tahoeのテキストエディットで入力し、
出力オプションで「iso-2022-jp」を指定し
書き出しても、問題ない状況です。
ありがとうございます。そのようにしてできた iso-2022-jp のテキストファイルを MacVim で開き、そのまま :wq で保存し直し、それをもう一度、開き直すとふたつ目の \ が\にならないでしょうか。
ありがとうございます。Monterey では起きないんですね。手元の Tahoe で同じことをしてみると、ふたつ目の画像で :wq a.txt をした時点で a.txt のふたつ目の \ が全角になってしまいます。
補足します。
xxdでの結果
00000000: 5c73 6563 7469 6f6e 7b1b 2442 2422 2140 \section{.$B$"!@
00000010: 1b28 4265 6d70 687b 617d 7d0a .(Bemph{a}}.
そもそも使ったことがないアプリなので亀どんさんが書かれている通り書き込み読み込みをしましたが問題ありません。
macOS 15.7.3 MacMini M1です。
ただ画面表示がこのように¥マークで出ますが。
>ターミナルのcatで見ると
あのぅ。。。。
ターミナルの表示文字コードは?
utf8のまま表示させて文字化けしてると言われても。。。。ねぇ
Windows機の最新のサクラエディタで確認したら、
MacVimで作成したファイルの内容は、
問題となっている箇所が全角の\になって表示されました。
又、macOS 10.15のテキストエディットで
iso-2022-jpにして保管したファイルは、
MacVimでは、化けました。(互換性がない模様です。)
これも、Windows機のサクラエディタでは、
半角の\になって表示されました。
macOS 10.15.7に最新のMacVimをインストールし、
同様のファイルを用意し、
WindowsPCのサクラエディタで開くと、
問題の箇所は、半角の\の表示になりました。(異常なしの結果)
外付けSSDにmacOS 15.7.3を新規インストールし、
真っ先にMacVimをインストールしても、
生憎、問題の部分は全角の\となりました。
③ は echo ではなく printf だとどうなりますか?
printf '%s\n' '\section{あ\emph{a}}' > a1.txt
MacVim で iso-2022-jp の半角バックスラッシュを含むファイルを保存すると全角になってしまう。