我正在寻找一个能够同时进行多模式搜索和替换的 GUI 文本编辑器。如果源是文本文件,则可以在命令行模式下使用 进行操作sed
,但文本来自剪贴板(没有其他方法)。
我需要:将剪贴板中的文本(最多 5-50 个单词)粘贴到文本编辑器中,使用一组 10 个预定义的替换模式点击“替换”按钮,然后将结果复制到剪贴板。这个序列将执行约 3000 次...
答案1
...为什么不使用脚本?检查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
将把更改应用于选择,现在您可以粘贴它。
如果你想要图形化的东西,你可以嵌入脚本亚德:
#! /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
这将向你显示如下对话框:
请注意,该脚本将修改剪贴板(粘贴)缓冲区并打印它。例如,要将其嵌入编辑器中vim
,您可以执行以下操作:
添加到您的
.vimrc
:nmap <F4> :r ! /path/to/the/script <CR>
例如运行 gvim。
现在复制文本,进入编辑器,按 F4。选择要应用的更改。
文本将出现在编辑器中。如果可以,您可以粘贴它。否则
编辑文本并再次复制。(在 中
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。