書いています~/.bashrc文書。
Alt-cをCtrl-uにバインドしたいです。
だからAlt-cを押します。 Ctrl-u機能を実行する必要があります。
Ctrl-u は端末のテキストを消去します。今Alt-cを押す必要があります。
次のテキストがあります。
# Avoids default mapping.
# set bind-tty-special-chars off
# Solves error: 'bind editing not enabled.'
# But prevented me from using Control-p/n.
set -o vi;
# Up Directory (Alt-j)
bind '"\ej": "cd ..;\r"';
Alt-jをコードに正常にバインドする「CD..;」
しかし、AltをCtrlマッピングにマッピングする方法がわかりません。
おそらく「と同じだろう。セット -o vi「しかし、バインディングエラーが発生しないと削除できません。また、設定を解除してください。」セット -o vi「ターミナルでもうタブを押すことができないという副作用があります。また、emacsとviのいずれかを選択するだけだそうです。だから、単に-o viに設定することができれば、将来のために考えます。わかりました。
set -o vi 以前は以下を試してみましたが、うまくいきません。
# Clear Text (Alt-c)
bind '"\ec": "Control-u:"';
でも構いません。
Alt-cをCtrl-uにマッピングする方法は?
答え1
bind
readline関数にキーバインディングを使用する必要があります。bind -p
現在のバインディングをすべて一覧表示し、次のものを含める必要があります。
"\C-u": unix-line-discard
したがって、同じ機能を呼び出すには、次のようにします。
bind '"\ej":unix-line-discard'
答え2
Ctrl+コマンドと挿入モードでuウィジェットを呼び出す:unix-line-discard
vi
bash-5.2$ set -o vi
bash-5.2$ bind -pm vi-command | grep -iw c-u
"\C-u": unix-line-discard
bash-5.2$ bind -pm vi-insert | grep -iw c-u
"\C-u": unix-line-discard
+をバインドする同じウィジェットを呼び出すことで、Alt同じことを行うことができます。c
bind -m vi-command '"\ec": unix-line-discard'
bind -m vi-insert '"\ec": unix-line-discard'
または文字に翻訳する^U
:
bind -m vi-command '"\ec": "\C-u"'
bind -m vi-insert '"\ec": "\C-u"'