ターミナルでどのようにコマンドをキーに割り当てますか?


10

端末で使用する単語に特別なキーの組み合わせを割り当てるソリューションはありますか?たとえば、lessコマンドは非常に便利で、ia lotを使用して別のプロセスの出力をパイプします。

アイデアは、異なるコマンドを書き込むために割り当てられた端末使用でのみアクティブな特別なキーの組み合わせをセットアップすることでしょうか?ターミナルウィンドウでCtrl+ Lを押すと、

| less

またはCtrl+ G

| grep

注:コマンドラインに文字を追加するだけで、最終的には実行されません。タブ補完と同様の方法ですが、より具体的です。

回答:


10

はい、bindコマンドを使用できます

bind '"\ey"':"\"less \C-m\""

これは、Alt-eをlessコマンドにマップして実行します(\ CmまたはCtrl-mを使用)。

おそらく| あなたはそれを脱出する必要があります。

bind '"\ey"':"\"\|less \C-m\""

コマンドラインに追加するだけの場合は、* \ Cm \ "を削除します"

すでにいくつかのバインディングが定義されているので注意してください:

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L                Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Let’s you search through previously used commands
Ctrl + C    Kill whatever you are running
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T     Swap the last two words before the cursor
Alt + F     Move cursor forward one word on the current line
Alt + B     Move cursor backward one word on the current line
Tab     Auto-complete files and folder names

上記のように、CtrlキーはCmで作成されているため、次のようにCtrl-gでlessコマンドを開始できます。

バインド '"\ Cg"': "\" \ | less * \ Cm \ ""

Altのキーコード(ALTのみ)を取得するには、シェルからreadコマンドを使用できます。

@~$ read
^[y

^ [yは\ eyに等しい

詳細については、この質問はstackoverflowでも回答されています:

/programming/4119991/bash-call-script-with-customized-keyboard-shortcuts


どうすれば、バインディングを削除したり、すべてのバインディングを表示したりできますか?
NES

最初の2つの例に問題があります。バインド構文で割り当てた後、常にワイルドカードも出力します。
NES

bind -pおよびbind -Pは、すべてのバインディングを表示します。私は星と間違えました...答えを更新しています
tmow

どうもありがとう。おそらくあなたは魚で同じ目標を達成する方法を知っていますか?これまでのところ機能しますが、問題は、デフォルトで文字列をコマンドラインに追加するだけでなく、fishが自動的にコマンドを実行するように見えることです。これがマンページですlinux.die.net/man/1/bind残念ながら、この例は私の場合にはあまり役に立ちません。
NES

これはすでに組み込み関数です。fishshell.com/ user_doc / index.html#editorがAlt-pショートカットを訴えていると思います
tmow
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.