【问题标题】:Replace $EDITOR with sed or custom script用 sed 或自定义脚本替换 $EDITOR
【发布时间】:2013-05-26 09:29:01
【问题描述】:

我需要用 sed 替换 $EDITOR。可以在这里看到一个例子:
Changing the dhcp IP range in Virbr0's XML file using virsh in bash script

我想在使用 sed 修改某些内容后打开 Vim,以允许用户查看文本并添加修改。我该怎么做?

我试过了,但显然它不适合我。

EDITOR='vim - sed -i s/foo/bar/g' virsh net-edit default

另外,我尝试用打开临时文件的自定义脚本替换 sed。然后,在修改后,我尝试使用该临时文件打开 vim,但我得到了:

Vim: Warning: Output is not to a terminal

我怎样才能完成这样的任务?

【问题讨论】:

    标签: bash vim sed editor environment-variables


    【解决方案1】:

    你可以为它写一个脚本:

    cp $1 /tmp/tempfile
    sed 's/foo/bar/g' < /tmp/tempfile > $1
    vim $1
    

    然后将该脚本设置为编辑器命令。

    另一种解决方案是使用vim中的命令,很像sed。

    EDITOR="vim -c %s/foo/bar/g"
    

    你也应该想要。

    【讨论】:

    • 如果您特别想先使用 sed,可以通过管道输入 vim 例如:sed 's/foo/bar/g' &lt; file | vim -
    • 可以,但不能将其放在 $EDITOR 中。
    • 我实现了这样的脚本,但没有 vim。一切正常,但我需要 vim。使用 vim 我得到了:Vim:警告:输出不是终端...实现的一切都在 python 中...
    • 您的另一个解决方案非常有趣!但我想弄清楚如何解决我的情况......会看到......如果我找不到解决方案,那么将使用您的第二个解决方案并接受答案。
    • 啊哈!应该在问题中提到python!我有调用 vim 的 python 脚本。他们这样做:subprocess.call('vim -c \'{0}\' {1}'.format(vimCommand, filePath) , shell=True)。重要的部分是shell=True!
    猜你喜欢
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2022-07-21
    • 1970-01-01
    • 2015-04-24
    • 2010-11-29
    • 2014-12-22
    相关资源
    最近更新 更多