打开文件在vim
or vi
,并管理以下命令:
:set ff=unix
保存并退出:
:wq
Done!
解释
ff
代表文件格式 http://vim.wikia.com/wiki/File_format,并且可以接受的值unix
(\n
), dos
(\r\n
) and mac
(\r
) (仅适用于 intel 之前的 Mac,现代 Mac 使用unix
).
要阅读更多有关ff
命令:
:help ff
:wq
stands for Write and Quit, a faster equivalent is Shift+zz (i.e. hold down Shift then press z
twice).
这两个命令都必须在命令模式 http://www.radford.edu/%7Emhtay/CPSC120/VIM_Editor_Commands.htm.
???? offtopic: if by chance you are stuck in vim and need to exit, here https://github.com/hakluke/how-to-exit-vim are some easy ways.
在多个文件上的使用
没有必要在 vim 中实际打开该文件。可以直接从命令行进行修改:
vi +':wq ++ff=unix' file_with_dos_linebreaks.py
处理多个*.py
文件(在bash
):
for file in *.py ; do
vi +':w ++ff=unix' +':q' "${file}"
done
虽然看起来很无辜,但上面的 bash 语法会在包含空格、引号、破折号等的文件名上中断,一个更可靠的替代方案(也可以处理子文件夹)是:
find . -iname '*.py' -exec vi +':w ++ff=unix' +':q' {} \;
删除BOM https://en.wikipedia.org/wiki/Byte_order_mark mark
有时,即使在设置了 UNIX 行结尾之后,运行文件时仍然可能会出现错误,特别是如果文件是可执行的、有一个shebang https://stackoverflow.com/a/19305076/191246,并且您正在运行它而不用前缀python
。该脚本可能有 BOM 标记(例如0xEFBBBF
或其他)这使得 shebang 无效并导致 shell 抱怨。在这些情况下python myscript.py
会工作得很好(因为 pythoncan处理 BOM)但是./myscript.py
设置执行位时将会失败,因为您的 shell(sh、bash、zsh 等)can't处理BOM标记。 (通常是 Windows 编辑器,例如Notepad创建带有 BOM 标记的文件。)
可以通过打开以下文件来删除 BOMvim
并管理以下命令:
:set nobomb