Как остановить Gedit, Gvim, Vim, Nano от добавления символа новой строки конца файла?

42

Иногда я хочу, чтобы последняя строка текстового файла была простой строкой текста без добавления символа новой строки : ... например. объединить другой файл к нему.

Несколько редакторов автоматически изменяют мой текст, добавляя символ новой строки, даже если я не нажимал Enter .

Remains unmodified: Emacs, SciTE, Kate, Bluefish, Блокнот (вино)

Newline is added: Гедит, Гвим, Вим, Нано

Я хотел бы знать, есть ли способ настроить Gedit, Gvim и Vim, чтобы сохранить только то, что я напечатал ... и даже Nano может пригодиться

В настоящее время я использую Gedit, и я играю в Gvim / Vim ... поэтому было бы полезно знать, как "включать / выключать" их ...

PS . После повторного открытия того же файла в Gedit, Gvim и Vim курсор в конце файла находится в конце текста, тогда как он действительно должен отображаться на следующей (пустой) строке. Это вводит в заблуждение (но это из-за того, что я привык).

Я использовал гекседитор, чтобы проверить вышеприведенные наблюдения.

Peter.O
источник

Ответы:

49

Для gEdit , похоже, нет способа отключить вставку символа новой строки в конце, см. Этот ответ .Установите gEdit

Для Vim Установить vimGVim Установить vim ) вы можете - выполнив следующий вариант: :set binary. Установка в двоичный файл сохранит файл как есть и не вставит новую строку в конце документа (если только не существует строки, в которой он будет сохранен). В любое время вы можете отменить эту опцию с помощью :set nobinary.

Нано Установить нано немного проще. Вы можете запустить nano с -Lфлагом (или, --nonewlinesесли вы более визуальный тип). Это отключит автоматическое добавление новой строки в конец файла (если он не был введен). В идеале вы можете установить этот псевдоним в вашем ~/.bashrc:, alias nano="nano -L"который запустит Nano с включенным в него флагом no newlines!

Поскольку я точно не знаю, что вы делаете, я укажу вам, почему файлы должны заканчиваться символом новой строки? что может объяснить, почему они там. Короче говоря, некоторые приложения не будут работать, если они не найдут EOLнепосредственно передEOF

Марко Чеппи
источник
1
Спасибо Марко, отличный ответ ... "Зачем ..." - это интересная коллекция "почему" ... Я лично очень хорошо осведомлен о новой строке (вот почему я это заметил :), но это, безусловно, хороший справочник для всех (включая меня) ... но я предпочитаю знать, что я добавил или не добавил его ... Может быть, есть неясный плагин для Gedit ...
Peter.O
3
Похоже, что для Gvim / Vim необходимо установить два параметра ... согласно : help eol ...When writing a file and this option ('eol') is off and the 'binary' option is on, no EOL will be written for the last line in the file.
Peter.O
1
Gedit (Launchpad) знает об этой проблеме и включил ее в «список желаний» .... (Я бы хотел, но я не буду затаить дыхание на это! Если этот отрывок что-то значит: "... (это ) скорее запутает пользователей "
Peter.O
2
Для nano вы можете поместить set nonewlinesв ~ / .nanorc (или / etc / nanorc) -Lрежим использования по умолчанию.
mwfearnley
Используйте editorconfig (editorconfig, org) - плагины, доступные для vim и gedit. Укажите нужные параметры в вашем файле .editorconfig.
ddbug
16

Для gEdit:

Если вы используете Ubuntu 12.04 или выше, вы можете установить поведение уже.

Через графический интерфейс пользователя:

  1. Запустите редактор dconf ( dconf-editor)
  2. Перейти к orggnomegeditpreferenceseditor
    (или просто искать ensure-trailing-newline)
  3. Снимите флажок, ensure-trailing-newlineесли вы не хотите автоматически добавлять новые строки.

В командной строке:

  1. Откройте терминал ( ctrl+ alt+ T)
  2. введите следующую команду

    gsettings set org.gnome.gedit.preferences.editor ensure-trailing-newline false
    

    и вы сделали.

Ссылка | Ошибка панели запуска

Рави Гадхия
источник
1
Спасибо. Это хорошо знать. Я попробовал это, и это работает ... (+1)
Peter.O
что насчет редактора pluma? (не вижу «обеспечить-трейлинг-новая строка» для pluma)
ajcg
0

Если вы просто хотите написать однострочный файл, то, возможно, echo - самое простое решение:

echo -n "the contents of my file" > myfile
jpillora
источник