2016-11-02 5 views
1

私はメモ帳++とPycharmで書いたPythonスクリプトの大きなライブラリを持っていて、Emacsでそれらを実行したいと思います。しかし、これらのファイルに関する何かがEmacsで構文エラーを引き起こしています。メモ帳のPythonスクリプト++ Emacsのエラー

最小作業例として、私はメモ帳+ +で次のように保存されては:次に

print('hello world') 

、私は、Emacs 22.3.1で開き、とPythonに行く - > [スタート通訳。私は、CC Ccとを入力し、私は通訳の画面で、次のエラーが表示されます。

File "/tmp/py110681cL", line 1 
    print('hello world') 
^ 
SyntaxError: invalid syntax 

これは、行の先頭に読んで字下げがあるように見えますが、私はそれを見ていませんEmacsのテキストエディタウィンドウ。私は無駄に空白を掃除しようとしました。

Emacsで新しいファイルを作成して同じコードを手動で入力すると、この手順に従ってうまく動作します。

私は、既存のすべてのスクリプトを手動で再入力したくないので、どうすればこのファントムスペースを削除できますか? Googleは役に立たなかった...

更新:メモ帳++は[CR] [LF]で私の新しい行を表していた。メモ帳++でキャリッジリターンを削除すると、Emacsで実行できるようになりました。

+0

メモ帳で+ 'エンコーディング - > UTF8に変換する 'と' BOMなしでUTF8に変換する'を試してみて、もう一度Emacsでやり直してください – Artyer

+0

提案していただきありがとうございます。最初は「Encode in UTF-8」が既に選択されていました。とにかく消える。) – kevlar

+0

たぶんhttp://stackoverflow.com/questions/3366499/notepad-indentation-messesupが助けることができる。メモ帳の設定に多くの投票と同様の調整があります++ – davedwards

答えて

2

問題は改行を表すために\r\n(キャリッジリターン+ラインフィード)を使用している++そのメモ帳であると思われる、と(それが空白であるように)Emacsは無効インデントとして\rを解釈します。

今後これが起こらないようにするには、Settings -> Preferences... -> New Document -> Format (Line ending)に行き、Unix/OSXを選択してください。 \r\nは、改行を表すWindowsの方法であり、Unix/OSX/Linuxでは\nです。 (旧Macはちょうど\rです)。既存のファイルをammendする

、あなたが行うことができます:

find /path/to/py/files -type f -iname '*.py' -exec sed $'s/\r$//' "{}" +; 

/path/to/py/filesにすべての.pyのファイルを検索し、それらの上にsed $'s/\r$//'を実行する(何も行の末尾が続いているすべての\r Sを交換してください)