Vim

由於其 Alt+ 行為,ESC 鍵會導致終端出現小延遲

  • October 22, 2020

我的終端設置是帶有 vi 綁定的 gnome-terminal + tmux + zsh。

在 vim 之類的應用程序中,甚至在 zsh 的命令行 vi 編輯模式中,我需要頻繁地敲擊該ESC鍵,但在該鍵的效果發生之前會有一小段延遲。參見GNU Screen 使 Vim ESC 鍵變慢

經過一些實驗,我發現ESC按下 key 並立即按下另一個鍵(比如b)與敲擊 具有相同的效果Alt+b。我不知道為什麼會這樣(可能是由於遺留原因而沒有Alt?我不知道)。無論哪種方式,我都有兩個Alt鍵,我不希望我的ESC鍵出現這種行為。我已經嘗試過C+[,它也有同樣的問題。

我不確定誰對此負責,gnome-terminal 或 tmux 或我的作業系統本身(Ubuntu Natty)。關於如何解決這個問題的任何想法都會很棒。

更新:我在另一個終端(LXTerminal)上檢查了沒有 tmux 的情況,並且那裡也存在延遲。

這是一個實際的修復。將以下內容添加到.tmux.conf

set -s escape-time 0

如評論中所述:伺服器可能需要重新啟動。  tmux kill-server殺死伺服器;您可能需要重新啟動它。tmux或者,您可以通過鍵入您的 tmux 前綴(預設Ctrl+ B),然後**:** 輸入.從命令提示符重新載入配置文件source-file ~/.tmux.conf

延遲是由可能必須決定是否按下功能鍵的輸入常式引起的。為此,輸入常式在讀取 ESC 字元時啟動計時器。在計時器用完之前從輸入中讀取的字元(比如說十分之一秒)然後被解釋為功能鍵的 ESC 序列,並且這個 ESC 序列將與來自 terminfo 或termcap 數據庫(取決於使用的​​低級常式)。

當然,這對於單獨使用 ESC 的應用程序來說很煩人,但我不知道有任何解決方法。

關於您對ESC a=行為的問題Meta a

並非所有鍵盤都提供元鍵。作為一種解決方法,通常允許在按下另一個鍵之前使用 ESC 鍵。

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