在Screen的命令模式下运行Sed到Screen的剪贴板

时间:2009-07-18 23:48:16

标签: gnu-screen

我在屏幕的剪贴板中有一个副本,其中包含单词Masi aften。 我想有效地用Bond替换它,以便我直接在Screen的命令模式下编辑剪贴板。 我知道我可以将剪贴板保存到/ tmp并在Vim中运行替换,但我想学习Screen。

我按照屏幕剪贴板中的数据运行

Ctrl-A : sed s/Masi/Bond/ | [Screen's clipboard]       /// I do not know how to refer to Screen's clipboard by a command other that C-A ]

我得到了

unknown command sed

如何在屏幕的命令模式下向Screen的剪贴板运行命令?

1 个答案:

答案 0 :(得分:2)

我认为屏幕无法在粘贴缓冲区上运行命令。

执行此操作的一种方法是进行绑定以保存粘贴缓冲区并在屏幕中打开一个新窗口,该窗口运行脚本以修改缓冲区。然后再进行另一次绑定,从磁盘重新加载修改后的缓冲区并粘贴(这可以绑定在普通的粘贴绑定上)。

将此添加到screenrc(更改路径):

bind -c screensed s eval "writebuf /pathtoscript/screensed.clipboard" "screen sh /pathtoscript/screensed.sh"
bind -c screensed p eval "readbuf /pathtoscript/screensed.clipboard" "paste ."
bind , command -c screensed

在某处创建一个shell脚本:

#!/usr/bin/env sh
echo "Enter sed script: "
read sedcommand
sed -i ${sedcommand} /pathtoscript/screensed.clipboard
echo "(Enter to return)"
read something

屏幕中的“ctrl-a,s”将转储剪贴板并为要输入的sed命令创建一个新窗口。 “ctrl-a,p”将读取剪贴板并粘贴。脚本末尾的暂停是显示sed可能给出的任何错误。