如果我在 tmux 中执行“history”命令,我会得到非常奇怪的结果。有人能提示一下如何才能获得正常输出吗?
输出如下所示:
477 ◆┬▒⎺▒└☃◆
478 c▒├ ◆┬▒⎺▒└☃◆
479 ec▒⎺ ◆┬▒⎺▒└☃◆
48▮ ┴☃└ ·/↓├└┤│↓c⎺┼°
481 ├└┤│
482 ┌⎽
483 cd ┐⎺▒┼⎽/
484 ┌e☃┼ ┐⎺▒┼⎽ ⎼┤┼
485 ┌⎽
486 ┌e☃┼ ▮1_e─┤▒┌☃├☃e⎽↓c┌┘ ⎼┤┼
487 cd ↓↓
488 ┌e☃┼ ┐⎺▒┼⎽ ⎼┤┼
489 cd ┐⎺▒┼⎽/
49▮ ┌e☃┼ ┐⎺▒┼ ⎼┤┼
491 ┴☃└ ▮1_e─┤▒┌☃├☃e⎽↓c┌┘
492 ▒☃⎽├⎺⎼≤
493 ┌e☃┼ ┐⎺▒┼ ⎼┤┼
494 ├└┤│ ┌⎽
495 ├⎺⎻
496 ▒☃⎽├⎺⎼≤
497 e│☃├
498 e│☃├
499 ▒☃⎽├⎺⎼≤
S⎼e┼⎽↑M▒cB⎺⎺┐↑P⎼⎺↑2:· S⎺e⎼e┼$
我猜这与编码有关。
我在使用 OSX Lion 10.7.5 的 MacBook Pro 上。
我正在使用终端应用程序,该应用程序启用了 UTF-8 编码,并在“国际 - 字符编码:”下启用了 UFT-8。
我的shell是bash。
我的 tmux 是tmux -V
tmux 1.9a。
在我的~/.tmux.conf/
,我有
set-option -g prefix ^Space
bind-key ^Space send-prefix
unbind C-b
set-option -g status-fg white
set-option -g default-command "reattach-to-user-namespace -l bash"
set -sg escape-time 1
set -g base-index 1
setw -g pane-base-index 1
bind r source-file ~/.tmux.conf
set-window-option -g utf8 on
set -g utf8
set -g status-utf8 on
我的languagesetup
语言是英语,但我是丹麦人,我的键盘布局也是 :) 这只是在我语言languagesetup
不是英语的时候才会出现问题 - 具体来说,使用我的丹麦管道符进行管道传输|
意味着如果我在管道符和管道符之间写了一个空格,bash 将无法识别管道符后的命令,因此我不得不这样做
echo $PATH |less
而不是
echo $PATH | less
但正如我所说的,我用 解决了这个问题languagesetup
。
我真的很想使用 tmux,所以我希望有人知道如何修复它!:)
编辑1:
原因:
奇怪的输出是因为我的历史记录中有 ^N(Ctrl + n 组合键的输出)。如果我在 tmux 中按下 Ctrl + n 然后按 Enter 键,则可以故意强制产生奇怪的输出。我在 tmux 的 SourceForge 页面上提交了一张票,以防它是一个错误:https://sourceforge.net/p/tmux/tickets/137/ 所以,没有 ^N,没有奇怪的输出!
编辑2:
欲了解更多有趣的细节,请查看评论:)
编辑3:
在向 tmux 开发人员提交错误报告后https://sourceforge.net/p/tmux/tickets/137/,我被告知 ^N 的效果不是一个错误。它是硬件终端在 utf-8 之前的旧时代的一项功能,开发人员使用控制字符切换字符集,以便访问更广泛的字符。^N 会“移出”,^O 会“移入”,即返回原始字符集。在 Terminal 或 iTerm 中按 ^O 对我来说没有任何作用,这是因为 ^O 被重新映射到“丢弃” - 这可以通过运行看到stty -a
。但是,在执行 ^N 之后,您可以运行 shell 脚本printf '\x0F'
,该脚本输入 ^O 应该产生的控制字符,当您“移入”时,输出将恢复正常。