it-mure.jp.net

画面内でemacsを実行している

  1. Screenrcファイルがありますが、画面内でemacsを実行すると競合が発生します。たとえば、emacsのバッファ間を移動する場合、前後に移動する代わりにCtrlキーを押しながら右矢印/左矢印を押すと、一部の文字が5C、5Dなどのバッファに送信されます。この問題は、screenrcファイルなしでscreenを呼び出した場合でも発生します。しかし、少なくとも他の対立はありませんでした。しかし、誰かがこれを修正する方法を教えてくれたらとてもありがたいですか?

  2. Screenrcファイルに独自のバインディングがあり、それを使い続けたいので、screenrcファイルを保持することを考えていましたが、新しい画面でemacsを起動したい場合は、screenrcを使用しません。 screenを呼び出しているときにscreenrcを使用しないようにする方法はありますか?今まで、emacsを起動するときにscreenrcファイルの名前を別の名前に変更して管理してきました。

  3. 私がscreenを使用しているように、emacs自体がscreenとして機能し、リモートsshセッションがダウンするたびにemacsセッションが終了しないようにする方法はありますか? emacsクライアントとemacsサーバーに関するドキュメントをいくつか見つけましたが、あまり理解できませんでした。誰かがemacs内にセッションを保存して復元する方法を教えてくれれば、emacsプロセスを再び復元できるように、可能であればemacsのscreenを使用する必要がないようにできれば幸いです。

4
pineapple

私はあなたの質問#3についてのみ入力しました。

Emacs 23の時点で、emacsにはデーモンモードがあり、画面内でemacsを実行する必要がなくなりました。起動後の最初のログイン時に、ターミナルでemacs --daemonを起動します。これにより、バックグラウンドでemacsが起動します。次に、emacsを使用する必要があるときはいつでも、emacsclient -ncを実行してemacsセッションへのXウィンドウを取得するか、emacsclient -tを実行してターミナルセッションを取得します。

複数のクライアントが幸せに共存できます。私は日常的に職場のワークステーション画面でXクライアントを実行し、自宅からsshログインを介してXクライアントを実行し、電話でターミナルクライアントを実行しています。すべてが同じemacsプロセスと通信し、すべてのバッファーと他の状態はそのままです。また、電話のssh接続が切断された場合でも、再度ログインした後、中断したところから続行できます。

画面のキーバインドについて、最初の2つの質問に役立つほど十分にわかりません。

9

1)これは、Emacsが端末から送信されたエスケープシーケンスをインターペットする方法と関係があります。これは楽しいものです! input-decode-map を構成する必要があります。たとえば、.emacsファイルで次の関数を定義します。

(defun terminal-init-screen ()
  "Terminal initialization function for GNU screen."
  (when (boundp 'input-decode-map)
    (define-key input-decode-map "^[[1;5C" [(control right)])
    (define-key input-decode-map "^[[1;5D" [(control left)])))

(上記の例の^[notではなく、キャレットの後に開始ブラケットが続くことに注意してください。これは単一のescape次のように入力する文字: C-q ESC。)

この関数は、画面内で実行されているEmacsによって魔法のように呼び出されます。

2)-cオプションを指定してscreenを呼び出し、デフォルトの.screenrcとは異なるファイルを指定できます。したがって、画面内でEmacsを実行するときにのみ適用したい画面の特別な構成がある場合は、それらをファイル.emacs-screenrcに入れて、次のように画面内でemacsを実行できます。

screen -c .emacs-screenrc emacs

このファイルは空である可能性があることに注意してください。

3)emacsでセッションを管理するのは面倒な場合があります。既成のEmacsは デスクトップ保存モード を提供していますが、私は個人的には使用していませんが、さまざまなレポートを読んでいます。あなたはそれを試してみたいかもしれません。代替アプローチの概要は Emacs wiki にあります。

そもそもセッション管理の代わりに、Emacsをサーバーとして実行し、emacsclientで接続することもできます。どのドキュメントを見たかはわかりませんが、GNUの公式Emacsドキュメントは通常非常に優れています。それを見てください:

http://www.gnu.org/software/libtool/manual/emacs/Emacs-Server.html#Emacs-Server

8
Thomas

#1の場合

画面内からそのようなemacsを呼び出してみてください:

TERM=xterm emacs -nw somefile

CTRL +矢印が意図したとおりに機能するようになりました

3
Fergie

3)の一部を使用する別の方法は、trampを使用することです。trampを使用すると、コンピューターで実行されているEmacsを使用して、サーバー上のファイルを編集できます。開くだけです/ssh:[email protected]:/path/to/remote/file

これは、たとえば他の「リモート」使用にも使用できます。

  • /Sudo::/etc/bla Sudoを使用して編集する場合、
  • /ftp:[email protected]:/path/to/remote/fileftpを使用してリモートファイルを編集するには...

trampは必要に応じてssh接続を再開し、trampを使用してリモートホスト(VCSなど)でプログラムを実行することもできます。

0
Rémi