Как заставить emacs использовать \n вместо \r\n

Я должен использовать окна для написания некоторых сценариев оболочки. Я решил использовать emacs, но при запуске скрипта получаю странную ошибку:

/bin/bash^M: bad interpreter: No such file or directory

Поправьте меня, если я ошибаюсь, но похоже, что шебанг заканчивается на \r\n, а не просто на \n. Как я могу сказать emacs писать только \n? Я нахожусь в основном режиме сценария оболочки. Удивительно, что это не исправлено по умолчанию.


person User1    schedule 16.04.2010    source источник
comment
В качестве временного решения в большинстве систем *nix установлена ​​утилита dos2unix для преобразования концов строк.   -  person Mark Rushakoff    schedule 16.04.2010
comment
да, я использую это на данный момент.   -  person User1    schedule 16.04.2010
comment
Как вы пишете эти сценарии под Windows, но запускаете их с помощью bash?   -  person eaolson    schedule 17.04.2010
comment
Я использую plink бродяги, чтобы добраться до ящика Linux.   -  person User1    schedule 19.04.2010


Ответы (2)


Как упомянул Юрген, вам нужно использовать файл set-buffer-file-coding-system. Ты можешь сказать

(set-buffer-file-coding-system 'unix)

и вставьте это в функцию внутри find-file-hook, чтобы она установила ее для всех открытых вами буферов. В качестве альтернативы вы можете поместить его в список write-file-hook, чтобы правильно установить систему кодирования файлов, прежде чем выгружать файл на диск.

Для более простого выхода, если вы используете версию Emacs с графическим интерфейсом, вы можете щелкнуть 3-й символ в модельной линейке слева. Это для переключения между форматами eol.

person Noufal Ibrahim    schedule 16.04.2010

Использовать:

set-buffer-file-coding-system

(должен быть привязан к последовательности клавиш) перед сохранением файла.

person Jürgen Hötzel    schedule 16.04.2010