Editor teks dengan pencarian multi-pola dan ganti sekaligus?

8

Saya mencari editor teks GUI yang mampu melakukan pencarian multi-pola dan mengganti semuanya sekaligus. Jika sumbernya berupa file teks, itu bisa dilakukan dengan mode baris perintah sed, tetapi teksnya berasal dari clipboard (tidak ada cara lain yang memungkinkan).

Saya perlu: menempelkan teks dari clipboard (paling banyak 5-50 kata) di editor teks, tekan tombol 'replace' dengan 10 pola ganti yang telah ditentukan, dan salin hasilnya ke clipboard. Urutan ini akan dilakukan sekitar 3000 kali ...

selalu bertanya
sumber
Setelah dipikir-pikir, bukankah ini milik Rekomendasi Perangkat Lunak situs Stack Exchange ?
Peter Mortensen
Saya membuat editor teks yang melakukan ekspresi reguler penuh gaya Python (menggunakan modul regex Python). Ini juga memungkinkan untuk menggunakan grup angka untuk penggantian, dan bahkan memungkinkan untuk menggunakan fungsi kustom untuk penggantian. Saya belum merilisnya, tapi saya sedang berusaha menyiapkannya untuk rilis. Ingatkan saya untuk membuat Anda tetap diposting jika Anda tertarik, jika saya tidak mengatakan apa-apa. Ini akan mengganti semuanya sekaligus, atau satu per satu, atau semua setelah atau sebelum teks dimasukkan.
Brōtsyorfuzthrāx
@PeterMortensen Bagian itu masih dalam versi beta. Di sisi lain, melihat 50 pertanyaan terbaru saat ini (android, game, MSWord ...) dan jawaban yang diberikan, saya katakan TIDAK.
alwaysask
@ user2962794 Menantikan, semoga sukses!
alwaysask

Jawaban:

13

... mengapa tidak menggunakan skrip? Periksa xclip( sudo apt-get install xclip)

 xclip -o -selection clipboard  

akan mengirim clipboard ke output standar, dan dengan -iAnda dapat mengganti clipboard. Begitu

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

akan menerapkan perubahan pada pilihan, dan sekarang Anda dapat menempelkannya.

Jika Anda menginginkan sesuatu yang grafis, Anda dapat menyematkan skrip dengan 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

Itu akan menampilkan dialog seperti ini:

Contoh YAD

Perhatikan bahwa skrip akan memodifikasi buffer clipboard (tempel) dan mencetaknya. Untuk menanamkan ini di editor, misalnya vim, Anda dapat melakukan hal berikut:

  1. Tambahkan ke Anda .vimrc:

    nmap <F4> :r ! /path/to/the/script <CR>
    
  2. jalankan misalnya gvim.

  3. Sekarang Anda menyalin teks, pergi ke editor, tekan F4. Pilih perubahan yang ingin Anda terapkan.

  4. Teks akan muncul di editor. Jika tidak apa-apa, Anda dapat menempelnya. Jika tidak

  5. Edit teks dan salin lagi. (Dalam gvim, Anda dapat memilih teks dengan mouse dan cukup pilih tempel --- atau pelajari vimperintah, apa pun).

Itu bisa dioptimalkan untuk pasti (Anda mungkin dapat dengan mudah menentukan kunci lain untuk memilih dan menempelkan teks yang dimodifikasi sehingga Anda memiliki penekanan tombol yang lebih sedikit untuk digunakan)

Rmano
sumber
Ini cukup banyak apa yang digunakan sekarang tapi saya perlu memeriksa hasilnya sebelum menyalin teks ke clipboard dan beberapa kali melakukan beberapa perubahan manual (dan melakukannya dengan cepat). Jawaban yang bagus tetapi harus menjadi editor teks.
alwaysask
Hmmm, ya, saya mengerti. Coba lihat ...
Rmano
Bagus. Ini sedikit lebih baik / lebih cepat daripada yang saya lakukan saat ini. Terima kasih. Saya memilih tetapi Q tetap - editor teks dengan kemampuan multi-pola teks menggantikan built in. Bahkan sebagai plugin untuk gedit atau sama.
alwaysask
5

Anda dapat melakukan ini semua di baris perintah masih menggunakan sesuatu seperti xselatau xclipuntuk mengambil clipboard saat ini dan kemudian memasukkan hasilnya kembali ke dalamnya. Berikut adalah sedikit contoh yang menunjukkan sedsedang digunakan untuk melakukan banyak penggantian.

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

Kembali 123

Oli
sumber
Seperti yang saya katakan di komentar saya pada jawaban yang lain, saya lebih suka editor teks.
alwaysask
3

Saya persembahkan kepada Anda editor Vim! (atau Gvim untuk implementasi grafis)

# apt-get install gvim

Dengan editor teks ini Anda dapat melakukan hampir semua hal. Ini didasarkan pada cara pintas keyboard seperti iuntuk memasukkan teks dan dduntuk menghapus baris teks, dwuntuk menghapus kata-kata, d2wuntuk menghapus dua kata.

Dalam kasus Anda: untuk menempelkan teks Anda dari penggunaan papan klip "*p

Dan untuk mengganti teks gunakan :s/foo/bar/gganti foo dengan bilah di sini.

Pascal
sumber
1
Anda juga dapat rantai sekelompok perintah menggunakan |, misalnya: :%s/foo/bar/g | %s/brown/fox/g | %s/lorum/ipsun/g. Atau letakkan perintah satu baris setiap kali dalam file dan gunakan :source commandfile.vimuntuk menjalankan perintah. Atau buat makro ...
evilsoup
Vim tidak pernah terlalu menarik bagi saya (saya manja, ya) tetapi saya akan segera mencobanya dan melihat apakah / bagaimana hal itu menyelesaikan pekerjaan.
alwaysask