(ディスプレイの問題におけるEmacsの役割を明確にするために編集されました。)
私の現在のgnu-screen
セッションが何らかの理由で破損し、EmacsがUTF-8文字を正しく表示できません。
新たに開始されたgnu-screen
プロセスでは、EmacsはUTF-8文字を適切に表示することを確認しましたが、現時点では、破損したgnu-screen
セッションを新しいものに置き換えることは非常に混乱を招き、代わりに
この破損した
gnu-screen
セッションの問題をさらにトラブルシューティングし、うまくいけば修正する方法を探しています。
FWIW、問題を診断するためにこれまでに行ったことの説明を含め、以下に背景を詳しく説明します。
私はこのgnu-screen
セッションを数日前に私のOS Xワークステーションで開始しました
% screen -U
...(いつものように)。それ以来、私はこのセッションをいくつかのマシンから(おそらく最初に職場のワークステーションにssh
-した後)再接続しました。
% screen -U -dR
(繰り返しますが、これは私がいつもしていることです)。今朝正確に今朝、私のワークステーション(gnu-screen
プロセスが実際に実行されているマシン)で作業しました。
今日、このgnu-screen
セッションを作成してから初めて、ASCII以外のUTF-8文字を多く含むファイルを操作する必要がありました。そのとき、このgnu-screen
セッションは、これらすべての文字を?
として表示し、表示が使用できなくなったため、何らかの理由で破損したに違いないことを発見しました。
(すでに触れたように、これらのUTF-8が豊富なファイルは、新しく開始されたgnu-screen
セッションによって正しく表示されるため、表示の問題はここにある特定のgnu-screen
セッションにあると確信しています。 「破損」と呼んでいます。また、???
セッションを接続したすべての端末に「gnu-screen
display」が表示されることを確認したので、端末プログラムのホスティングに問題はありません。 gnu-screen
セッション。最後に、私alsoは、問題が特定のEmacsセッションにあるのではないことを確認しました:破損したgnu-screen
セッション、every新しいEmacsセッションは、UTF-8文字を?
として表示します。これは、特定のEmacsセッションでの問題に反対します。)
実行してutf8
がon
であることを確認しました
:utf8 on on
:info
の出力は次のとおりです。
(1,5)/(210,52)+10000 +(-)flow app log UTF-8 0(zsh)
そして、FWIW:
% /usr/local/bin/screen --version
Screen version 4.00.03 (FAU) 23-Oct-06
また、new
この問題をトラブルシューティングするために他に何ができますか?
PDATE: DravSloanとStephaneChazelasの両方が私のロケール設定について質問しました:
% locale
LANG=
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
現在、OS Xの場合、ロケール関連の変数は設定していません。
Linuxシステムでは、私の.zshenv
は設定されます
export LANG=en_US.utf8
export LC_ALL=en_US.utf8
...しかし、Darwinの.zshenvに同じ行を配置すると、「ロケールの設定に失敗しました」というエラーメッセージが表示されます。 Darwin/Lionの正しいロケール設定を見つける問題について、私は数時間頭蓋骨を叩いたことを漠然と覚えています。 「何も設定しない」が問題の「最低のひどい」解決策として浮上し、結局のところ、明示的なロケールがない場合でも、少なくとも新しいgnu-screen
セッションはUTF-8文字を正しく表示します設定。しかし、明らかにダーウィン/ライオンでロケールを適切に設定する方法を理解する必要があります...
PDATE2: OK、上記のエラーの理由を理解したと思います。ダーウィン/ライオンでは、文字列en_US.utf8
が無効です。代わりにen_US.UTF-8
にする必要があります。
実行時に同じ問題が発生しました:
git clone https://github.com/jwiegley/git-scripts.git
cd git-scripts
Perl git-forest
これをテストとして使用しました。基本的に、utf8が適切に設定されていれば、Nice行が表示されます。そうでない場合は、醜いボックスや文字を取得します。
解決策は、LC_ALL
をen_US.UTF-8
に設定する必要があることです[〜#〜] before [〜#〜]新しい画面セッションを開始します。スクリーンセッションを作成した後、私はそれをするのに疲れて、運がありませんでした。
これを実行するために私が実行した手順は次のとおりです。
1)locale
を実行して、現在の設定を表示します。私はこれを手に入れました(これは私が問題を抱えていた理由を説明しています:
LANG=en_US.UTF-8
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C
2)新しい画面セッションを作成する前に、LC_ALL
をen_US.UTF-8
に再定義する必要があります
csh
Shellを使用している場合
setenv LC_ALL en_US.UTF-8
bash
Shellを使用している場合
export LC_ALL="en_US.UTF-8"
)locale
を再度実行して、LC_ALL
が正しく設定されていることを確認します。
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
4)新しい画面セッションを実行してgit-forest
テストを実行すると、Nice行が表示されます