tmux показывает странно закодированную историю на OSX

651
Reefersleep

Если я выполняю команду «history» в tmux, я получаю действительно странный результат. Кто-нибудь получил подсказку, что делать, чтобы получить нормальный вывод?

Вывод выглядит так:

 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┼$  

Я предполагаю, что это связано с кодированием.

Я на MacBook Pro в OSX Lion 10.7.5.

Я использую приложение «Терминал», в котором (помимо прочего) включено кодирование UTF-8 и UFT-8 в разделе «Международный - Кодировка символов:».

Моя оболочка bash.

Мой tmux согласно tmux -Vtmux 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). Странный вывод может быть преднамеренно вызван, если я нажму Ctrl + n и затем введу в tmux. Я подал заявку на страницу SourceForge на tmux на случай, если это будет ошибка: https://sourceforge.net/p/tmux/tickets/137/ Итак, нет ^ N, нет странного вывода!


РЕДАКТИРОВАТЬ 2:

Для более интересных деталей, просто посмотрите в комментариях :)


РЕДАКТИРОВАТЬ 3:

После подачи отчета об ошибке для разработчиков tmux по адресу https://sourceforge.net/p/tmux/tickets/137/ мне сказали, что эффект ^ N не является ошибкой. Это особенность старых аппаратных терминалов до 8 дней, когда разработчики использовали управляющие символы для переключения наборов символов, чтобы иметь доступ к более широкому диапазону символов. ^ N «сдвинется», ^ O «сдвинется», то есть вернется к исходному набору символов. Нажатие ^ O ничего не делает для меня ни в терминале, ни в iTerm, и это потому, что ^ O переназначается на «сброс» - это можно увидеть при запуске stty -a. Однако, выполнив ^ N, вы можете запустить сценарий оболочки printf '\x0F', который вводит управляющий символ, который должен генерировать ^ O, и вывод вернется к нормальному состоянию, когда вы «переключитесь».

2
Есть ли в вашей истории команда, которая может содержать специальный символ, который портит вывод tmux? polym 9 лет назад 1
Я только что сделал `history -c history -w`, чтобы очистить мою историю, и теперь она выглядит хорошо, так что я думаю, что вы были правы. Просмотр резервной копии ~ / .bash_history в Vim в сеансе tmux выглядит нормально, но если я сделаю `cat ~ / bash_history.txt`, результат снова будет странным. Должно быть, это один из тех персонажей ... Вероятно, датский: D Собираюсь потратить немного времени на его поиск. Ура! Reefersleep 9 лет назад 1
`njjj` Эта строка вызвала странный вывод. Из символов в этом окне я могу сказать, что `njjj` не интерпретируется, поскольку я вижу это в моем терминале вне tmux - там это` ^ An ^ A ^ N ^ Ajjj`. Я думаю, что это было, когда я экспериментировал с новой таблицей ключей для PREFIX в tmux - я думаю, что Ctrl + a, хотя я также пытался использовать Alt + a, но я думаю, что ^ означает Ctrl. Reefersleep 9 лет назад 1
Для тех, кто заинтересован, я разыскал его, выполнив head -n ~ / bash_history.txt в tmux несколько раз, увеличивая количество белья в геометрической прогрессии до тех пор, пока я не получил неправильный ввод, затем выйдя / войдите в tmux и продолжая, увеличивая / уменьшая в двоичном виде поиск шаблона и выход / ввод tmux при необходимости. Reefersleep 9 лет назад 1
отлично :)). да ^ означает контроль :). Вот источник того, что означает каждая контрольная последовательность http://www.robelle.com/smugbook/ascii.html polym 9 лет назад 1
Я попытался реплицировать нажатия клавиш непосредственно в tmux - очевидно, что ^ N вызывает странный вывод, как только я делаю это (то есть Ctrl и n удерживаются одновременно) и нажимаю ввод, вывод получается странным. Srens-MacBook-Pro-2: ~ Soeren $ ^ N -bash:: c⎺└└▒┼d ┼⎺├ ° ⎺┤┼d S⎼e┼⎽ ↑ M▒cB⎺⎺┐ ↑ P⎼⎺ ↑ 2 : · S⎺e⎼e┼ $ Reefersleep 9 лет назад 1
Вау круто. Похоже, `tmux` не может обработать` 0xe` (что в соответствии с источником выше `^ N`) как вывод. Я проверил это с помощью `echo -e '\ xe' &> cn.hex; кошка cn.hex` в tmux и я получил те же результаты. Очень хорошо! polym 9 лет назад 1
Также, если вы когда-либо вступали в контакт с демоническим языком `tmux`, просто наберите` reset`. Или в `dt-tmux`:` ⎼e⎽e├` polym 9 лет назад 3
Спасибо за вашу помощь в этой детективной работе! Странное замечание: -е нет в моем "мужчине эха". Нашел объяснение онлайн. Еще одно замечание: мне интересно, что ^ N в списке символов asciii, с которыми вы связаны, это «Shift Out, ** альтернативный набор символов **». Хммм :) Reefersleep 9 лет назад 0
И спасибо за подсказку по перезагрузке, работает угощение! Но что если ^ N не работает (или не работает, если вам нужен демонический язык) в tmux, следует ли об этом сообщать разработчикам как об ошибке или о чем-то? Reefersleep 9 лет назад 1
Это определенно должно. Хотел бы я знать, если бы никто этого не сделал. polym 9 лет назад 0
Хорошо, я подал заявку по адресу https://sourceforge.net/p/tmux/tickets/137/ Reefersleep 9 лет назад 1

0 ответов на вопрос