แก้ไขข้อความด้วยการค้นหาหลายรูปแบบและแทนที่ในครั้งเดียว?


8

ฉันกำลังมองหาโปรแกรมแก้ไขข้อความ GUI ที่สามารถทำการค้นหาหลายรูปแบบและแทนที่ทั้งหมดในครั้งเดียว หากแหล่งที่มาจะเป็นไฟล์ข้อความก็สามารถทำได้ในโหมดบรรทัดคำสั่งด้วยsedแต่ข้อความมาจากคลิปบอร์ด (ไม่มีวิธีอื่นที่เป็นไปได้)

ฉันต้องการ: วางข้อความจากคลิปบอร์ด (มากที่สุด 5-50 คำ) ในตัวแก้ไขข้อความกดปุ่ม 'แทนที่' ด้วยชุดรูปแบบการแทนที่ที่กำหนดไว้ล่วงหน้า 10 ชุดและคัดลอกผลลัพธ์ไปยังคลิปบอร์ด ลำดับนี้จะทำประมาณ 3000 ครั้ง ...


ในความคิดที่สองสิ่งนี้ไม่ได้อยู่ในคำแนะนำซอฟต์แวร์ไซต์ Exchange Exchange ใช่หรือไม่
Peter Mortensen

ฉันสร้างเท็กซ์เอดิเตอร์ที่ทำนิพจน์ปกติของ Python แบบเต็ม (ใช้โมดูล Python regex) นอกจากนี้ยังอนุญาตให้ใช้กลุ่มหมายเลขสำหรับการเปลี่ยนและยังอนุญาตให้ใช้ฟังก์ชั่นที่กำหนดเองสำหรับการเปลี่ยน ฉันยังไม่ได้วางจำหน่าย แต่ฉันกำลังเตรียมให้พร้อมสำหรับการเปิดตัว เตือนฉันเพื่อให้คุณโพสต์ถ้าคุณสนใจถ้าฉันไม่พูดอะไร มันจะแทนที่ทุกอย่างในครั้งเดียวหรืออย่างใดอย่างหนึ่งในเวลาหรือทุกอย่างหลังจากหรือก่อนที่จะแทรกข้อความ
Brōtsyorfuzthrāx

@PeterMortensen ส่วนนั้นยังอยู่ในช่วงเบต้า ในขณะที่ดูคำถามล่าสุด 50 ข้อในเวลานี้ (Android, เกม, MSWord ... ) และคำตอบที่ได้รับฉันจะบอกว่าไม่ได้
Alwaysask

@ user2962794 หวังว่าจะโชคดี!
alwaysask

คำตอบ:


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คำสั่งอะไรก็ได้)

มันอาจได้รับการปรับให้เหมาะสมอย่างแน่นอน (คุณอาจจะสามารถกำหนดคีย์อื่นเพื่อเลือกและวางข้อความที่แก้ไขเพื่อให้คุณมีปุ่มกดใช้งานน้อยลง)


นี่เป็นสิ่งที่ใช้กันมากตอนนี้ แต่ฉันต้องตรวจสอบผลลัพธ์ก่อนที่จะคัดลอกข้อความไปยังคลิปบอร์ดและบางครั้งก็ทำการเปลี่ยนแปลงด้วยตนเอง (และทำอย่างรวดเร็ว) คำตอบที่ดี แต่ต้องเป็นโปรแกรมแก้ไขข้อความ
Alwaysask

อืมฉันเข้าใจ ลองดู ...
Rmano

ดี มันดีกว่า / เร็วกว่าที่ฉันทำอยู่เล็กน้อย ขอบคุณ ฉันลงคะแนน แต่ Q ยังคงอยู่ - โปรแกรมแก้ไขข้อความที่มีความสามารถในการแทนที่ข้อความหลายลวดลายในตัวแม้เป็นปลั๊กอินสำหรับ gedit หรือเหมือนกัน
Alwaysask

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


ตามที่ฉันพูดในความคิดเห็นของฉันในคำตอบอื่น ๆ ฉันต้องการแก้ไขข้อความ
alwaysask

3

ฉันนำเสนอให้คุณแก้ไขเป็นกลุ่ม! (หรือ 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เพื่อรันคำสั่ง หรือสร้างมาโคร ...
เสียหาย

เสียงเรียกร้องไม่เคยน่าสนใจสำหรับฉันเกินไป (ฉันใจแตกใช่แล้ว) แต่ฉันจะให้มันเป็นไปโดยเร็วและดูว่า / วิธีการได้งานทำ
Alwaysask
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.