ubuntu 默认系统配置文件位置/usr/share/byobu/profiles/tmux
PC通过PuTTY连接到VPS,在使用VPS上安装的tmux时遇到了一些小问题。主要是因为PuTTY是一个终端仿真器,跟真正的终端有一定差别,需要一些额外设置。这里整理了一些遇到的问题,并提供解决方法。
开始之前先介绍一个查看按键的控制序列的方法,后面会用到。执行:
cat > /dev/null
然后按下想要查看的按键,就能看到对应的控制序列。如图一所示的 ^[[A
,就是↑方向键对应的序列。按两次Ctrl+D退出。
问题一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等功能键无效,只在命令行中输入了波浪号~(或者其他符号)。
解决方法:
打开PuTTY设置界面,在Terminal –> Keyboard下,将The Function keys and keypad从默认选项“ESC[n~”更改为“Xterm R6”,如图二所示。记得保存设置,之后功能键就可用了。
用上面提到的查看控制序列的方法,可以看到默认的F2键序列是 ^[[12~
,更改后变成了 ^[OQ
。
问题二: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:[email protected]:[email protected]"
问题三: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
解决方法(二选一):
1、一种解决方法是,export出TERM环境变量为xterm-256color。直接执行下列代码:
echo ‘export TERM=xterm-256color‘ >> ~/.bashrc source ~/.bashrc
2、另一种解决方法是使用-2参数启动tmux,强制tmux认为终端支持256 colours:
echo ‘alias tmux="tmux -2"‘ >> ~/.bashrc source ~/.bashrc