Текстовий редактор з кількома шаблонами пошуку та заміни відразу?


8

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

Мені потрібно: вставити текст із буфера обміну (максимум 5-50 слів) у текстовому редакторі, натиснути кнопку «Замінити» набором 10 попередньо визначених шаблонів заміни та скопіювати результат у буфер обміну. Ця послідовність буде виконана приблизно 3000 разів ...


По-друге, чи не належить це рекомендація щодо програмного забезпечення на сайті Stack Exchange ?
Пітер Мортенсен

Я створив текстовий редактор, який виконує повноцінні регулярні вирази стилю Python (використовуючи модуль регулярного вираження Python). Він також дозволяє використовувати групи номерів для заміни і навіть дозволяє використовувати спеціальні функції для заміни. Я його ще не випустив, але я працюю над тим, щоб підготуватися до випуску. Нагадуйте мені, щоб вас повідомляли, якщо вам цікаво, якщо я нічого не скажу. Він замінить все одразу, або одну річ за раз, або все після або перед вставкою тексту.
Brōtsyorfuzthrāx

@PeterMortensen Цей розділ все ще знаходиться в бета-версії. З іншого боку, дивлячись на останні 50 запитань на даний момент (андроїд, ігри, MSWord ...) та надані відповіді, я б сказав НЕ.
завждизаск

@ user2962794 Чекаємо з нетерпінням, удачі!
завждизаск

Відповіді:


13

... чому б не використовувати сценарій? Перевірити 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

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

Приклад YAD

Зауважте, що сценарій буде модифікувати буфер буфера обміну (вставити) та надрукувати його. Наприклад vim, щоб вставити це в редактор , ви можете зробити наступне:

  1. Додати до свого .vimrc:

    nmap <F4> :r ! /path/to/the/script <CR>
    
  2. запустіть, наприклад, gvim.

  3. Тепер ви скопіюєте текст, перейдіть до редактора, натисніть F4. Виберіть зміну, яку хочете застосувати.

  4. Текст з’явиться в редакторі. Якщо це все нормально, ви можете вставити його. Інакше

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

Це може бути оптимізовано точно (ви, ймовірно, можете легко визначити іншу клавішу, щоб вибрати та вставити модифікований текст, щоб у вас було ще менше використання клавіш)


Це в значній мірі для використання зараз, але мені потрібно перевірити результат, перш ніж копіювати текст у буфер обміну, а іноді робити зміни вручну (і робити це швидко). Приємна відповідь, але для цього потрібно бути текстовим редактором.
завждизаск

Гммм, так, я розумію. Давайте подивимось ...
Рмано

Приємно. Це трохи краще / швидше, ніж я зараз роблю. Дякую. Я проголосував, але Q залишається - текстовий редактор з вбудованою можливістю багатозахисного тексту. Навіть як плагін для gedit або подібних.
завждизаск

5

Ви можете зробити це все в командному рядку, використовуючи щось подібне 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


Як я вже говорив у коментарі до іншої відповіді, я віддаю перевагу текстовому редактору.
завждизаск

3

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

# apt-get install gvim

З цим текстовим редактором ви можете зробити майже все. Він заснований на комбінаціях клавіш, таких як iвведення тексту та ddвидалення текстових ліній, dwвидалення слів, d2wвидалення двох слів.

У вашому випадку: вставте текст із буфера обміну "*p

І для заміни тексту тут використовується :s/foo/bar/gзаміна foo на штрих.


1
Ви можете також прикувати купу команд , використовуючи |, наприклад: :%s/foo/bar/g | %s/brown/fox/g | %s/lorum/ipsun/g. Або кладіть команди по одному рядку у файл і використовуйте :source commandfile.vimдля запуску команд. Або створити макрос ...
evilsoup

Вім ніколи не був надто привабливим для мене (я зіпсований, так), але я дам йому швидше і побачу, чи / як він виконує роботу.
завждизаск
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.