2016-11-02 2 views
1

У меня есть большая библиотека скриптов python, которые я написал в Notepad ++ и Pycharm, и я бы хотел запустить их с Emacs. Однако что-то об этих файлах вызывает синтаксическую ошибку в Emacs.Python Script из Notepad ++ Ошибка в Emacs

В качестве рабочего примера минимальной, я сэкономил следующее в Notepad ++:

print('hello world') 

Затем я открываю его в Emacs 22.3.1, и перейти на Python -> Start интерпретатора. Я типа Cc Cc, и я получаю следующее сообщение об ошибке в окне интерпретатора:

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

Это делает его похожим на есть отступы он читает в начале строки, но я не вижу его в Окно текстового редактора Emacs. Я попробовал очистить пробелы безрезультатно.

Если я создаю новый файл в Emacs и вручную набираю тот же код, он отлично работает после этой процедуры.

Я бы предпочел не вручную повторять все мои ранее существовавшие скрипты, так как я могу удалить это фантомное пространство? Google не помог ...

UPDATE: Notepad ++ представлял мои новые строки с помощью [CR] [LF]. Удаление возврата каретки в Notepad ++ позволило запустить Emacs.

+0

В Notepad ++ попробуйте «Кодирование -> Преобразовать в UTF8', а также« Конвертировать в UTF8 без спецификации »и повторить попытку в Emacs. – Artyer

+0

Спасибо за предложение. Я попробовал оба, но получил тот же результат. (Когда я открыл его в Notepad ++ изначально «Encode in UTF-8» уже был выбран. все равно.) – kevlar

+0

Возможно, http://stackoverflow.com/questions/3366499/notepad-indentation-messes-up может помочь. Имеет много голосов и аналогичную настройку в настройках в блокноте ++ – davedwards

ответ

2

Проблема, кажется, что Notepad ++ использует \r\n (возврат каретки + Line Feed) для представления новой строки, и Emacs интерпретирует \r как недействительный отступ (как это пробел).

Чтобы предотвратить это в будущем, вы можете перейти на Settings -> Preferences... -> New Document -> Format (Line ending) и выбрать Unix/OSX. \r\n - это способ отображения строк в Windows, и это \n в Unix/OSX/Linux. (Старый Mac - только \r).

Чтобы ammend существующих файлов, вы можете сделать:

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

(Находит все .py файлов в /path/to/py/files и выполняет sed $'s/\r$//' на них (Replace всех \r S, которые следуют до конца строки ни с чем)

Смежные вопросы