如何强制 vim 以单个换行符(LF)结束所有行

如何强制 vim 以单个换行符(LF)结束所有行

正如标题所说,我需要强制 vim(在我的情况下维姆)以单个换行符 (LF) 结束所有行。我该怎么做?

我正在尝试遵循 PHP 编码的标准,特别是http://framework.zend.com/manual/en/coding-standard.php-file-formatting.html#coding-standard.php-file-formatting.line-termination

答案1

简短的答案是在 Vim 中打开文件,然后键入“ :set fileformat=unix”,然后写入文件。从那时起,Vim 应该将文件视为 Unix 文件格式,并且只使用换行符,而不是回车符+换行符。

长话短说,这有时不起作用,因为当你在 Vim 中打开文件时,你会看到实际的^M大多数行末都有字符。在这种情况下,可能有两个原因:

  1. 最有可能的情况是,它最初被保存为 DOS 文件格式,然后被另一个编辑器“损坏”,该编辑器认为它可以将其视为 Unix 格式而无需转换,因此留下了几行没有 DOS 行尾的行。在这种情况下,您应该执行类似:%s/\%x0d$//gthen write 的操作。
  2. 该文件是正确 DOS 文件格式,但 Vim 无法识别这一事实。这可能意味着您的 'fileformats' 选项未正确设置。要了解更多信息,请参阅“ :help 'fileformats'”(单引号是帮助命令的一部分)。

最后,如果您在 Windows 机器上使用 Vim,您可能需要将提到的“fileformats”选项更改为“unix,dos”,~/_vimrc而不是在 DOS/Windows 环境中设置的默认“dos,unix”。这将导致 Vim 以 Unix 格式而不是 DOS 格式创建新的缓冲区。(同样,请参阅帮助以了解详细信息。)

答案2

Heptite 是正确的,并且为了在您编辑 PHP 文件时自动进行此设置,您可以将以下内容添加到文件中~/_vimrc

au BufRead,BufNewFile *.php set fileformat=unix

这是一个自动命令,当您将文件读入缓冲区或创建文件名与模式“*.php”匹配的新缓冲区时,它会运行,并将文件格式设置为“unix”,如 Heptite 的回答所示。

相关内容