Trình soạn thảo văn bản với tìm kiếm đa mẫu và thay thế cùng một lúc?


8

Tôi đang tìm kiếm một trình soạn thảo văn bản GUI có khả năng thực hiện tìm kiếm nhiều mẫu và thay thế tất cả cùng một lúc. Nếu nguồn sẽ là một tệp văn bản, nó có thể được thực hiện trong chế độ dòng lệnh với sed, nhưng văn bản đến từ bảng ghi tạm (không có cách nào khác có thể).

Tôi cần: dán văn bản từ bảng ghi tạm (tối đa 5-50 từ) vào trình chỉnh sửa văn bản, nhấn nút 'thay thế' bằng một bộ 10 mẫu thay thế được xác định trước và sao chép kết quả vào bảng tạm. Trình tự này sẽ được thực hiện khoảng 3000 lần ...


Theo suy nghĩ thứ hai, không phải cái này thuộc về Khuyến nghị phần mềm của trang web Stack Exchange sao?
Peter Mortensen

Tôi đã tạo một trình soạn thảo văn bản thực hiện đầy đủ các biểu thức chính quy kiểu Python (sử dụng mô-đun regex Python). Nó cũng cho phép sử dụng các nhóm số để thay thế và thậm chí cho phép sử dụng các chức năng tùy chỉnh để thay thế. Tôi chưa phát hành nó, nhưng tôi đang làm việc để nó sẵn sàng để phát hành. Nhắc tôi để giữ cho bạn được đăng nếu bạn quan tâm, nếu tôi không nói bất cứ điều gì. Nó sẽ thay thế mọi thứ cùng một lúc, hoặc một điều tại một thời điểm, hoặc mọi thứ sau hoặc trước khi chèn văn bản.
Brōtsyorfuzthrāx

@PeterMortensen Phần đó vẫn đang trong giai đoạn thử nghiệm. Mặt khác, nhìn vào 50 câu hỏi gần đây nhất tại thời điểm này (android, trò chơi, MSWord ...) và các câu trả lời được đưa ra, tôi sẽ nói KHÔNG.
luôn luôn

@ user2962794 Mong, chúc may mắn!
luôn luôn

Câu trả lời:


13

... Tại sao không sử dụng một kịch bản? Kiểm tra xclip( sudo apt-get install xclip)

 xclip -o -selection clipboard  

sẽ gửi bảng tạm đến đầu ra tiêu chuẩn và với -ibạn có thể thay thế bảng tạm. Vì thế

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

sẽ áp dụng thay đổi cho lựa chọn và bây giờ bạn có thể dán nó.

Nếu bạn muốn một thứ đồ họa, bạn có thể nhúng tập lệnh với 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

Điều đó sẽ cho bạn thấy một hộp thoại như thế này:

Ví dụ YAD

Lưu ý rằng tập lệnh sẽ sửa đổi bộ đệm (dán) và in nó. Ví dụ vim, để nhúng phần này vào trình chỉnh sửa , bạn có thể làm như sau:

  1. Thêm vào của bạn .vimrc:

    nmap <F4> :r ! /path/to/the/script <CR>
    
  2. chạy ví dụ gvim.

  3. Bây giờ bạn sao chép văn bản, vào trình chỉnh sửa, nhấn F4. Chọn thay đổi bạn muốn áp dụng.

  4. Văn bản sẽ xuất hiện trong trình chỉnh sửa. Nếu nó ổn, bạn có thể dán nó. Nếu không thì

  5. Chỉnh sửa văn bản và sao chép lại. (Trong gvim, bạn có thể chọn văn bản bằng chuột và chỉ cần chọn dán --- hoặc tìm hiểu các vimlệnh, bất cứ điều gì).

Nó có thể được tối ưu hóa chắc chắn (bạn có thể dễ dàng xác định một phím khác để chọn và dán văn bản đã sửa đổi để bạn thậm chí ít sử dụng phím nhấn hơn)


Đây là khá nhiều những gì sử dụng bây giờ nhưng tôi cần kiểm tra kết quả trước khi sao chép văn bản vào bảng tạm và đôi khi thực hiện một số thay đổi thủ công (và thực hiện nhanh chóng). Câu trả lời tốt đẹp nhưng nó cần phải là một trình soạn thảo văn bản.
luôn luôn

Hmmm, vâng, tôi hiểu. Để xem ...
Rmano

Đẹp. Nó tốt hơn một chút / nhanh hơn tôi hiện đang làm. Cảm ơn. Tôi đã bỏ phiếu nhưng Q vẫn còn - một trình soạn thảo văn bản với khả năng thay thế văn bản đa mẫu được tích hợp. Ngay cả khi là một plugin cho gedit hoặc như nhau.
luôn luôn

5

Bạn có thể làm tất cả điều này trên dòng lệnh vẫn sử dụng một cái gì đó như xselhoặc xclipđể lấy bảng tạm hiện tại và sau đó nhét kết quả trở lại vào nó. Đây là một ví dụ nhỏ cho thấy sedđang được sử dụng để thực hiện nhiều thay thế.

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

Trả về 123


Như tôi đã nói trong nhận xét của mình về câu trả lời khác, tôi thích trình soạn thảo văn bản hơn.
luôn luôn là

3

Tôi giới thiệu với bạn biên tập Vim! (hoặc Gvim để thực hiện đồ họa)

# apt-get install gvim

Với trình soạn thảo văn bản này, bạn có thể làm khá nhiều thứ. Nó dựa trên các phím tắt như iđể nhập văn bản và ddxóa các dòng văn bản , dwđể xóa các từ, d2wđể xóa hai từ.

Trong trường hợp của bạn: để dán văn bản của bạn từ bảng ghi tạm, hãy sử dụng "*p

Và để thay thế văn bản sử dụng :s/foo/bar/gthay thế foo bằng thanh ở đây.


1
Bạn cũng có thể xâu chuỗi một loạt các lệnh bằng cách sử dụng |, ví dụ : :%s/foo/bar/g | %s/brown/fox/g | %s/lorum/ipsun/g. Hoặc đặt các lệnh một dòng tại một thời điểm trong một tệp và sử dụng :source commandfile.vimđể chạy các lệnh. Hoặc tạo một macro ...
evilsoup

Vim không bao giờ quá hấp dẫn đối với tôi (tôi hư hỏng, vâng) nhưng tôi sẽ cho nó đi càng sớm càng tốt và xem liệu nó đã hoàn thành công việc như thế nào.
luôn luôn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.