#gnu-screen
#gnu-screen
Вопрос:
как я могу привязать более одной команды к одному ключу в gnu-screen? Я хочу объединить два сопоставления
bind c copy
bind b eval "writebuf" "exec sh -c 'xsel --clipboard < /tmp/screen-exchange'"
к одному отображению с одним ключом. Как это можно сделать?
Кто-нибудь знает хороший учебник по этой расширенной настройке / написанию сценариев для gnu-screen?
Заранее спасибо, Крис
Ответ №1:
Передайте каждую команду в качестве отдельного аргумента eval
, например, eval "echo foo" "echo bar"
. В вашем данном сценарии я бы подумал, что простое добавление copy
after eval
сделает то, что вы хотите.
Комментарии:
1. Спасибо Arkku, но у меня это не работает. Если я использую «bind c eval «copy» «writebuf» «exec sh -c ‘xsel —clipboard < /tmp /screen-exchange'», кажется, выполняются только команды копирования. Никаких изменений в «/tmp/screen-exchange» не внесено.
2. Кажется, что
copy
это может прервать обработку. Попробуйте добавлятьecho
s до и после каждой команды, чтобы вы могли видеть, как выполняется команда; в моем быстром тестировании показалось, что переход в режим копирования / прокрутки прерывает его.3. Кажется, что только если я не нажимаю ни одной клавиши, выполняется вся последовательность команд и в /tmp / screen записывается пустая копия… Если я нажимаю RETURN, чтобы установить первую метку, вся последовательность прерывается.
4. К сожалению, я не знаю, есть ли какой-либо способ обойти это.
5. Хорошо, тогда я буду жить со своими двумя привязками клавиш. Спасибо за ваше время и помощь.
Ответ №2:
Я использую
bind # eval focus "resize 130"
например, для переключения между двумя разделенными по вертикали окнами и одновременного изменения размера сфокусированного окна до 130 столбцов (нажатие « C-A #
«).
Итак, объединение нескольких команд с помощью ‘ eval
‘, похоже, работает должным образом.