Zsh

如何在帶有 Vim 綁定的 zsh 中使用 Alt + .

  • March 27, 2022

我正在使用 zsh 和bindkeys -v.

Alt + .沒有按預期工作。它似乎在下一行重複目前在標準輸入中鍵入但未輸入的內容。

這篇文章似乎暗示它確實像在 bash 中一樣工作,即獲取最後輸入的命令的最後一個參數。

需要什麼才能使這項工作按預期進行?

在終端上,Alt+*char*通常與 相同Esc *char*。(可以對某些終端進行不同的配置。)

在 vi 插入模式下,Esc切換到命令模式。在 vi 命令模式下,Esc什麼都不做。在 vi 命令模式下,.重複上一個命令。

小元件在 emacs 模式下預設insert-last-word綁定到Alt+.Alt+ _,但在 vi 模式下它沒有預設綁定。如果你想在 vi 模式下使用它,你需要給它一個綁定,例如

bindkey -M vicmd _ insert-last-word

請注意,這是一個插入命令:它在游標之前插入文本,這不能在行尾完成。對於經常在行尾使用的命令,這相當不方便。您可能更喜歡定義append-last-word

function append-last-word { ((++CURSOR)); zle insert-last-word; }
zle -N append-last-word
bindkey -M vicmd _ append-last-word                        

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