Command-Line

zsh with vi-mode:如何在不執行的情況下保留命令行以供將來使用

  • October 15, 2019

我經常遇到這種情況,當輸入一個複雜的命令時,我意識到我需要先輸入一些其他命令。

作為vi使用者,我很想0 D輸入一個不同的命令,然後p使用已刪除的命令行。不幸的是,沒有人(包括我自己)費心vizsh.

所以現在我在命令的開頭插入I一些x使其失敗,做我的其他事情,從歷史記錄中刪除舊命令並刪除x. 每次我問自己:有沒有更簡單的方法來做同樣的事情?

**不是重複的!**請注意,我提到我使用的是 vi 模式。其他問題的答案均不適用於 vi 模式。它們僅適用於 emacs 模式,即使它們沒有提及,所以它們具有誤導性。請重新打開,以便人們找到正確的答案。

啟用interactivecommentsshell 選項

setopt interactivecomments

#在命令行上使用正常/命令模式下的操作(即按Esc後跟#)。這會在該行的前面插入 a #,立即送出該行(由於它是註釋,因此將被忽略),並將其添加到命令行歷史記錄中。這在逐行的基礎上工作,即不幸的是,它不適用於多行命令。

在已經被註釋掉的行上使用該#操作(例如從命令行歷史記錄中獲取)會#從行的開頭刪除並送出它。

預設情況下,interactivecommentsshell 選項在互動式 shell 中未設置,但在非互動式 shell 中設置。

引用自:https://unix.stackexchange.com/questions/546707