Екран GNU: зміна назви нового вікна


20

Я можу змінити ім'я вікна за допомогою Ctrl-a Shift-a. Замість того, щоб відредагувати кілька імен вікон вручну, чи існує спосіб їх автоматичного іменування за поточним каталогом?


Яку оболонку ви використовуєте?
marco

Я використовую bash.
laewl

Відповіді:


21

Змушуйте свою оболонку змінювати заголовок вікна щоразу, коли він змінює каталог або кожен раз, коли він відображає підказку.

Для вашого ~/.bashrc:

if [[ "$TERM" == screen* ]]; then
  screen_set_window_title () {
    local HPWD="$PWD"
    case $HPWD in
      $HOME) HPWD="~";;
      $HOME/*) HPWD="~${HPWD#$HOME}";;
    esac
    printf '\ek%s\e\\' "$HPWD"
  }
  PROMPT_COMMAND="screen_set_window_title; $PROMPT_COMMAND"
fi

Або для своїх ~/.zshrc(для zsh користувачів):

precmd () {
  local tmp='%~'
  local HPWD=${(%)tmp}
  if [[ $TERM == screen* ]]; then
    printf '\ek%s\e\\' $HPWD
  fi
}

Для отримання додаткової інформації знайдіть динамічні заголовки в посібнику з екрана або під заголовками «Назви (іменування вікон)») на головній сторінці.


Я скопіював bash один на мій .bashrc, і він видає ці помилки: bash: PROMPT_COMMAND: рядок 0: синтаксична помилка поблизу несподіваного маркера ;' bash: PROMPT_COMMAND: line 0: ; screen_set_window_title '
laewl

@David: Вибачте, суть полягала в тому, щоб накопичувати команди, PROMPT_COMMANDякщо вже є щось, але у мене компоненти були в неправильному порядку.
Жил 'ТАК - перестань бути злим'

2
Чудовий трюк @Gilles. Для тих, хто любить тримати короткі заголовки вікон, ви можете скинути повний шлях і зберегти лише базове ім'я. Просто замініть $HOME/*) HPWD="~${HPWD#$HOME}";;на*) HPWD=`basename "$HPWD"`;;

0

Ви можете помістити це в .bashrc, щоб змінити ім'я терміналу (ім'я вікна) до останнього каталогу (або імені файлу), в якому ви перебуваєте (працюєте над).

case "$TERM" in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${PWD##*/}\007"' ;; *) ;; esac

докладніше описано тут: посилання

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