具有多种模式同时搜索和替换功能的文本编辑器?

具有多种模式同时搜索和替换功能的文本编辑器?

我正在寻找一个能够同时进行多模式搜索和替换的 GUI 文本编辑器。如果源是文本文件,则可以在命令行模式下使用 进行操作sed,但文本来自剪贴板(没有其他方法)。

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

答案1

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

 xclip -o -selection clipboard  

会将剪贴板发送到标准输出,然后-i您就可以替换剪贴板。所以

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

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

如果你想要图形化的东西,你可以嵌入脚本亚德

#! /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,无论什么)。

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

答案2

您可以在命令行上完成所有这些操作,仍然使用类似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

答案3

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

# apt-get install gvim

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

在你的情况下:从剪贴板粘贴文本使用"*p

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

相关内容