Текстовый редактор с многократным поиском и заменой сразу?
Я ищу текстовый редактор с графическим интерфейсом, который способен выполнять поиск по нескольким шаблонам и заменять все сразу. Если источником будет текстовый файл, это можно сделать в режиме командной строки с помощью 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
Вы можете сделать следующее:
Добавьте к вашему
.vimrc
:nmap <F4> :r ! /path/to/the/script <CR>
запустить например гвим.
Теперь вы скопируете текст, зайдите в редактор, нажмите F4. Выберите изменение, которое вы хотите применить.
Текст появится в редакторе. Если все хорошо, как есть, вы можете вставить его. Иначе
Отредактируйте текст и скопируйте его снова. (В
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 здесь.