解決tmux在PuTTY下工做異常的問題

ubuntu 默認系統配置文件位置/usr/share/byobu/profiles/tmuxubuntu

來自vim

PC經過PuTTY鏈接到VPS,在使用VPS上安裝的tmux時遇到了一些小問題。主要是由於PuTTY是一個終端仿真器,跟真正的終端有必定差異,須要一些額外設置。這裏整理了一些遇到的問題,並提供解決方法。bash

開始以前先介紹一個查看按鍵的控制序列的方法,後面會用到。執行:ide

cat > /dev/null

而後按下想要查看的按鍵,就能看到對應的控制序列。如圖一所示的 ^[[A ,就是↑方向鍵對應的序列。按兩次Ctrl+D退出。 ui

問題一1:F2\F3\F4無效

配置tmux使用像byobu同樣的快捷鍵來控制窗口:F2新建窗口,F3切換到上一個窗口,F4切換到下一個窗口。配置文件以下:編碼

## easy to swich window, like byobu
bind-key -n F2 new-window
bind-key -n F3 previous-window
bind-key -n F4 next-window

但在使用中發現,按F2\F3\F4等功能鍵無效,只在命令行中輸入了波浪號~(或者其餘符號)。spa

解決方法:命令行

打開PuTTY設置界面,在Terminal –> Keyboard下,將The Function keys and keypad從默認選項「ESC[n~」更改成「Xterm R6」,如圖二所示。記得保存設置,以後功能鍵就可用了。code

用上面提到的查看控制序列的方法,能夠看到默認的F2鍵序列是 ^[[12~ ,更改後變成了 ^[OQblog

問題二:Ctrl+方向鍵無效

tmux中默認使用「Ctrl+b Ctrl+方向鍵」調整面板大小。但在PuTTY中,該按鍵產生的效果與「Ctrl+b 方向鍵」等同(即默認的選擇面板快捷鍵)。

咱們先進入tmux,而後用前面提到的查看控制序列的方法,能夠看到PuTTY對於直接按「↑方向鍵」和「Ctrl + ↑方向鍵」產生的序列都是 ^[[A

各類搜索後,發現是由於PuTTY改變了Ctrl的光標鍵模式,使得tmux難以正確地檢測出按鍵。好吧,徹底不知道是在說什麼,大體是和terminfo有關的設置,仍是附上原文:

putty inverts the sense of the cursor key mode on ctrl, which is a bit hard for tmux to detect properly.

解決方法:

將下行兩行代碼插入配置文件.tmux.conf的最後,完全關閉tmux以後再從新打開tmux,確保配置文件生效。

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

問題三:vim在tmux下的Ctrl+方向鍵和Shift+方向鍵

vim中用「Ctrl+方向鍵」進行按單詞移動,用「Shift+方向鍵」進行選擇。Google了一下,發現全是問怎麼才能讓vim的這兩種快捷鍵能在tmux中工做。

解決方法:

這個問題比較麻煩,是因爲PuTTY自己代碼產生的問題。一個不完整的解決方法是, 在問題二解決方法的基礎上 ,在tmux配置文件中加入:

set -g xterm-keys on

如今能夠用「Ctrl+方向鍵」進行按單詞移動,但「Shift+方向鍵」也變成了按單詞移動。由於在tmux中,PuTTY對兩種按鍵發出的編碼是同樣的,好比「Ctrl + ↑方向鍵」和「Shift + ↑方向鍵」的控制序列都是 ^[[1;5A 。這個目前沒有什麼好的解決方法,要麼使用第三方編譯的PuTTY改進版,要麼換用其餘軟件。(聽說mintty沒有這個問題,不過我沒有試過)

問題四:顏色支持不全

在設置tmux底部的狀態欄背景色時,發現有一些顏色沒法顯示。好比下面代碼,將狀態欄設置爲colour240,但顯示效果依然是黑色的。

set -g status-bg colour240

tmux容許使用的顏色包括:black、red、green、yellow、blue、magenta、cyan、white、從colour0到colour255,以及default

解決方法(二選一):

一、一種解決方法是,export出TERM環境變量爲xterm-256color。直接執行下列代碼:

echo 'export TERM=xterm-256color' >> ~/.bashrc
source ~/.bashrc

二、另外一種解決方法是使用-2參數啓動tmux,強制tmux認爲終端支持256 colours:

echo 'alias tmux="tmux -2"' >> ~/.bashrc
source ~/.bashrc
相關文章
相關標籤/搜索