带有多模式搜索和替换功能的文本编辑器?


8

我正在寻找一个GUI文本编辑器,该编辑器能够执行多模式搜索并一次替换所有模式。如果源是文本文件,则可以使用,在命令行模式下完成sed,但是文本来自剪贴板(没有其他方法)。

我需要:在文本编辑器中粘贴剪贴板中的文本(最多5至50个单词),单击“替换”按钮,并提供一组10个预定义的替换模式,然后将结果复制到剪贴板。此序列将执行约3000次...


再三考虑,这不属于Stack Exchange网站软件建议书吗?
彼得·莫滕森

我制作了一个文本编辑器,可以执行完整的Python样式正则表达式(使用Python regex模块)。它还允许使用数字组进行替换,甚至允许使用自定义功能进行替换。我尚未发布它,但我正在努力使其发布。提醒我,如果您有兴趣,如果我什么也没说,请及时通知您。它会一次替换所有内容,或者一次替换一次,或者替换文本插入前后的所有内容。
Brōtsyorfuzthrāx

@PeterMortensen该部分仍处于测试阶段。另一方面,看看这时最近的50个问题(android,游戏,MSWord ...)和给出的答案,我会说不。
Alwaysask 2014年

@ user2962794期待您,好运!
Alwaysask 2014年

Answers:


13

...为什么不使用脚本?检查xclipsudo 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 2014年

真好 比我现在好/快一些。谢谢。我投了赞成票,但Q仍然存在-具有内置的多样式文本替换功能的文本编辑器。甚至可以用作gedit或类似工具的插件。
Alwaysask 2014年

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

我向您介绍Vim编辑器!(或Gvim用于图形实现)

# apt-get install gvim

有了这个文本编辑器,您几乎可以完成所有事情。它基于键盘快捷键,例如i用于输入文本和dd删除文本行,dw删除单词,d2w删除两个单词。

您的情况:要从剪贴板粘贴文本,请使用 "*p

要替换文本:s/foo/bar/g,请在此处用bar替换foo。


1
您还可以使用链接一堆命令|,例如::%s/foo/bar/g | %s/brown/fox/g | %s/lorum/ipsun/g。或一次将命令放在文件中一行,然后用于:source commandfile.vim运行命令。或创建一个宏...
evilsoup 2014年

Vim从来没有对我吸引过(我被宠坏了,是的),但是我会尽快给它,看看它是否/如何完成工作。
Alwaysask 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.