You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Vim中强制混合换行符:解决Python脚本跨平台执行报错问题

解决Python文件Shebang换行符问题及Vim编辑配置

问题根源

Windows下生成的Python文件默认用CRLF(\r\n)换行,添加Shebang行后,Linux会把行尾的\r(显示为^M)当成python3的一部分,导致系统查找python3^M这个不存在的命令,触发错误。

用Vim单独修改首行换行符

直接在Vim内操作即可完成,无需拆分文件再合并:

  • 打开目标文件:vim x.py
  • 进入命令模式,执行替换命令修改首行换行符:
    1s/\r$//
    
    这条命令仅针对第1行,删掉行尾的\r,将首行的CRLF替换为Unix风格的LF换行。
  • 保存文件::w

编辑时隐藏^M并保持全局DOS换行

修改首行后,编辑时其他行的^M会显示出来,想要隐藏该标记同时保留其他行的CRLF格式,按以下设置操作:

  1. 在Vim中执行两条命令:
    set fileformat=dos
    set nolist
    
    • fileformat=dos:让Vim默认以CRLF格式处理其他行,编辑时自动维持DOS换行规则。
    • set nolist:关闭列表显示模式,行尾的\r(即^M)就不会再显示。
  2. 若担心保存时Vim自动将首行的LF转为CRLF,可临时开启二进制模式:
    set binary
    set noeol
    
    二进制模式下Vim不会自动转换换行符,noeol避免在文件末尾额外添加换行符,确保首行的LF格式不变。保存后执行set nobinary即可恢复正常编辑模式。

验证效果

修改完成后,在Linux下给文件添加执行权限:chmod +x x.py,执行./x.py即可正常运行,不会再出现找不到命令的错误。

内容的提问来源于stack exchange,提问作者hochl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:10:18