¿Cómo evitar que Gedit, Gvim, Vim, Nano agreguen char de nueva línea de fin de archivo?

42

A veces quiero que la última línea de un archivo de texto sea una simple cadena de texto sin caracteres de nueva línea añadidos: ... por ejemplo. para concatenar otro archivo a él.

Varios editores modifican automáticamente mi texto agregando un carácter de nueva línea, aunque no haya presionado Enter .

Remains unmodified: Emacs, SciTE, Kate, Bluefish, Bloc de notas (vino)

Newline is added: Gedit, Gvim, Vim, Nano

Me gustaría saber si hay alguna forma de ajustar Gedit, Gvim y Vim para guardar solo lo que he escrito ... e incluso Nano podría ser útil

Actualmente uso Gedit, y estoy incursionando en Gvim / Vim ... por lo que sería útil saber cómo "activar / desactivar" estos ...

PS . Al volver a abrir el mismo archivo en Gedit, Gvim y Vim, la ubicación del cursor al final del archivo se encuentra al final del texto, mientras que realmente debería aparecer en la siguiente línea (vacía). Esto es engañoso (pero eso es por lo que estoy acostumbrado).

Usé un editor hexadecimal para verificar las observaciones anteriores.

Peter.O
fuente

Respuestas:

49

Para gEdit no parece haber una forma de deshabilitar la inserción de una nueva línea al final, vea esta respuesta .Instalar gEdit

Para Vim Instalar vim (y gVim Instalar vim ) se puede - mediante la ejecución de la opción siguiente: :set binary. La configuración en binario guardará el archivo como está y no insertará una nueva línea al final del documento (a menos que ya haya uno, en el que se retendrá). En cualquier momento puede revertir esta opción con :set nobinary.

Nano Instalar Nano es un poco más fácil. Puede iniciar nano con la -Lbandera (o --nonewlinessi es más del tipo visual). Esto deshabilitará la adición automática de la nueva línea al final del archivo (siempre que no se haya ingresado realmente). Idealmente, podría configurar este alias en su ~/.bashrc:, alias nano="nano -L"que lanzaría Nano sin la bandera de nuevas líneas incluida.

Como no sé exactamente lo que estás haciendo, te señalaré ¿ Por qué los archivos deben terminar con una nueva línea? lo que puede explicar por qué están ahí. En resumen, algunas aplicaciones fallarán si no encuentran una EOLdirectamente antes deEOF

Marco Ceppi
fuente
1
Gracias Marco, una gran respuesta ... El "Por qué debería ..." es una interesante colección de "por qué" ... Personalmente estoy muy "consciente de la nueva línea" (es por eso que lo noté :) pero ciertamente es un buena referencia para todos (incluido yo mismo) ... pero prefiero saber que agregué o no agregué ... Tal vez hay un complemento oscuro para Gedit ...
Peter.O
3
Parece que para Gvim / Vim requiere que se configuren dos opciones ... según : 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) es consciente de este problema, y ​​lo tiene en la "lista de deseos" ... (¡Lo deseo, pero no aguantaré la respiración por este! Si este extracto significa algo: "... ( ) preferiría confundir a los usuarios "
Peter.O
2
Para nano, puede poner set nonewlinesen ~ / .nanorc (o / etc / nanorc) para usar el -Lmodo por defecto.
mwfearnley
Utilice editorconfig (editorconfig, org): complementos disponibles para vim y gedit. Especifique las opciones deseadas en su archivo .editorconfig.
ddbug
16

Para gEdit:

Si está utilizando Ubuntu 12.04 o superior, ya puede configurar el comportamiento.

A través de una interfaz gráfica de usuario:

  1. Ejecute dconf Editor ( dconf-editor)
  2. Vaya a orggnomegeditpreferenceseditor
    (o simplemente busque ensure-trailing-newline)
  3. Desmarque ensure-trailing-newlinesi no desea agregar nuevas líneas automáticamente.

En la línea de comando:

  1. Abrir una terminal ( ctrl+ alt+ T)
  2. ingrese el siguiente comando

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

    y tu estas listo.

Referencia | Error de Launchpad

Ravi Gadhia
fuente
1
Gracias. Es bueno saberlo. Lo he probado y funciona ... (+1)
Peter.O
¿Qué pasa con el editor de pluma? (no vea "
sure
0

Si solo desea escribir un archivo de una sola línea, entonces echo es probablemente la solución más fácil:

echo -n "the contents of my file" > myfile
jpillora
fuente