帶有“重複上次”按鈕的終端

帶有“重複上次”按鈕的終端

我經常編譯東西,因此一遍又一遍地重複相同的命令,所以我想從我的“視覺記憶”中受益,並在終端上附加一種“重複上一個命令”按鈕。更準確地說,我是這樣看的:

  • 我的“特殊”終端就像標準終端機模擬器一樣,底部有一個額外的輸入線,上面附有一個“運行”按鈕。點擊按鈕將運行命令沒有擦除它。
  • 也許甚至可以堆疊任意數量的此類命令(因為我經常需要在 2 或 3 個命令之間交替)。

我知道我可以使用Enter鍵盤來重做最後一個命令,但經常發生的情況是我忘記我只需要輸入另一個命令(修復某些內容或其他),因此不會從歷史記錄中帶來正確的命令。因此,我必須在按 Enter 之前實際閱讀(至少瀏覽)命令,而不是條件反射。

某處有這樣的裝置嗎?我經常精確地使用多個終端來確保每個終端始終具有“正確”的命令,但我的Alt+Tab技能通常會讓我跳到錯誤的視窗。而且我需要終端信息,例如環境和 cwd,因此我不能只是嘗試將其“整合”到我的程式碼編輯器中。我的意思是,使用Alt+F2然後Enter將不起作用(因為我還需要從終端讀取輸出)。我只是希望能夠同時充分利用鍵盤和視覺記憶(透過點擊)。

答案1

我認為歷史擴展在這裡可能非常有幫助。例如,鍵入!p將執行以“p”開頭的最後一個命令。同樣,!vi將執行以“vi”開頭的最後一個命令,依此類推。更多資訊這裡。如果您不確定哪一個是最後一個,您可以設定 shell 選項histverify( shopt -s histverify),這樣您仍然可以在執行命令之前編輯(或檢查)該命令。更多關於此這裡

或者,您可以使用歷史搜尋功能。在 bash 中,點擊Ctrl+R並鍵入要在歷史記錄中尋找的命令(從符合條件的最新命令開始)。然後重複點擊Ctrl+R將帶回符合您條件的舊命令。更多資訊這裡這裡

如果您願意,您可以修改 readline 的 inputrc,以便向上/向下箭頭為您執行歷史搜尋。更多資訊這裡這裡

答案2

查看 shell 的歷史功能。在我的 zsh 中:

!!

重複最後一個命令。

鍵入history以查看最後幾個條目。

要在 shell 中取得所需的緩衝區:

man zshzle

或者

man readline

另外,您可以使用 Tab 鍵展開補全

make long_target
ls some_path
...
make l<TAB> # prints 'make long_target' without running it

使用通配符、擴充...您的用例沒有一處不在此功能之外。

答案3

使用+zsh就可以做到這一點。鍵入命令,然後按+而不是。該命令將被執行,並且在命令完成後相同的命令將出現在行緩衝區中。EscAEscAEnter

答案4

看起來您需要一個非常簡單的答案。既然您提到了Alt+ Tab,我假設您正在使用 (X)windows。在按下“Enter”之前,請用滑鼠反白顯示該命令。當您突出顯示它時,它會自動複製到剪貼簿。若要貼上它,請按滑鼠中鍵(滾輪)或鍵入Shift+ Insert

相關內容