Вопрос или проблема
Я прочитал текущее обсуждение на AskUbuntu, но ни одно из них не подошло точно.
Ситуация:
Я хочу заменить выделенный в данный момент текст (вызывая bash-скрипт через EasyStroke) на его модифицированную версию. Текст модифицируется с помощью регулярных выражений или что-то подобное… это часть скрипта, так что это не имеет значения.
Текущее состояние:
Я могу прочитать выделение из буфера обмена с помощью xclip, модифицировать его и скопировать обратно в буфер обмена с помощью следующей команды (часть вызываемого bash-скрипта):
xclip -o | sed 's/ab/ef/g' | xclip -sel clip
Тестовая строка:
cdabcdabcdabcdab
И после применения вышеуказанной команды вывод (в буфере обмена) будет:
cdefcdefcdefcdef
что верно. Но результат все еще хранится в буфере обмена и не вставляется обратно в приложение. Мне нужно вручную вставить его в текущем приложении с помощью Ctrl+V.
Вопрос:
Как я могу автоматизировать последний шаг нажатия Ctrl+V, чтобы немедленно вставить результат в приложение, в котором был выделен исходный текст?
Я пробовал xclip
и xsel
, но не смог заставить их работать так, как описано выше.
Есть ли какие-нибудь предложения?
Благодаря комментарию @meuh выше, я смог выполнить эту задачу:
-
Установите эти программы:
sudo apt-get -y install xclip xdotool libnotify-bin
-
Создайте скрипт
.bash
для трансформации:#!/bin/bash # Скрипт для замены выделения на выходные данные, преобразованные с помощью 'sed' (вызывается с easystroke или аналогично) IN=`xclip -o` # Пример: заменить все 'ab' на 'ef' RESULT=`echo "$IN" | sed -e 's/ab/ef/g'` # Вывести этот результат в буфер обмена xdotool type "$RESULT" # Преобразовать результат в HTML для вывода с помощью notify-send RESULT_HTML=`echo "$RESULT" | sed 's/&/\&/g; s/</\</g; s/>/\>/g'` # Создать уведомление в правом нижнем углу с трансформацией notify-send "Измененный текст буфера обмена" "Ввод: $IN\nВывод: $RESULT_HTML"
-
Вызовите этот скрипт из easystroke или аналогичной программы, которая обрабатывает нажатия клавиш или мыши.
Ответ или решение
Как автоматизировать замену выделенного текста в приложении с использованием Bash и EasyStroke
Введение:
В данной статье мы рассмотрим, как заменить выделенный текст в приложении на модифицированную версию этого текста с использованием Bash-скрипта и утилиты EasyStroke. Мы исследуем установку необходимых инструментов, написание скрипта и его интеграцию с EasyStroke для автоматизации процесса вставки результата.
Шаг 1: Установка необходимых пакетов
Для начала нам понадобятся утилиты xclip
, xdotool
и libnotify-bin
. Эти инструменты помогут нам считывать текст из буфера обмена, эмулировать нажатие клавиш и отображать уведомления. Установите их с помощью следующей команды:
sudo apt-get -y install xclip xdotool libnotify-bin
Шаг 2: Создание Bash-скрипта
Теперь создадим Bash-скрипт, который будет выполнять необходимые преобразования и автоматически вставлять результат в приложение. Сохраните следующий код в файл, например, modify_clipboard.sh
:
#!/bin/bash
# Получаем выделенный текст из буфера обмена
IN=`xclip -o`
# Применяем преобразования, например, заменяем все 'ab' на 'ef'
RESULT=`echo "$IN" | sed -e 's/ab/ef/g'`
# Вставляем результат в текущее приложение (нужно для эмуляции нажатия клавиши)
xdotool type "$RESULT"
# Подготовка результата для отображения в уведомлении
RESULT_HTML=`echo "$RESULT" | sed 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g'`
# Отображаем уведомление о завершении замены
notify-send "Изменённый текст буфера обмена" "Исходный текст: $IN\nРезультат: $RESULT_HTML"
Убедитесь, что у вашего скрипта есть права на выполнение:
chmod +x modify_clipboard.sh
Шаг 3: Настройка EasyStroke
Теперь мы можем настроить EasyStroke для вызова нашего скрипта.
- Откройте EasyStroke и создайте новое действие (Action).
- Установите триггер, который будет вызывать наш скрипт. Например, это может быть сочетание клавиш или движение мыши.
- Укажите путь к вашему скрипту в поле команды.
Шаг 4: Тестирование
Попробуйте выделить текст в любом приложении и вызвать настроенное действие EasyStroke. Скрипт должен автоматически обработать выделенный текст, произвести замену и вставить результат без необходимости вручную нажимать Ctrl+V
.
Заключение:
С помощью данного подхода вы можете эффективно автоматизировать процесс замены текста в приложениях. Использование Bash-скриптов в сочетании с инструментами, такими как xclip и xdotool, позволяет повысить продуктивность и упростить рабочие процессы. Настройка EasyStroke делает этот процесс быстрым и удобным, позволяя вам сосредоточиться на более важных задачах.
Не забудьте протестировать различные регексы и модификации, чтобы добиться желаемого результата.