私は走っていますratpoison
。emacs
キーバインディングを介して実行中です(したがってxtermはありません)。その後、誤ってCtrl-Zを押し、emacsが消えました(emacs iconify-or-deiconify-frame
)。私はネズミを離れてmwm emacsに行ったとき、それが再び前景に戻ったので、それがまだそこにあることを知っています。しかし、xtermを起動して%emacs
bashを実行するとbash: fg: %emacs: no such job
。
ネズミからemacsアイコンをキャンセルする方法は?
(この記事はたくさん修正されました)
答え1
サブシェル#1のプロセスをバックグラウンドにしてサブシェル#2のフォアグラウンドに戻すことはできません(次のような追加ツールを使用しない場合)。レプテル)。
あなたの場合は、端末で実行していないし、Ctrl+Z
端末にない場合は動作が異なります。私の考えでは、あなたがCtrl+Z
別の「魔法」を行っていると思います。ネズミの主キーバインディングリストにもありません。おそらく、Ctrl+Z
設定にどのような制限があるかを調べる必要があります。
編集する
~からEmacs マニュアル:
Czは、EmacsがXサーバーと直接通信し、独自のプライベートXウィンドウを作成するときに異なる意味を持ちます。独自のXウィンドウを使用するアプリケーションを停止するには意味がなく、役に立ちません。代わりに、Czは選択したEmacsフレームを一時的にアイコン化(または「最小化」)するiconify-or-deiconify-frameコマンドを実行します(P.フレームとX Windowsのセクションを参照)。その後、ウィンドウマネージャを使用してシェルウィンドウに戻ることができます。
Alt+Tab
開いているアプリケーションからemacsにアクセスできる必要があります。おそらく、ラットを使用して最小化されたフレームを回復するための別の方法があります。または、Alt-Tab
ラット薬に追加するには、以下を編集します.ratpoisonrc
。
definekey top M-Tab next
definekey top M-ISO_Left_Tab prev
そしてrpを再起動してください。
答え2
Ctrl+ZはEmacsコマンドです。ウィンドウの最小化(Emacsはウィンドウを「フレーム」と呼びます)。技術的には、これはターミナルウィンドウでコマンドを一時停止するためにCtrl+を使用することとは何の関係もありませんZ(しかし、Emacsデザイナーはタスクがやや似ているので、対応するショートカットを選択しました)。
通常、ウィンドウマネージャは最小化されたウィンドウのリストをどこかに表示します。もともと「どこか」はデスクトップのアイコンだったので最小化をアイコン化ともいいます。多くのウィンドウマネージャは、リストから選択するなど、最小化されたウィンドウを最小化解除する別の方法を提供します。
ウィンドウマネージャがこの機能を提供していない場合は、コマンドラインからこの機能を実行できます。最新バージョンwmctrl
そうするために使用できますwmctrl -x -Y Emacs
。最新バージョンxdotool
そうするために使用できますxdotool search --classname Emacs windowmap
。
Emacsサーバーを起動した場合は、Emacsの復元ウィンドウを使用できますemacsclient -c '(make-frame-visible)'
。
将来の予期しない状況を回避するには、ファイルに次の行を追加して~/.emacs
最小化する前に確認メッセージを表示できます。
(defadvice iconify-frame (around iconify-frame-confirm)
(if (y-or-n-p "Really iconify this frame?")
ad-do-it))
C-z
バインディングは端末で役に立ちますので、オーバーライドしません。アイコンをRatpoisonに役立つ他のものに置き換えることもできます。また、emacsclient
以下(server-start)
を使用してコマンドを実行できるようにEmacsサーバーを起動します.emacs
。
答え3
GitリポジトリでRatPoisonのソースを見ています。デフォルトでは、ウィンドウがアイコン化されたというイベントを受け取ったら、ウィンドウを再インポートしてグローバルリストに入れます。とのunmap_notify
機能を確認してください。events.c
withdraw_window
manage.c
withdraw_window
ウィンドウを一種のグローバルリストに入れます。list_move_tail(&win->node, &rp_unmapped_window);
の行を参照してくださいwithdraw_window
。
rp_unmapped_window
おそらく、新しいタスクを復号化し、特定のキーバインディングに割り当て、そのリストからウィンドウを表示し、XLIb呼び出しを実行してアイコン化を解除して再度有効にすることはそれほど難しくありません。 (ランダム選択のためにアイコン化されたウィンドウのリストをレンダリングするなど、素晴らしい作業を行う必要はありません。)
答え4
基本的なネズミのキーバインディング:
Ctrl++ウィンドウを非表示t Ctrlにします。Enterratpoison
Emacs Gui
underは+ratpoison
の後ろにも隠されています。Ctrlz
Ctrl+t Enter隠しウィンドウを復元します。