Привязать более одной команды к одной клавише на экране?

#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 ‘, похоже, работает должным образом.