自訂向上和向下鍵以符合 cmd(時間點)功能

自訂向上和向下鍵以符合 cmd(時間點)功能

如何自訂 Bash 以使上下鍵與 cmd 中的相同?

例如

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

在 Bash 和 cmd 中,按, , ,ENTER將運轉echo command2

但是,隨後在 cmd 中按向下鍵將直接轉到後面的命令,即echo command3。在 Bash 中按下向下鍵不會執行任何操作。 cmd 會保留時間點歷史記錄(類似 Web 瀏覽器中的「後退」和「前進」按鈕),但 Bash 不會。

與 cmd 類似,在 cmd 中按向上鍵兩次會返回echo command1,而在 Bash 中執行此操作會返回echo command3

很多時候,我希望原諒我之前按順序輸入的一些命令鏈。在 cmd 中,我可以滾動歷史記錄到序列的第一個,然後ENTER,,,,,,,,... ,這真的很方便。ENTERENTER

但是我在 Bash 中找不到類似的方法來做到這一點。是否可以~/.inputrc透過某種方式修改文件或其他文件來實現此目的?

答案1

雖然我個人不想這樣做,因為我已經習慣了 bash 歷史,但我可以理解為什麼人們會想要這樣做。我之前曾為一位同事研究過這個問題,他是 *nix 的新手,想要在 xterm 中實現類似 DOS 的功能,然後,就像現在一樣,似乎沒有解決方案。

我剛剛進行了另一次廣泛的搜索,除了以下內容之外,找不到任何明顯的東西:

奇怪的是,有很多方法可以讓 cmd 更像 bash,例如,Windows 命令提示字元的類似 Bash 歷史記錄的功能,但可悲的是不是相反

主要問題是,(過於)簡單地說,遊標鍵功能(以及它如何與歷史記錄交互)內置於 Bash 源代碼中,並且腳本、別名和 shell 函數無法覆蓋這一事實1。你需要的是重寫bash,內建了不同的[可切換? ]遊標鍵功能,如果您願意的話,可以說是一種「DOSBash」。

也許存在迎合利基市場的機會,並且最終有人會滿足這一需求,但我不會屏住呼吸。


1如果我錯了,並且可以通過簡單的資源文件更改來覆蓋遊標鍵功能,如果有人能糾正我的話,我將很高興。

答案2

我使用的技巧就是簡單地重複相同數量的

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

echo command 2如果我想重複從到 的序列echo command4,我只需按3 次到達echo command2,然後再按 3 次到達echo command3,再按 3 次為echo command4

因此,如果您透過點擊 N 次返回了歷史記錄中的 N 項,則再次點擊 N 次將讓您每次都進入下一個命令,因為您執行的新命令已被插入。

相關內容