Как остановить 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 курсор в конце файла находится в конце текста, тогда как он действительно должен отображаться на следующей (пустой) строке. Это вводит в заблуждение (но это из-за того, что я привык).

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

Ответы:


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.