zsh
で私はできる Esch 任意のコマンドについて、このコマンドのmanページを取得し、manページャーを終了して、すべての引数を指定してコマンドを取得します。たとえば、私のシェルには次のように入力されます。
zsh# tar -czvf docs.tgz docs
を押すと、tar
の男性を呼び出すことができます Esch、任意の場所にカーソルを置きます。
今、私は同じことをしたいのですが、bashです。考えられる解決策の1つを以下に示しますが、他に解決策があるかどうかを知りたいと思います。
bind '"\eh": "\C-a\ef\C-k\C-f\C^Cman \C-y\C-m\C-y\C-y\ey"'
コマンドライン操作について話すときは、実際にはreadlineライブラリについて話します。リードラインバインディングの更新は、例のようにコマンドラインから、リードライン/etc/inputrc
のメインinitファイル(echo $INPUTRC
で確認)で実行するか、アカウント~/.inputrc
のローカルinitを作成することができます。まだルックアップしていない場合GNU readlineライブラリ( ここで試してください )
そうは言っても、ここにあなたの問題に対するいくつかの提案があります:
提案1
\eh
)のキーバインディングを検査し、そのバインディングをbashでアカウントにコピーできる可能性があります。一部の本当に賢い人々はそれらのバインディングをまとめました、そしてそれは微調整なしで働くかもしれません。bind -P
[生のバインディング出力に小文字のpスイッチを使用])を使用して、zshアカウントのアクティブなバインディングを表示します。提案2
その点で、上記の例は機能する可能性がありますが、少し調整する必要があります。これは私のために働いた
"\eh": "\C-a\C-kman \e1\e.\C-m\C-y\M-y"
バインディングを/ etc/inputrcに入れました。キーシーケンスctrl+x ctrl+r
を使用して、コマンドラインでinputrcを再度読み取る必要があります。
しかし、あなたの質問は、カーソルの下のWordに対してこれをどのように行うかです。これは私のために働いた:
"\eh": "\ef\eb\ed\C-y\e#man \C-y\C-m\C-p\C-p\C-a\C-d"
要するに、それはこのように機能します:
キーシーケンスの場合\eh
(ESC + h)
\ef\eb
)\ed\C-y
)。キルバッファに入れる必要があります。\e#
)\C-y\C-m
)\C-p\C-p
)。\C-a\C-d
)提案3
注:これまでこのオプションをバインディングとして実装しようとしたことはありませんが、コマンドラインで使用しています。これは、inputrcファイルまたはbashrcを介して設定できます。
set editing-mode vi
set -o vi
バインディングを実行するプロセスは、デフォルトのreadlineキーシーケンスに似ているようです。しかし、提案2の例は、正しい道を歩むはずです。