Преобразование EOL в блокноте ++

115

По какой-то причине, когда я открываю файлы с сервера unix на моем компьютере с Windows, они иногда имеют преобразование EOL Macintosh, и когда я редактирую / сохраняю их снова, они не работают должным образом на сервере unix. Я использую блокнот ++ только для редактирования файлов с этого сервера unix, поэтому есть ли способ создать макрос, который автоматически преобразует EOL в формат Unix всякий раз, когда я открываю файл?

Джефф
источник
возможный дубликат Change EOL для нескольких файлов за один раз
Navid EMAD
1
Ваша проблема может быть связана с любой программой FTP, которую вы используете. Например, я использую WinSCP для удаленного доступа к серверу Unix, Notepad ++ установлен в качестве моего редактора по умолчанию, но мне пришлось зайти в настройки WinSCP и установить режим передачи Binary, чтобы сохранить окончания строк. Таким образом, вы можете перенастроить программу FTP / SCP / etc для передачи файлов другим способом.
Slicktrick

Ответы:

201

Эта функция уже встроена в Notepad ++. В меню «Правка» выберите «Преобразование EOL» -> «Формат UNIX / OSX».

снимок экрана опции для еще более быстрого поиска (или разные языковые версии)

Вы также можете установить EOL по умолчанию в notepad ++ через «Настройки» -> «Настройки» -> «Новый документ / каталог по умолчанию», затем выберите «Unix / OSX» в поле «Формат».

Нейт Аллен
источник
7
Я знаю о преобразовании в меню редактирования, а указанные вами настройки предназначены только для новых документов. Я хочу автоматически выполнять преобразование для каждого файла, который я открываю (или каждого файла, который я сохраняю),
Джефф,
Проблема в том, что когда я открываю существующий файл Unix, "Преобразование EOL" -> Формат UNIX / OSX неактивен. Notepad ++ неудобно использовать с файлами UNIX, поэтому я использую Notetab Lite, который позволяет мне сохранять все файлы как UNIX, а не только новые.
Off The Gold
3
@OffTheGold Параметр UNIX EOL неактивен, потому что это текущий выбор.
blakeoft 06
Право на. Спасибо вам с ноября 2017 года через Google.
SDsolar
Для меня это не работает. Я продолжаю выбирать «Преобразование EOL -> Unix», но ничего не происходит. Я возвращаюсь в меню и вижу, что Windows неактивна (поэтому выбрана?), Поэтому снова нажимаю Unix. Я даже попытался сначала выделить весь свой текст, если он работает только при выделении, а затем снова выбрал Unix. По-прежнему ничего не делает.
Loduwijk
16

В Notepad ++ используйте заменить все регулярным выражением. Это имеет преимущество перед командой преобразования в меню, что вы можете работать со всей папкой без необходимости открывать каждый файл или перетаскивать (на нескольких сотнях файлов это будет заметно медленнее), плюс вы также можете установить фильтр подстановочных знаков имени файла.

(\r?\n)|(\r\n?)

к

\n

Это будет соответствовать каждому возможному шаблону окончания строки (одиночному \ r, \ n или \ r \ n) обратно к \ n. (Или \ r \ n, если вы конвертируете в стиль Windows)

Чтобы работать с несколькими файлами:

  • Используйте «Заменить все во всем открытом документе» на вкладке «Заменить». Сначала вам нужно перетащить все файлы в Notepad ++. Хорошо, что у вас будет контроль над тем, с каким файлом работать, но это может быть медленным, если файлов несколько сотен или тысяч.
  • «Заменить в файлах» на вкладке «Найти в файлах» с помощью фильтра файлов по вашему выбору, например, * .cpp * .cs в одном указанном каталоге.
Wappenull
источник
Это может вызвать потерю EOL из-за замены \ r \ n \ r \ n на одиночный \ n. Думаю.
Sunspawn
Подтвердите, что работает в Notepad ++ 6.9.1. Он будет искать вперед, поэтому не будет рекурсивно заменять то, что находится позади.
Wappenull 05
При ответе на: «Это может привести к потере EOL из-за замены \ r \ n \ r \ n на один \ n» >> Этого не произойдет, поскольку он использует | (или) оператор между двумя возможными группами.
Wappenull
3

Я открываю файлы «напрямую» из WinSCP, который открывает файлы в Notepad ++. На моем Linux-сервере были файлы php, которые всегда открывались в формате Mac, что бы я ни делал :-(

Если я загрузил файл, а затем открыл его из локального окна (Windows), он был открыт как Dos / Windows .... хммм

Решение заключалось в том, чтобы EOL-преобразовать локальный файл в "формат UNIX / OSX", сохранить его и затем загрузить.

Теперь, когда я открываю файл прямо с сервера, он открывается как «Dos / Windows» :-)

Мистер Кэлвин
источник
1

В зависимости от вашего проекта вы можете рассмотреть возможность использования EditorConfig ( https://editorconfig.org/ ). Есть плагин Notepad ++, который загрузит .editorconfig, в котором вы можете указать «lf» в качестве обязательного окончания строки.

Я только начал его использовать, но пока он хорош, и проекты с открытым исходным кодом, над которыми я работал, уже много лет включают файлы .editorconfig. Параметр «Преобразование EOL» не изменен, поэтому он может немного сбивать с толку, но если вы выберете «Вид> Показать символ> Показать конец строки», вы увидите, что он добавляет LF вместо CRLF, даже если «Преобразование EOL "а в нижнем нижнем углу отображается что-то еще (например, Windows (CR LF)).

Д. Кук
источник