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

alw*_*ask 8 text-editor software-recommendation

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

我需要:将剪贴板中的文本(最多 5-50 个字)粘贴到文本编辑器中,使用一组 10 个预定义的替换模式点击“替换”按钮,然后将结果复制到剪贴板。这个序列将完成大约 3000 次......

Rma*_*ano 13

...为什么不使用脚本?检查xclip( sudo apt-get install xclip)

 xclip -o -selection clipboard  
Run Code Online (Sandbox Code Playgroud)

将剪贴板发送到标准输出,-i您可以更换剪贴板。所以

 xclip -o -selection clipboard | sed "s/change this/to this/" | xclip -i -selection clipboard 
Run Code Online (Sandbox Code Playgroud)

将更改应用于选择,现在您可以粘贴它。

如果你想要一个图形化的东西,你可以用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
Run Code Online (Sandbox Code Playgroud)

这将显示一个对话框,如下所示:

YAD示例

请注意,脚本将修改剪贴板(粘贴)缓冲区并打印它。例如vim,要将其嵌入到编辑器中,您可以执行以下操作:

  1. 添加到您的.vimrc

    nmap <F4> :r ! /path/to/the/script <CR>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 运行例如 gvim。

  3. 现在你复制文本,进入编辑器,按 F4。选择要应用的更改。

  4. 文本将出现在编辑器中。如果没问题,你可以粘贴它。除此以外

  5. 编辑文本并再次复制。(在 中gvim,您可以用鼠标选择文本,然后只需选择粘贴 --- 或学习vim命令,等等)。

它肯定可以优化(您可能可以轻松定义另一个键来选择和粘贴修改后的文本,以便您使用更少的按键)


Oli*_*Oli 5

您可以在命令行上执行所有这些操作,仍然使用类似xselxclip检索当前剪贴板,然后将结果填回其中。这是一个小例子,显示了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
Run Code Online (Sandbox Code Playgroud)

退货 123