Terminal

Ctrl + 箭頭鍵在 tmux 中工作

  • January 17, 2022

當我通過 SSH 連接到我們的伺服器時,控制 + 箭頭序列對我來說工作正常:Ctrl+V然後Ctrl+ updownright、分別left給出^[OA^[OB^[OC^[OD。在 tmux 中,我得到^[[A, ^[[B,^[[C^[[D.

我正在通過 PuTTY 連接到 Ubuntu,但是……

  • 我有正確的終端集(putty因為ncurses-term已安裝)。所有其他組合鍵都在主 shell 中工作。
  • 我正在使用正確的字元集(UTF-8)。
  • 我肯定會得到一個 256 色的終端(我已經嘗試過多次呼叫TERM=... tmux
  • 我已閱讀 tmux 常見問題解答說要使用此配置:
set -g terminal-overrides "xterm*:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:smkx@:rmkx@"

使我的配置像這樣:

set -g default-terminal "screen-256color"
set -g terminal-overrides "screen*:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:smkx@:rmkx@"
set-window-option -g xterm-keys on

因為screen在其他地方被推薦(儘管我也在那裡嘗試putty過。

我發現唯一有效的方法是在tput rmkx內部執行tmux,但我不知道這是否是正確的解決方案,它還有什麼其他影響,其他程序是否會更改此設置,甚至應該如何正確設置它.tmux.conf以便我不必一直手動輸入。


對於未來的讀者:

  1. 不要使用xterm-keys;
  2. set -g default-terminal "screen-256color"應該總是screenscreen-256color因為 tmux 在內部使用螢幕終端類型;和
  3. set -g terminal-overrides "putty*:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:smkx@:rmkx@"應始終在tmux$TERM 之外相等/全域匹配。預設情況下,PuTTYxtermConnection > Data > Terminal-type中使用,因此要麼在terminal-overrides設置中使用它,要麼將 PuTTY 更改為 use putty-256color

這類似於*How to enable Control key combination for GNU screen on putty?* ,但涉及不同的方面。

在快速檢查中,問題似乎是這一行之間的衝突

set-window-option -g xterm-keys on

還有這個:

set -g terminal-overrides "screen*:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:smkx@:rmkx@"

刪除set-window-option使您的配置對我有用。

我現在根本不再使用terminal-overrides也不再使用 PuTTY。我的相關.tmux.conf是:

set -g default-terminal "tmux-256color"

我將KiTTY用於我的終端模擬器,並在可能的情況下編譯一個特定於 KiTTY 的 terminfo 文件,否則putty-256color用作終端類型。

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