Terminal

如何讓 F1-F4 鍵在 tmux 中正常執行

  • November 30, 2017

在我的普通終端中,F1-F4鍵產生^[[11~^[[12~^[[13~^[[14~,但在 tmux 中我得到^[OP^[OQ^[OR^[OS. 我希望它們在 tmux 中的行為相同,因此我不會在 tmux 中對程序的綁定感到困惑。我沒有開啟 PuTTY 的Xterm R6選項。

我在putty-256colorputty 和 tmux 中都使用我的終端類型來解決其他鍵不匹配的問題,儘管我仍然需要重新映射我的箭頭鍵。

配置曾是:

set -g default-terminal "putty-256color"
set -g terminal-overrides "putty*:smkx@:rmkx@:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:kf1=\e[11~:kf2=\e[12~:kf3=\e[13~:kf4=\e[14~"

我的其餘配置是無關的化妝品。你可以看到我已經嘗試將 4 個功能鍵重新映射回原來的,但我還沒有讓它工作。

我覺得我錯過了一些基本的東西,為什麼我的密鑰不能在 tmux 內部和外部的每個密鑰上保持相同,除了前綴,所以這些問題不會發生?

編輯

我的問題仍然存在,但我缺少一些基本的東西:指的是 tmux 中的終端類型*,*指的是我正在連接的術語類型,即在 tmux之外。(是的,我覺得自己很愚蠢。)default-terminal``terminal-overrides

我的配置現在是這樣的:

set -g default-terminal "screen-256color"
set -g terminal-overrides "putty*:kLFT5=\eOD:kRIT5=\eOC:kUP5=\eOA:kDN5=\eOB:kf1=\e[11~:kf2=\e[12~:kf3=\e[13~:kf4=\e[14~:smkx@:rmkx@"

F1-F4仍然^[[11~^[[12~^[[13~^[[14~在 tmux 之外和^[OP^[OQ^[OR^[OS內部給我。

手冊頁不清楚,但閱讀原始碼會有所幫助:

/*
* 這個文件的名字有點誤導人,它包含的程式碼需要一個
* 密鑰程式碼並將其翻譯成適合發送給
* 在窗格中執行的應用程序(類似於 input.c 在另一個窗格中執行的
* 輸出方向)。
*/

您的 shell 是註釋所指的應用程序。

terminal-overrides用於修改讀取的終端描述,tmux以允許您使用與終端描述不匹配的(外部“真實”終端的)配置:

tmux將鍵轉換為它自己的一組轉義序列(與 中的匹配screen,但它添加了xterm-keys選項)。頂部的評論window.c總結了這一點:

* A pane has two buffers attached, these are filled and emptied by the main
* server poll loop. Output data is received from pty's in screen format,
* translated and returned as a series of escape sequences and strings via
* input_parse (in input.c). Input data is received as key codes and written
* directly via input_key.

手冊

default-terminal 終端

設置在此會話中創建的新視窗的預設終端 -**TERM*環境變數的預設值。為了tmux正常工作,必須將其設置為‘screen’’tmux’*或它們的派生詞。

限制的原因是無法以input-keys.c您想要的方式自定義數據。

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