Налаштування Tmux та ZSH: запит із назвою вікна


43

Я налаштував своє запит ZSH з oh-my-zsh, щоб зробити його більш читабельним і додати інформацію про git, якщо я перебуваю у сховищі.

Приклад:
bob@inf [~/docs] %
bob@inf [~/src/nicest] master %(у сховищі git)

Він працює добре, але у мене є деякі помилки tmuxі назва вікна. Він все ще відображає нечутне значення, і я не можу його відключити automatic-rename off(він просто не працює, ім'я вікна змінюється після кожної команди), для першого прикладу використання tmux ~/docsдля імені вікна.

Я не впевнений, як я можу це виправити, я хотів би тримати своє zsh як слід, якщо він може внести зміни, але хотів би зрозуміти, де проблема?

Іншим рішенням може бути переосмислення команди settileцієї відповіді ), але я не впевнений, як це зробити правильно.

Відповіді:


76

Я поглянув на о-мі-зш і знайшов ймовірного підозрюваного .

Коли значення змінної середовища TERM починається з screen(яке воно повинно бути як під екраном, так і під tmux ), воно використовує контрольну послідовність екранного термінала, щоб встановити ім'я вікна на

  • (безпосередньо перед відображенням підказки оболонки)
    найбільшу ліву частину шляху «стисненого тильда» поточного робочого каталогу ( ..далі - останні 13 символів або весь шлях, якщо він менше 15 символів) і
  • (Безпосередньо перед запуском команди)
    перший «слово» близько-к-бути-запуску команди (не рахуючи ssh, sudoі деякі інші).

Це здається, що він працює таким чином для вас (ви сказали, що ваше ім'я було змінено на, ~/docsколи ви були в цьому каталозі). Якщо ви хочете відключити це автоматичне перейменування, ви можете вимкнути його повністю, встановивши параметр оболонки DISABLE_AUTO_TITLE trueу вашому .zshrc:

DISABLE_AUTO_TITLE=true

Якщо ви просто встановите це в інтерактивній оболонці, ви отримаєте порожню рядок для імені поточного вікна, але о-мі-zsh перестане оновлювати вікно перед кожним запитом і командою в цьому екземплярі оболонки (воно повинно бути в ваш .zshrcвплив на всі нові екземпляри оболонки).


4
Це така ідеальна відповідь. Точні, інформативні, стислі та суттєві. Більше того, він пропонує рішення на додаток до відповіді на оригінальне запитання ("розуміння, де проблема"). Прикро, що той, хто знайшов час, щоб запитати, не потурбував це позначити як відповідь.
dmondark

Дякую, дякую, дякую, дякую, дякую, дякую
Jezen Thomas

де .zshrcфайл для всіх користувачів?
andilabs

29

Я знаю, що відповідь вище дає вам рішення, але ще один - просто додати цю опцію до свого ~ / .tmux.conf

set-option -g allow-rename off

Це краще рішення, оскільки воно впливає лише на tmux.
Пол Олівер

Навіть з цим налаштуванням панель приєднання, а потім перервану панель скидає назву вікна :(
djsadinoff

6

Я зіткнувся з тією ж проблемою, яку назву вікна tmux було змінено навіть встановленням в .tmux.conf:

set-window-option -g automatic-rename off

Спасибі відповідь Кріса. Ім'я мого вікна tmux не було перейменовано автоматично після зміни:

set -g default-terminal "screen-256color"

до:

set -g default-terminal "xterm-256color"

0

Якщо ви хочете відключити автоматичне перейменування лише для певного вікна, ви можете використовувати:

 set -t [WINDOW_NUMBER] automatic-rename off

Вимкніть автоматичне перейменування у визначеному вікні в іншому сеансі:

 set -t [SESSION]:[WINDOW_NUMBER] automatic-rename off
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.