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


42

Іноді я хочу, щоб останній рядок текстового файлу був простим рядком тексту без доданого символу нового рядка : ... наприклад. приєднати до нього ще один файл.

Кілька редакторів автоматично змінюють мій текст, додаючи символ нового рядка, навіть якщо я не натискав Enter .

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

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

Я хотів би знати, чи є спосіб налаштувати Gedit, Gvim і Vim, щоб зберегти лише те, що я набрав .... і навіть Нано може стати в нагоді

В даний час я використовую 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, не включивши до нього прапор нових рядків!

Оскільки я точно не знаю, що ти робиш, я накажу на те, Чому файли закінчуються новим рядком? що може пояснити, чому вони там. Коротше кажучи, деякі програми вийдуть з ладу, якщо вони не знайдуть EOLбезпосередньо передEOF


1
Дякую Марко, чудова відповідь ... "Чому слід ..." - це цікава колекція "whys" ... я особисто дуже "обізнаний у новому рядку" (тому я це помітив :), але це, безумовно, хороша довідка для всіх (включаючи мене) ... але я вважаю за краще знати, що я додав або не додав ... Можливо, для 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) знає про це питання і має його у "списку бажань" .... (Я б хотів, але я не затримаю за це дихання! Якщо цей витяг щось означає: "... (це ) швидше
заплутають

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? (не дивіться "забезпечити-трейлінг-новий рядок" для сливи)
ajcg

0

Якщо ви просто хочете написати єдиний файл-рядок, тоді ехо - це, мабуть, найпростіше рішення:

echo -n "the contents of my file" > myfile
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.