【问题标题】:vi substitution different behaviour from vimvi 替换与 vim 不同的行为
【发布时间】:2016-09-11 15:04:18
【问题描述】:

我正在尝试用经典 vi(在 arch linux 中)中的单词替换换行符。替换命令如下所示:

:%s/\n/word/g

在 vim 中确实有效。我正在处理的文件是从 Calc 复制/粘贴的结果(来自数据仓库程序的 csv)。

VIM 输出是行被替换(导致非常冗长的行,这是我必须提供给另一个程序的命令)。 我在 VIM 上的 Windows 和 Linux 中对此进行了测试。

Vi 在同一文件上的输出是:“替换模式匹配失败”

我使用的vi版本是Arch中的默认版本:Version 4.0 (gritter) 12/25/06

这是经典的vi。

这不是我在 VIM 中无法做到的,但为什么这在 vi 中不起作用?有没有办法使这项工作?我试图寻找解决方案,但没有遇到任何有用的东西。

【问题讨论】:

    标签: vi


    【解决方案1】:

    vi 使用ex regular-expressions,主要是POSIX Basic Regular Expressions,不需要C 风格的转义序列。可以使用join commend from ex 代替,使用! 来防止修改(它通常会调整空格)。

    :%j!
    

    替代命令可用于模拟替换换行符。

    :2,$s/^/start
    :1,$-s/$/end
    :%j!
    

    【讨论】:

    • 谢谢,这个答案非常有用且内容丰富。
    猜你喜欢
    • 2019-05-23
    • 2012-07-22
    • 2020-12-16
    • 2014-09-22
    • 2017-09-18
    • 2011-10-10
    • 2017-05-03
    • 2013-09-22
    相关资源
    最近更新 更多