我有一个用 Notepad++ 和 Pycharm 编写的大型 Python 脚本库,我想开始使用 Emacs 运行它们。但是,这些文件的某些内容导致 Emacs 中出现语法错误。
作为最小工作示例,我在 Notepad++ 中保存了以下内容:
print('hello world')
然后,我在 Emacs 22.3.1 中打开它,然后转到 Python --> Start Interpreter。我输入 C-c C-c,然后在解释器屏幕中出现以下错误:
File "/tmp/py110681cL", line 1
print('hello world')
^
SyntaxError: invalid syntax
这使得它看起来像是在行的开头读取了一个缩进,但我在 Emacs 文本编辑器窗口中没有看到它。我尝试清理空白但无济于事。
如果我在 Emacs 中创建一个新文件并手动键入相同的代码,则按照此过程它运行得很好。
我不想手动重新输入所有预先存在的脚本,那么如何删除这个幻像空间呢?谷歌没有帮助...
更新:Notepad++ 用 [CR][LF] 代表我的新行。删除 Notepad++ 中的回车符可以使其在 Emacs 中运行。
最佳答案
问题似乎是 notepad++ 使用 \r\n
(CARRIAGE RETURN + LINE FEED) 来表示换行符,而 Emacs 将 \r
解释为无效缩进(因为它是空格)。
为了防止将来发生这种情况,您可以转到设置 -> 首选项... -> 新文档 -> 格式(行结尾)
并选择 Unix/OSX
。 \r\n
是 Windows 中表示换行符的方式,在 Unix/OSX/Linux 中是 \n
。 (旧版 Mac 只是 \r
)。
要修改现有文件,您可以执行以下操作:
find /path/to/py/files -type f -iname '*.py' -exec sed $'s/\r$//' "{}" +;
(查找 /path/to/py/files
中的所有 .py
文件并执行 sed $'s/\r$//'
(将行尾后面的所有 \r
替换为空)
关于Emacs 中 Notepad++ 中的 Python 脚本错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40387871/