Текстовый редактор с многократным поиском и заменой сразу?

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

Мне нужно: вставить текст из буфера обмена (максимум 5-50 слов) в текстовом редакторе, нажать кнопку "заменить" с набором из 10 предопределенных шаблонов замены и скопировать результат в буфер обмена. Эта последовательность будет сделана около 3000 раз...

3 ответа

... почему бы не использовать скрипт? Проверьте xclip (sudo apt-get install xclip)

 xclip -o -selection clipboard  

отправит буфер обмена на стандартный вывод, и с -i Вы можете заменить буфер обмена. Так

 xclip -o -selection clipboard | sed "s/change this/to this/" | xclip -i -selection clipboard 

применит изменение к выбору, и теперь вы можете вставить его.

Если вам нужна графическая вещь, вы можете встроить скрипт с помощью yad:

#! /bin/bash 
#
yad --title Choose --button One:1 --button Two:2 --button Three:3
choice=$?
case $choice in
        1) 
        xclip -o -selection clipboard | 
                sed "s/one/uno/" | 
                xclip -i -selection clipboard
        xclip -o selection clipboard
        ;;
        2)      
        xclip -o -selection clipboard | 
                sed "s/two/dos/" | 
                xclip -i -selection clipboard
        xclip -o selection clipboard
        ;;
        3)
        echo "executing 3 --- well, you got the idea"
        ;;
esac

Это покажет вам такой диалог:

ЯД пример

Обратите внимание, что сценарий изменит буфер буфера обмена (вставит) и распечатает его. Например, чтобы встроить это в редактор vimВы можете сделать следующее:

  1. Добавьте к вашему .vimrc:

    nmap <F4> :r ! /path/to/the/script <CR>
    
  2. запустить например гвим.

  3. Теперь вы скопируете текст, зайдите в редактор, нажмите F4. Выберите изменение, которое вы хотите применить.

  4. Текст появится в редакторе. Если все хорошо, как есть, вы можете вставить его. Иначе

  5. Отредактируйте текст и скопируйте его снова. (В gvimВы можете выделить текст мышью и просто выбрать вставить --- или узнать vim команды, что угодно).

Он может быть оптимизирован наверняка (вы можете легко определить другую клавишу для выбора и вставки измененного текста, чтобы иметь еще меньше нажатий клавиш)

Вы можете сделать все это в командной строке, по-прежнему используя что-то вроде xsel или же xclip получить текущий буфер обмена и затем вставить результат обратно в него. Вот небольшой пример, который показывает sed используется для выполнения нескольких замен.

echo -n abc | xsel -bi                               # write to clipboard
xsel -bo | sed 's/abc/def/;s/def/123/' | xsel -bi    # process it
echo $(xsel -bo)                                     # output it for testing

Возвращает 123

Представляю вам редактор Vim! (или Gvim для графической реализации)

# apt-get install gvim

С этим текстовым редактором вы можете делать практически все. Он основан на сочетаниях клавиш, таких как i для ввода текста и dd для удаления текстовых строк, dw для удаления слов, d2w для удаления двух слов.

В вашем случае: чтобы вставить свой текст из буфера обмена используйте "*p

И для замены текста использовать :s/foo/bar/g заменяя foo на bar здесь.

Другие вопросы по тегам