ksh93 中空のプロンプトの上矢印

ksh93 中空のプロンプトの上矢印

これは説明を要求するか、文書を要求することです。

私はKornShell93(kshMac OS Xなどksh93)ユーザーです。私は対話型シェルとしての相対的な単純さとスクリプト機能のためにこのシェルが好きで、コードがより自由になった2000年からこのシェルを使用してきました。とオプションがvi設定されている編集モードで使用しています。viviraw

ksh93コマンドラインにコマンド入力を開始してから、キーを押すと、Up-arrowコマンドライン履歴から一致する最新のコマンドラインを取得できるきちんとした機能があります。これに関するドキュメントと編集モードでバインドする方法を見つけることができます。問題ありません[count][Avi

ただし、Up-arrow空のプロンプトを押すと、最後に実行されたコマンドが最初に表示され、以前に探していたコマンドプレフィックスを介して繰り返しが開始されます。これは私を無限にいじめます。

例:

次の3つのコマンドを実行します。

$ ls -l
$ ls -ld test
$ ls -ld testdir

入力lsしてUp-arrow3回押すと逆の順に循環します。

後でより多くのコマンドが実行されましたが、履歴検索も呼び出しもありませんでしたls

$ cc -o testrun mytest.c
$ man strncmp

今一度押すとUp-arrowが表示されますman strncmpUp-arrowもう一度押すと、コマンドの代わりに前のls -ld testdirコマンドが表示されます。ls -ld testcc -o testrun mytest.c

Up-arrow以前に使用したプレフィックスを検索せずに、あらかじめコマンドラインに何も入力せずに最近の履歴を繰り返すことができるように、この問題を「修正」する方法についてのガイドラインを探しています。上記の動作が文書化された位置へのポインタでもよいでしょう。

編集する:

マニュアルksh93によると

[count]k 前のコマンドを取得します。入力するたびに前のkコマンドにアクセスされます。

/string 含まれている前のコマンドの履歴から戻るstring。またはによってString終了しました。前に行くと、一致する行は次から始める必要があります。 null の場合、前の項目が使用されます。RETURNNEW LINEstring^stringstringstring

[count][A カーソルが行の末尾にある場合は、現在の行の内容を/ 設定するのと同じです。stringそれ以外の場合と同じですk

これは実際にいいえなぜ私がそれを説明してください最初man strncmp(押すようにk)持ってきてそれからls -ld testdir上記の例を入力してください。マニュアルに書かれているものを考えてみると、私はls -ld testdir最初のプレスを好んだでしょうUp-arrow(しかし、もっと迷惑になります)。

ベストアンサー1

これは文書化された動作であることがわかりました。 ksh93のマニュアルページから:

編集コマンドを検索します。このコマンドはコマンド履歴にアクセスします。

[count]k 前のコマンドを取得します。 kを入力するたびに前のコマンドにアクセスします。

[count]- kと同じです。

[count][Aカーソルが行の末尾にある場合は /withと同じです。ひも現在行の内容に設定します。それ以外の場合と同じですk

[count]j 次のコマンドを受け取ります。次の転送コマンドは各入力jからアクセスされます。

/ひも 含まれている前のコマンドの履歴から戻るひもひも新しい行で終了しますRETURN' or。もしひも前に ^あり、一致する行は次から始める必要があります。ひも。もしひもnullの場合、古い文字列が使用されます。

注:文字列を入力した後に上矢印を使用すると、検索文字列固定以前に入力したように行の先頭に移動します^

例:

$ ls[Up-Arrow]

等しい

$ [ESC]/^ls

おすすめ記事