1

Я хотел бы сделать имя вкладки vim более полезным. Я включил плагин экрана и попробовал несколько подходов. Больше всего мне понравилось бы исправить имя экрана, используя другой файл экрана загрузки, то есть:

screen -S sectionName -c .screenTest

и файл screenTest будет иметь что-то вроде:

source $HOME/.screenrc
chdir $HOME/place
# Screen 0
screen
stuff "something^M"
# Screen 1
screen
stuff "something^M"
stuff "cd place^M"                                                                                                 
stuff "vim -p `find -type f -not -path \"*/\.*\" -not -path \"*x86*\" \( -name \"*.py\" -o -name \"*.cxx\" -o -name \"*.h\" \)`^M"
title "Screen1"

Проблема в том, что команда title читается перед выполнением команд вещи. Если кто-то знает, как заставить команду title запускаться после выполнения команд stuff, это было бы прекрасно. Я старался:

материал "^ A:title TitleValue ^ M"

но он не пишет на экране вставку команды, он пишет на терминале (^ A и ^ M записываются в vim с использованием ^V^A).

Затем я попытался отредактировать файл screen.plugin.zsh.

Я попытался изменить методы prexec и precmd zsh, когда у входной команды есть vim для отображения места. Но я не мог этого сделать.

Извините, что опубликовал это здесь, но если кто-то может помочь мне сделать это, это звучит довольно просто, но я застрял в этом, даже если я изменю $ cmd, это не изменит синтаксис TAB, то есть если я сделаю:

if [[ "$cmd" == "vim*" ]]; then
  # How do I check if variable $cmd has string "vim" in it using zsh?
  echo "changing for vim!"
  cmd=''
fi

это изменяет заголовок терминала, но не заголовок окна экрана. Есть идеи? Этот вопрос также здесь, но я думаю, что этот вопрос более уместен здесь, так как это точно не вопрос о-о-о-о.

Еще одна вещь, которая может помочь, заключается в том, что если бы я мог установить некоторые окна, чтобы они не меняли автоматически свои заголовки, тогда как другие изменились бы.

1 ответ1

2

Руководство пользователя экрана гласит:

Чтобы изменить имя после того, как окно было создано, вы можете использовать escape-последовательность строки заголовка (<ESC> k name <ESC> \) (...)

Так что (не копаясь в модулях oh-my-zsh, плагинах и т.д.) Вы можете использовать

print -n "\033kTITLE\033\134"

в командной строке zsh изменить имя текущего экрана на TITLE.

\033 представляет escape- символ в восьмеричной записи (ESC = 27 (десятичное) = 0x1b (hex) = 033 (восьмеричное)) и \134 символ обратной косой черты.

Согласно вашей команде, следующая команда работает в файле конфигурации экрана:

stuff "print -n "\\033kTITLE\\033\\134\" "

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .