有一些眾所周知的快捷方式可以在 bash 中獲取上一個命令的參數,例如Alt+.
or$!
等。我找不到任何關於 zprezto 模組對此進行更改的資訊。是否是我缺少或可能已設定的某些 ZSH 設定並且停用了此行為?
答案1
ALT.據我所知並不為人所知。我假設這是由您在 bash 啟動中加載的內容定義的。 (它對你有什麼作用?)
$!
是最近啟動的子進程的進程ID。我假設這是不是您想要輸入的內容。 :)
!$
是一個(縮短的)歷史擴展應該預設展開到上一個指令的最後一個參數。 zsh 的歷史擴充有詳細記錄在 zsh 手冊中。
歷史擴充通常以 開頭!,但可以透過設定 的值來變更此設定$HISTCHARS
: 的第一個字元$HISTCHARS
將用作啟動歷史擴充的字元。預設情況下,$HISTCHARS
設定為值!^#
。您可以透過以下方式檢查系統上的值:
echo $HISTCHARS
如果這樣做不是從 開始!
,那麼您的 zsh 啟動中的某些內容已經設定了不同的值,並且標準的、眾所周知的歷史擴展(例如!!
和 )!$
將不適合您。
更新:
事實證明我上面寫的第一段是完全錯誤的。我可能不知道ALT.,但這可能是因為我「總是」在啟用 vi 模式的情況下使用 zsh。事實上,ALT.(和ALT_,做同樣的事情)在 zsh 的預設 emacs 鍵綁定中啟用。它們綁定到 ZLE widget insert-last-word
,它執行您所描述的操作。
如果您使用具有預設 emacs 鍵綁定的 zsh 並且ALT.不適合您,那麼您在 shell 啟動中載入的某些內容會覆蓋它。您可以使用以下命令重新建立預設鍵綁定:
bindkey -M emacs "^[." insert-last-word \
"^[_" insert-last-word