cmd(ポイントインタイム)機能に合わせて上下キーをカスタマイズします

cmd(ポイントインタイム)機能に合わせて上下キーをカスタマイズします

上下キーが cmd と同じになるように Bash をカスタマイズするにはどうすればよいですか?

例えば

$echo command1
$echo command2
$echo command3
$echo command4

Bash と cmd の両方で、、、を押すとが実行されます。ENTERecho command2

ただし、その後に cmd で下矢印キーを押すと、その後のコマンドに直接移動しますecho command3。つまり、 です。Bash で下矢印キーを押しても何も起こりません。cmd は時点の履歴を保持しますが (Web ブラウザーの [戻る] ボタンと [進む] ボタンに似ています)、Bash は保持しません。

cmd の場合も同様に、cmd で上矢印キーを 2 回押すと が戻りますecho command1が、Bash で同じ操作を行うと が戻りますecho command3

以前順番に入力した一連のコマンドを省略したい場合がよくあります。cmd では、履歴をスクロールしてシーケンスの最初のコマンドまで戻り、、、、、、、... と入力できるので非常に便利です。ENTERENTERENTER

~/.inputrcしかし、Bash で同様の方法を見つけることができません。これを実現するために、何らかの方法で他のファイルを変更することは可能ですか?

答え1

個人的には、bash の履歴に慣れているので、それをしたくないのですが、人々がそうしたい理由はわかります。私は以前、職場の同僚のためにこれを調べましたが、その同僚は *nix を初めて使い、xterm で DOS のような機能を必要としていましたが、その時も今も、解決策はないようです。

もう一度徹底的に検索してみましたが、以下の点を除いて明らかなことは何も見つかりませんでした。

不思議なことに、cmdをbashのようにする方法はたくさんあります。例えば、Windows コマンドプロンプト用の Bash 履歴のような機能、しかし悲しいことにその逆ではありません

主な問題は、(過度に)簡単に言えば、カーソルキーの機能(およびそれが履歴とどのように相互作用するか)がBashのソースコードに組み込まれており、スクリプト、エイリアス、シェル関数ではその事実を上書きできないことです1。必要なのは書き直しbash には、さまざまな [切り替え可能な?] カーソル キー機能が組み込まれており、いわば「DOSBash」のようなものです。

ニッチな市場が満たされるチャンスがあり、最終的には誰かがそのニーズを満たすことになるかもしれませんが、私はあまり期待しないほうがいいと思います。


1もし私が間違っていて、単純なリソース ファイルの変更によってカーソル キーの機能をオーバーライドすることが可能であれば、どなたかが私に正しいことを教えてくだされば幸いです。

答え2

私が使っているトリックは、単に同じ回数繰り返すことです

$ echo command1
$ echo command2
$ echo command3
$ echo command4

echo command 2からまでのシーケンスを繰り返したい場合は、まで 3 回押して、 までもう一度 3 回echo command4押して、 までもう一度 3 回押して、 までもう一度 3 回押します。echo command2echo command3echo command4

したがって、N 回押して履歴の N 項目に戻った場合、もう一度 N 回押すと、実行した新しいコマンドが挿入されるため、そのたびに次のコマンドに進みます。

関連情報