Bash 吞噬 Ch、Cj、Ck 和 Cl

Bash 吞噬 Ch、Cj、Ck 和 Cl

我在嘗試映射 Ch ... Cl 以在 Tmux 中的窗格之間移動時發現了這個問題。當我按下按鍵時,沒有任何內容傳輸到 Tmux。

這是在帶有 Bash 4.3.11 的 Ubuntu 14.04 VM 上。我正在從 Mac OS Mojave 登入。

我可以在 Mac 上使用這些按鍵。例如,當我將它們輸入 cat 時,它會接收按鍵並吐出一些文字:

  ~/mac: cat
^H^K^L

當我在虛擬機器上透過 ssh 運行 cat 並明確分配終端時,它也能正常工作:

  ~/mac: ssh -t vm "cat"
^H^K^L

但是,當我登入虛擬機器並執行 cat 時,字元會被吞沒,而不是傳遞給 cat:

  ~/vm: cat


# hitting C-h, C-k, C-l...nothing happens

如實驗所示cat,吞噬輸入的不是我的虛擬機器上的終端。我的理解是,輸入從終端到 bash,再到 bash 內部運行的進程,因此這似乎表明 bash 是吞嚥輸入的那個。我怎樣才能進一步調試這個?

答案1

免責聲明:我會把這個當作評論,但我沒有足夠的業力,所以請不要給我投反對票。

Bash 使用 GNU readline 函式庫來處理命令列編輯和鍵綁定。

您能否發布此命令的輸出,以便我們可以查看是否有任何綁定到“Control-hjkl”的東西會阻止按鍵序列並通過:

bind -p | grep -v "(not bound)"

相關內容