Замените текущее выделение в буфере обмена на модифицированную версию оригинального выделения.

Вопрос или проблема

Я прочитал текущее обсуждение на AskUbuntu, но ни одно из них не подошло точно.

Ситуация:
Я хочу заменить выделенный в данный момент текст (вызывая bash-скрипт через EasyStroke) на его модифицированную версию. Текст модифицируется с помощью регулярных выражений или что-то подобное… это часть скрипта, так что это не имеет значения.

Текущее состояние:
Я могу прочитать выделение из буфера обмена с помощью xclip, модифицировать его и скопировать обратно в буфер обмена с помощью следующей команды (часть вызываемого bash-скрипта):

xclip -o | sed 's/ab/ef/g' | xclip -sel clip

Тестовая строка:

cdabcdabcdabcdab

И после применения вышеуказанной команды вывод (в буфере обмена) будет:

cdefcdefcdefcdef

что верно. Но результат все еще хранится в буфере обмена и не вставляется обратно в приложение. Мне нужно вручную вставить его в текущем приложении с помощью Ctrl+V.

Вопрос:
Как я могу автоматизировать последний шаг нажатия Ctrl+V, чтобы немедленно вставить результат в приложение, в котором был выделен исходный текст?

Я пробовал xclip и xsel, но не смог заставить их работать так, как описано выше.

Есть ли какие-нибудь предложения?

Благодаря комментарию @meuh выше, я смог выполнить эту задачу:

  1. Установите эти программы:

     sudo apt-get -y install xclip xdotool libnotify-bin
    
  2. Создайте скрипт .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/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g'`
     # Создать уведомление в правом нижнем углу с трансформацией
     notify-send  "Измененный текст буфера обмена" "Ввод: $IN\nВывод: $RESULT_HTML"
    
  3. Вызовите этот скрипт из 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;/\&amp;amp;/g; s/&lt;/\&amp;lt;/g; s/&gt;/\&amp;gt;/g'`

# Отображаем уведомление о завершении замены
notify-send "Изменённый текст буфера обмена" "Исходный текст: $IN\nРезультат: $RESULT_HTML"

Убедитесь, что у вашего скрипта есть права на выполнение:

chmod +x modify_clipboard.sh

Шаг 3: Настройка EasyStroke
Теперь мы можем настроить EasyStroke для вызова нашего скрипта.

  1. Откройте EasyStroke и создайте новое действие (Action).
  2. Установите триггер, который будет вызывать наш скрипт. Например, это может быть сочетание клавиш или движение мыши.
  3. Укажите путь к вашему скрипту в поле команды.

Шаг 4: Тестирование
Попробуйте выделить текст в любом приложении и вызвать настроенное действие EasyStroke. Скрипт должен автоматически обработать выделенный текст, произвести замену и вставить результат без необходимости вручную нажимать Ctrl+V.

Заключение:
С помощью данного подхода вы можете эффективно автоматизировать процесс замены текста в приложениях. Использование Bash-скриптов в сочетании с инструментами, такими как xclip и xdotool, позволяет повысить продуктивность и упростить рабочие процессы. Настройка EasyStroke делает этот процесс быстрым и удобным, позволяя вам сосредоточиться на более важных задачах.

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

Оцените материал
Добавить комментарий

Капча загружается...