愚か

愚か

デフォルトでは、次のようにコマンドプロンプトに情報を入力するときにmuttプロンプ​​トを消去することができます。Ctrlg手動:

^G該当なし停止

この関数をEscapeabort手動または源泉

私は私から試してみました.muttrc

バインディングエディタ<esc>がハングしました。

しかし、エラーが発生します。

/home/jason/.mutt/muttrcのエラー、行143:中断:マップにその機能がありません。

( )のような別のマップを試してみましたが、genericたとえば他の仮想関数も試してみましたclearが、役に立ちませんでした。

Escapeプロンプト行を消去するにはどのようにバインドする必要がありますか?

答え1

愚か

これはキーバインディングを使用することは不可能です。Ctrl-Gマクロまたはキーバインディング処理よりも低いレベルでmuttにハードコードされています(mutt_getch()muttからエラーを返すすべてのユーザー入力のコアであるmuttのソースコードを参照^G)。

macro editor \e '^G'

いいえ。

^Gあなたができることは、押したときに送信されるように端末を設定することですEscape

xtermの使用:

xterm -xrm 'XTerm.VT100.translations: #override <KeyPress> Escape: string(0x7)'

以下を使用しても、screenこれを行うことができます。

screen -X bindkey $'\e' stuff $'\a'

muttを呼び出す前と後に復元します(残念ながら、画面の各画面ウィンドウにキーバインディングを持てないようです)。また、Eメールエディタがviの場合でも問題になります。

ネオムート

リリース後20200313$abort_keyデフォルト値を変更する構成変数がありますCtrl-G

答え2

私にとっては、脱出をバインドするのも非常に悪い考えのようですControlG。私はハイブリッドソリューションを探すためにここに来ましたが、そのようなソリューションがないようですので、この質問を偶然発見する人のために私がしていることに対する答えを提供します。これは最適ではありませんが、他のプログラムには影響しません。

macro editor \e "<enter><shell-escape>xdotool key control+g<enter>"

または

macro editor \e "<enter><shell-escape>xsendkey Control+g<enter>"

xdotoolやxsendkeyのようなものを使ってcontrol + gを偽にすることはうまくいき、他の場所から逃げることを妨げません。行エディタを終了すると視覚的な遅延がありますが、インデックスバインディングはすぐに機能し、インデックスバインディングを使用すると視覚的な遅延が消えます。最初の入力が必要なので、muttは「....」のみを入力し、タイトルや検索語などには入力しません。

答え3

NeoMuttの場合、バージョン2020-03-13以降、次のことができます。

set abort_key = "<Esc>"

また、次のように起動スクリプトに次の行を追加することをお勧めします.bashrc

export ESCDELAY=0

理由、引用ここ、はい

ブレークキーとして使用する場合は、環境変数ESCDELAYをより低い値または0に設定することもできます。これにより、ncursesがターミナルエスケープシーケンスの開始と単一のキー押下を区別するのを待つ時間が短縮されます。デフォルトの時間は1000ミリ秒なので非常に目立つ。

このオプションを指摘してくれた@Stéphane Chazelasに感謝しますabort_key。観客には、別の詳細な回答が提供される方が良いと思います。

答え4

この解決策はあまりにも悪く、作者はそれを取り除くためにMuttのソースコードを編集する方が良いでしょう。 ^G

Ctrl警告:このソリューションは、OSX、Emacs、および+を使用する他のアプリケーションと互換性がないようです。G

Muttでの最初の日以来、Vimで^ Gをほとんど間違って使用していました。それから私はVimで動作するように見えるようにしました。i3ウィンドウマネージャそしてxfce端末

次の行を追加してください~/.i3/config

bindsym --release Escape exec --no-startup-id xvkbd -xsendevent -text "\[Escape]\[Control]\[g]"

Vimで動作が停止する可能性が"\[Escape]\[Control]\[g]"あるため、それを使用する必要がありました。"\[Control]\[g]"

i3を使わないと使えそうです。xbindkeys押すと起動しますxvkbd -xsendevent -text "\[Escape]\[Control]\[g]"Esc

それは良い解決策ではありません。Esc一部のプログラムではキーが使用できなくなる可能性がありますが、少なくともここでは問題ありません。

編集する:

Ctrlこれで、+G部分を使用すると、Vimがファイルの場所を表示できるようになります。まだあまりに劇的なものはありません。

このリンクにはより良い解決策があるようですが、UrxVT: http://www.unixli.com/q/answers-urxvt-map-esc-key-to-key-sequence-83211.html

関連情報