17

emacsがすべてのZshキーを再マッピングせずに、emacsセッション内でZshを使用しようとしています。これにはアンチタームがかなりうまく機能することがわかりましたが、まだいくつか問題があります。で大量のジャンク文字が出力されていましたが、次の方法で修正できました。

## Setup proper term information for emacs ansi-term mode
[[ $TERM == eterm-color ]] && export TERM=xterm

しかし、それでもすべてが完全に機能するわけではありません。特に検索にCrのようなものを使用している場合、出力が画面外に描画されるのに問題があります。

私が見つけたのは、ウィンドウのサイズを変更しなくても正常に機能することです。私はそれを次のように再現することができます:

  1. クリーンを起動しますemacs -q
  2. 開始ansi-termして使用するzsh
  3. ウィンドウをフルスクリーンにする
  4. 画面いっぱいに出力する
  5. タイプC-r
  6. プロンプトは画面外に表示されます

オーバーシュートを補正するために、出力とミニバッファの間のスペースを大きくする方法があるのではないでしょうか。

他の誰かがZsh+Ansi-termを正しく機能させていますか?

4

4 に答える 4

16

MultiTermをお試しください。

これは、zshでうまく機能するように見える唯一のEmacsターミナルモードです。これにより、emacsによってキャプチャするコマンドと、ターミナルにルーティングするコマンドを簡単に設定できます。これまでのところ、デフォルト設定で十分です。

また、以下を.zshrcに追加して、Emacsがcdしながら現在のディレクトリを追跡できるようにします。

if [ -n "$INSIDE_EMACS" ]; then
  chpwd() { print -P "\033AnSiTc %d" }
  print -P "\033AnSiTu %n"
  print -P "\033AnSiTc %d"
fi
于 2012-04-06T22:46:52.417 に答える
3

うーん。おそらく20年間試したことはありませんが、ファンシーな編集が​​アンチターム内でうまく機能するのを見たことがないと思います。とにかくEMACSの方がはるかに自然なので、シェルモード(Mxシェル)を試したことがあるかどうかを尋ねます。

とはいえ、term.elファイルを読むと、ansi-termが独自に多くの管理を行っているように見えます。少なくともEMACS22.3では、1230行目から始まるrawモードコードという用語を確認することをお勧めします。

于 2008-12-15T04:13:40.627 に答える
1

これもかなり前から探していました。私にとっては、

;; ansi-term

(global-set-key "\C-x\C-a" '(lambda ()(interactive)(ansi-term "/bin/zsh")))
(global-set-key "\C-x\ a" '(lambda ()(interactive)(ansi-term "/bin/zsh")))

動作します。http://svn.assembla.com/svn/id774/scripts/dot_files/dot_emacs.d/elisp/global-set-key.elからこれを選びました 。

そのスクリプトには他にも良い点があると確信しています。追加のボーナス画面として、私にとっては emacs でうまく動作するようです。

于 2010-05-21T01:42:17.067 に答える
0

私はそれを考え出した。それはemacsの設定の問題でした。私の .emacs のこのビットの elisp が原因でした:

(custom-set-variables
 '(fringe-mode nil nil (fringe))
 '(fringes-outside-margins t t))

助けてくれてありがとう。

于 2008-12-15T22:36:35.753 に答える