如何讓 F1-F4 鍵在 tmux 中正常執行
在我的普通終端中,
F1
-F4
鍵產生^[[11~^[[12~^[[13~^[[14~
,但在 tmux 中我得到^[OP^[OQ^[OR^[OS
. 我希望它們在 tmux 中的行為相同,因此我不會在 tmux 中對程序的綁定感到困惑。我沒有開啟 PuTTY 的Xterm R6選項。我在
putty-256color
putty 和 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-keys.c,您會看到在表格中列出的鍵。
- 該表在同一個文件中使用,在
input_key
- 在文件頂部附近,有一條評論:
/* * 這個文件的名字有點誤導人,它包含的程式碼需要一個 * 密鑰程式碼並將其翻譯成適合發送給 * 在窗格中執行的應用程序(類似於 input.c 在另一個窗格中執行的 * 輸出方向)。 */
您的 shell 是註釋所指的應用程序。
terminal-overrides
用於修改讀取的終端描述,tmux
以允許您使用與終端描述不匹配的(外部“真實”終端的)配置:
- 從tty_term_find讀取終端描述,
- 然後通過tty_term_override應用覆蓋
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
您想要的方式自定義數據。