Чтобы запустить Sed to Screen в буфер обмена в командном режиме Screen - PullRequest
1 голос
/ 19 июля 2009

У меня есть копия в буфере обмена экрана, которая содержит слово Masi aften. Я хотел бы эффективно заменить его на Bond, чтобы редактировать буфер обмена непосредственно в командном режиме Screen. Я знаю, что могу сохранить буфер обмена в / tmp и запустить замену в Vim, но я хочу изучить Screen.

Я бегу, поскольку у меня есть данные в буфере обмена экрана

Ctrl-A : sed s/Masi/Bond/ | [Screen's clipboard]       /// I do not know how to refer to Screen's clipboard by a command other that C-A ]

Я получаю

unknown command sed

Как запустить команду в буфер обмена экрана в режиме команд экрана?

1 Ответ

2 голосов
/ 19 июля 2009

Я не думаю, что screen имеет какой-либо способ запуска команд в буфере вставки.

Один из способов сделать это - создать привязку для сохранения буфера вставки и открыть новое окно на экране, на котором запускается скрипт для изменения буфера. Затем сделайте еще одну привязку, чтобы перезагрузить измененный буфер с диска и вставить (это может быть связано с обычной привязкой вставки).

Добавить это в screenrc (изменение пути):

bind -c screensed s eval "writebuf /pathtoscript/screensed.clipboard" "screen sh /pathtoscript/screensed.sh"
bind -c screensed p eval "readbuf /pathtoscript/screensed.clipboard" "paste ."
bind , command -c screensed

Сделайте где-нибудь скрипт оболочки:

#!/usr/bin/env sh
echo "Enter sed script: "
read sedcommand
sed -i ${sedcommand} /pathtoscript/screensed.clipboard
echo "(Enter to return)"
read something

"ctrl-a, s" на экране выведет буфер обмена и создаст новое окно для ввода команды sed. "Ctrl-A, P" будет читать буфер обмена и вставлять. Пауза в конце скрипта показывает, какие ошибки может выдать sed.

...