ksh93 中空提示符號處的向上箭頭

ksh93 中空提示符號處的向上箭頭

這是要求解釋或指向文件的請求。

我是 KornShell93(ksh在 Mac OS X 或ksh93其他地方)用戶。我喜歡這個 shell,因為它作為互動式 shell 相對簡單,並且具有腳本編寫功能,自從 2000 年程式碼變得更加自由以來,我就一直在使用它vi。。viviraw

有一個巧妙的功能,ksh93允許您開始在命令列上鍵入命令,然後按從Up-arrow命令列歷史記錄中獲取最新的匹配命令行。我可以找到這方面的文檔以及它[count][Avi編輯模式下的綁定方式,沒問題。

但是,如果我Up-arrow在空提示符號下按,它首先會給出最近執行的命令,然後它開始循環遍歷我之前查找的任何命令前綴。這讓我煩惱不已。

例子:

我執行這三個命令:

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

鍵入ls然後按Up-arrow三下將以相反的順序循環瀏覽它們。

後來,發出了更多命令,但沒有歷史搜索,也沒有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終止。如果前面有 a ,則符合的行必須以 開頭。如果為 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。如果細繩前面有 a ^,符合的行必須以細繩。如果細繩為 null,將使用先前的字串。

注意:輸入字串後使用向上箭頭時,搜尋字串將是錨定的到行的開頭,就像^在前面輸入的一樣。

例子:

$ ls[Up-Arrow]

相當於

$ [ESC]/^ls

相關內容