これは説明を要求するか、文書を要求することです。
私はKornShell93(ksh
Mac OS Xなどksh93
)ユーザーです。私は対話型シェルとしての相対的な単純さとスクリプト機能のためにこのシェルが好きで、コードがより自由になった2000年からこのシェルを使用してきました。とオプションがvi
設定されている編集モードで使用しています。vi
viraw
ksh93
コマンドラインにコマンド入力を開始してから、キーを押すと、Up-arrowコマンドライン履歴から一致する最新のコマンドラインを取得できるきちんとした機能があります。これに関するドキュメントと編集モードでバインドする方法を見つけることができます。問題ありません[count][A
。vi
ただし、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 strncmp
。Up-arrowもう一度押すと、コマンドの代わりに前のls -ld testdir
コマンドが表示されます。ls -ld test
cc -o testrun mytest.c
Up-arrow以前に使用したプレフィックスを検索せずに、あらかじめコマンドラインに何も入力せずに最近の履歴を繰り返すことができるように、この問題を「修正」する方法についてのガイドラインを探しています。上記の動作が文書化された位置へのポインタでもよいでしょう。
編集する:
マニュアルksh93
によると
[count]k
前のコマンドを取得します。入力するたびに前のk
コマンドにアクセスされます。
/string
含まれている前のコマンドの履歴から戻るstring
。またはによってString
終了しました。前に行くと、一致する行は次から始める必要があります。 null の場合、前の項目が使用されます。RETURN
NEW LINE
string
^
string
string
string
[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