2

私のプログラミングワークフローをemacsに合わせようとしているだけです。これまでのところ、shell-pop を発見しました。奇妙なコマンドを実行するために必要なときにポップアップするオンデマンド端末をとても楽しんでいます。

Emacs について私がこれまでに理解していることshellは、これは ansi 制御コードをサポートしない「ダム」端末であり、端末エミュレーターで複雑な UI を描画しようとする ncurses などと互換性がないということです。これが、シェルモードでlessorまたは similar を使用できない理由です。top

しかし、私は問題を抱えているansi-termようです。もちろん、 や を実行しても問題はありませlessgit logが、や など、 でnano実行すると正しく表示されないように見えるものがいくつかあります。その名前が何なのかよくわかりませんが、の出力は、最後の行に表示されているものをリアルタイムで更新し、変更されていないテキスト行をその行の上にスクロールすることを特徴としています。のようなものと、 のようなばかげたものの中間のようです。何とかしてansi-termapt-getnosetestsapt-getlesscatansi-termこれはまったく好きではなく、非常に文字化けした出力が得られます.1行だけですべてを出力するか、一般的に場所を失い、すべてをランダムに出力します。の場合nosetests、問題なく開始されますが、ライブラリが STDERR を吐き出すと、出力はすべて同じように地獄に落ちます。

いくつかいじると、 と をマッシュすることでこれを修正できるように見えますC-lRET、常に信頼できるとは限りません。

ここで何が起こっているか知っている人はいますか?ansi-termすべてを正しく表示できるように修正する方法はありますか? それとも、私が知らない他のモードの方がはるかに優れているのでしょうか? 理想的には、たとえば Gnome ターミナルのように、問題なく上記のすべてのプログラムを実行できるような、簡単に「正常に動作する」ものを望みます。

ありがとう!

4

3 に答える 3

3

この問題を解決するには、.emacs.el 全体をコメントアウトしてから、ファイル内のすべての行のコメントを解除して emacs を再起動しました。次の行だけが問題の原因であることがわかりました。

   '(fringe-mode 0 nil (fringe))

(この行は、custom-set-variables 内からフリンジを無効にします)。

これは Emacs のバグだと思います。フリンジを無効にすると、出力行が $COLUMN 列を超えるたびに term-mode の出力がひどく文字化けします。

とにかく、私はフリンジがあまり好きではありません.この問題を引き起こすことなく、少なくとも左フリンジを無効にすることができたようです:

(set-fringe-mode (cons 0 8))
于 2012-09-09T15:55:40.733 に答える
1

$TERMおそらく apt-get は、環境変数に基づいてさまざまなことを行います。を設定するとどうなりますTERM=dumbか? それで問題が解決する場合は、十分な機能をサポートしながらも機能する値が見つかるまで、さまざまな値を試すことができます。

于 2012-09-08T04:32:48.877 に答える
0

git 2.0.1 (2014 年 6 月 25 日) は、詳細メッセージを表示する際にダム端末をより適切に検出することに注意してください。
これにより、Emacs が git から受信したメッセージの一部をより適切に表示できるようになる可能性がfringe-modeありますが、上記で報告されたバグが主な原因であることは間違いありません。

Michael Naumovによるコミット 38de156を参照してください ( )mnaoumov

sideband.c: 非端末では ANSI 制御シーケンスを使用しないでください

サーバー側からサイドバンド #2 で受信された診断メッセージは、ANSI 端末制御シーケンス " \033[K" と共に標準エラーに送信されます。これは、各行の末尾に追加された行末まで消去されます。

ただし、一部のプログラム (Windows 用の GitExtensions など) は、端末制御シーケンスを理解せずにメッセージを読み取り、解釈および/または表示するため、エンド ユーザーにメッセージが表示されます。
これらのプログラムを支援するには、標準エラー ストリームが tty に送信されていないときに制御シーケンスをスケルチします。

于 2014-07-27T16:56:13.457 に答える