当我在笔记本电脑上打开 Vim 并运行正则表达式时,如下所示:
:%s/foo/\n/g
vim 插入 ^@ 而不是换行符。
这个问题从上周开始发生。我运行的是 Ubuntu 18.04.04。我认为问题可能是在 Ubuntu 安装更新后开始的。
我尝试过的事情
编码和文件编码
我尝试将编码和文件编码设置为utf-8,然后设置为latin1,但这没有什么区别。
:郎
:lang 产生“当前语言:”LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=es_ES.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=es_ES.UTF-8;LC_MESSAGES=en_US.UTF- 8;LC_PAPER=es_ES.UTF-8;LC_NAME=es_ES.UTF-8;LC_ADDRESS=es_ES.UTF-8;LC_ TELEPHONE=es_ES.UTF-8;LC_MEASUREMENT=es_ES.UTF-8;LC_IDENTIFICATION=es_ES.UTF-8 ”
如果我用以下命令调用 vim
LC_ALL=C vim foo
那么它没有什么区别,问题仍然出现。
答案1
vim 中的 \n 表示替换并不是换行符,而是 null。
使用 \r 代替。例如
:%s/foo/\r/g