【问题标题】:Replacing new line characters with literal '\n' in macvim在macvim中用文字'\ n'替换换行符
【发布时间】:2014-07-01 09:23:20
【问题描述】:

我想在 macvim 的选定区域下用两个文字字符 '\' 和 'n' 替换所有换行符。

例如

我选择了以下几行(在 .js 文件中):

# /messages/{id}

## GET
+ Response 200 (text/plain)

        Hello World!

## DELETE
+ Response 204

那我申请了

:'<,'>s#\n#/\n#g

替换成:

'# /messages/{id}/^@/^@## GET/^@+ Response 200 (text/plain)/^@/^@       Hello World!/^@/^@## DELETE/^@+ Response 204'/^@

我想要的输出是:

# /messages/{id}/\n/\n## GET/\n+ Response 200 (text/plain)/\n/\n       Hello World!/\n/\n## DELETE/\n+ Response 204'/\n

为什么是^@ 而不是\n

我怎样才能得到\n

【问题讨论】:

    标签: vim macvim


    【解决方案1】:

    在替换的搜索部分使用\n,在替换部分使用\r

    :%s#\n#/\r#g
    

    编辑

    哦!是否要将所有 EOL 替换为文字 \n

    :%s/\n/\\n
    

    【讨论】:

    • 我得到了 # /messages/{id}/ / ## GET/ + Response 200 (text/plain)/ / Hello World!/ / ## DELETE/ + Response 204/ 结果...不想要的。并且新行字符仍然存在
    • 这是解决方案,因为您的错误在于未能转义替换文本。在替换中,“\n”作为字符串具有特殊含义。您需要使用额外的“\”字符对其进行转义以删除特殊含义。
    【解决方案2】:
    :'<,'>s#\n#/&#g
    

    :'<,'>s#\n#/\r#g
    

    【讨论】:

    • with second : i got # /messages/{id}/ / ## GET/ + Response 200 (text/plain)/ / Hello World!/ / ## DELETE/ + Response 204/ 结果... 不想要一个。首先我只用 \n 替换了一个 \ 并且换行符仍然存在
    • 正如我在问题中提到的那样,我得到的是 '^@' 而不是 '\n'.. 我用所需的输出纠正了这个问题
    猜你喜欢
    • 1970-01-01
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 2021-09-26
    • 2014-08-25
    • 2011-10-29
    相关资源
    最近更新 更多