Come impedire a Gedit, Gvim, Vim, Nano di aggiungere il carattere newline di fine file?


42

A volte voglio che l'ultima riga di un file di testo sia una semplice stringa di testo senza alcun carattere di nuova riga aggiunto: ... ad es. per concatenare un altro file.

Diversi editor modificano automaticamente il mio testo aggiungendo un carattere di nuova riga, anche se non ho premuto Invio .

Remains unmodified: Emacs, SciTE, Kate, Bluefish, Notepad (vino)

Newline is added: Gedit, Gvim, Vim, Nano

Vorrei sapere se c'è un modo per modificare Gedit, Gvim e Vim per salvare solo ciò che ho digitato .... e anche Nano potrebbe tornare utile

Attualmente uso Gedit e mi diletto in Gvim / Vim .. quindi sarebbe utile sapere come "attivare / disattivare" questi ...

PS . Dopo aver riaperto lo stesso file in Gedit, Gvim e Vim, il posizionamento di fine file del cursore si trova alla fine del testo, mentre dovrebbe davvero comparire sulla riga successiva (vuota). Questo è fuorviante (ma è a causa di ciò a cui sono abituato).

Ho usato un hexeditor per controllare le osservazioni sopra.

Risposte:


49

Per gEdit non sembra esserci un modo per disabilitare l' inserimento di una nuova riga alla fine, vedere questa risposta .Installa gEdit

Per Vim Installa vim (e gVim Installa vim ) è possibile - eseguendo la seguente opzione: :set binary. L'impostazione su binario salverà il file così com'è e non inserirà una nuova riga alla fine del documento (a meno che non ce ne sia già uno, in cui verrà conservato). In qualsiasi momento puoi ripristinare questa opzione con :set nobinary.

Nano Installa Nano è un po 'più semplice. Puoi avviare nano con la -Lbandiera (o --nonewlinesse sei più il tipo visivo). Ciò disabiliterà l'aggiunta automatica della nuova riga alla fine del file (purché non sia stata effettivamente immessa). Idealmente si potrebbe configurare questo alias nel vostro ~/.bashrc: alias nano="nano -L"che avrebbe lanciato Nano con la bandiera senza ritorni a capo in esso!

Dal momento che non so esattamente cosa stai facendo, ti indicherò Perché i file dovrebbero finire con una nuova riga? che può spiegare perché sono lì. In breve alcune applicazioni falliranno se non le trovano EOLdirettamente prima diEOF


1
Grazie Marco, un'ottima risposta ... Il "Perché dovrei ..." è un'interessante raccolta di "perché" ... Sono personalmente molto "a conoscenza di newline" (ecco perché l'ho notato :) ma è sicuramente un un buon riferimento per tutti (me compreso) ... ma preferisco sapere che l'ho aggiunto o non l'ho aggiunto ... Forse c'è un oscuro plugin per Gedit ...
Peter.O

3
Sembra che per Gvim / Vim siano necessarie due opzioni da impostare ... secondo : 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) è a conoscenza di questo problema e lo ha nella "lista dei desideri" .... (Vorrei, ma non trattengo il respiro per questo! Se questo estratto significa qualcosa: "... ( ) preferirebbe confondere gli utenti "
Peter.O,

2
Per nano, puoi set nonewlinesusare ~ / .nanorc (o / etc / nanorc) per usare la -Lmodalità di default.
mwfearnley,

Usa editorconfig (editorconfig, org) - plugin disponibili per vim e gedit. Specificare le opzioni desiderate nel file .editorconfig.
ddbug,

16

Per gEdit:

Se stai usando Ubuntu 12.04 o versioni successive, puoi già impostare il comportamento.

Tramite un'interfaccia utente grafica:

  1. Esegui dconf Editor ( dconf-editor)
  2. Vai a orggnomegeditpreferenceseditor
    (o cerca solo ensure-trailing-newline)
  3. Deseleziona ensure-trailing-newlinese non vuoi aggiungere automaticamente nuove righe.

Sulla riga di comando:

  1. Apri un terminale ( ctrl+ alt+ T)
  2. inserisci il seguente comando

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

    e hai finito.

Riferimento | Bug del Launchpad


1
Grazie. Buono a sapersi. L'ho provato e funziona ... (+1)
Peter.O

che dire dell'editor pluma? (non vedi "assicura-trailing-newline" per pluma)
ajcg

0

Se vuoi solo scrivere un file a riga singola, allora echo è probabilmente la soluzione più semplice:

echo -n "the contents of my file" > myfile
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.