
c-<cr>
zshからポイントへの挿入をどのようにバインド(たとえば)しますか?&>/dev/null &<cr>
urxvtを使用しています。
答え1
Ctrl2つのステップがあります。ターミナルエミュレータで+に対して別のエスケープシーケンスをエクスポートする必要があり、Returnそのエスケープシーケンスを入力するときに実行するアクションをzshに通知する必要があります。
端末のアプリケーションは一連のバイトを受け取り、そのほとんどは印刷可能な文字または制御文字。ほとんどのファンクションキーとキーコードは、エスケープ文字と押されたキーをエンコードする複数の文字で構成されるエスケープシーケンスでエンコードする必要があります。バラよりキーボード入力とテキスト出力はどのように機能しますか?背景の詳細をご覧ください。Ctrl+標準エスケープシーケンスがありませんReturn。ほとんどの端末((U)rxvtを含む)は通常のようにCR文字を送信しますReturn。したがって、Urxvtに別のエスケープシーケンスを送信するように指示する必要があります。 Xリソースファイル(~/.Xresources
- を使用してロードxrdb -merge ~/.Xresources
)に以下を追加します。
URxvt.keysym.C-Return: \033[27;5;13~
zsh でカスタムコードをキーにバインドするには、コードを関数に記述し、関数を zle ウィジェットとして宣言します。zle -N
。あなたの中カスタムウィジェット、可変BUFFER
編集中の行の内容を含みます。CURSOR
カーソル位置を含みます。カーソルの周囲にテキストを挿入するには、より便利な変数があります。LBUFFER
カーソルの前に挿入するか、前にテキストを追加します。RBUFFER
カーソルの後ろに挿入します。
私の考えでは、あなたがしたいのは、行の末尾にテキストを追加し、現在のコマンドを実行することです。現時点では、コマンドの実行はCR文字を挿入して実行されません。これは単にコマンドにCRを挿入するだけです。通貨ウィジェットaccept-line
(デフォルトはCRにバインドされています)コマンドを実行します。
accept-line-run-in-background-with-output-hidden () {
BUFFER+=" &>/dev/null &"
zle accept-line
}
zle -N accept-line-run-in-background-with-output-hidden
bindkey $'\033[27;5;13~' accept-line-run-in-background-with-output-hidden