GNU/Linux >> Znalost Linux >  >> Linux

Proč Vim přidává nový řádek? Je to konvence?

Konvence pro textové soubory Unixu je, že každý řádek je ukončen novým řádkem a že nové řádky jsou zakončením řádků, nikoli oddělovačem řádků.

Když Vim uloží vyrovnávací paměť jako soubor, ukončí každý řádek sekvencí konce řádku pro tento formát souboru, což je pro Unix nový řádek. Viz

:help 'fileformat'

Pokud používáte unixové nástroje pro zpracování textu, je nejlepší se držet této konvence. Pokud však potřebujete vkládat nový řádek na konec posledního řádku souboru, můžete tak učinit. Vim považuje takové soubory za „binární“. Viz

:help 'binary'
:help edit-binary

Vim 8.0 to nyní poskytuje pomocí fixeol volba. Konkrétně pokud to uděláte:

:set nofixeol

pak Vim nebude přidejte koncový znak nového řádku na konec posledního řádku, pokud jej soubor již nemá.

To by mohlo být součástí pluginu typu souboru nebo možná i vašeho .vimrc .

(Toto je vylepšení oproti :set binary protože to ovlivňuje pouze poslední znak konce řádku, zatímco binary také mění spoustu dalších chování, které pravděpodobně nechcete, pokud ve skutečnosti neupravujete binární soubor.)

Nově vytvořený soubor bude mít ve výchozím nastavení stále znak konce řádku. Můžete to změnit (a přepnout soubor, který již má poslední nový řádek na nový řádek bez něj), dodatečně takto:

:set noeol

To musí být nastaveno speciálně pro každý soubor, který chcete změnit:načtení souboru do vyrovnávací paměti vždy nastaví eol aby odpovídal aktuálnímu stavu souboru.


Vim nepřidává nic, co jste tam sami nevložili.

Znak nového řádku není "nový řádek" a oba příklady jsou naprosto normální:

  • v prvním souboru obsahuje soubor pouze jeden řádek, takže získáte jeden znak nového řádku,
  • ve druhém soubor obsahuje dva řádky, takže získáte dva znaky nového řádku.

Linux
  1. Zaneprázdněná schránka Číst soubor řádek po řádku?

  2. Číst řádkově orientovaný soubor, který nemusí končit novým řádkem?

  3. Proč přidání tlustého střeva naruší tento vzor Grep?

  1. Proč potřebujeme soubor .so.1 v Linuxu?

  2. Linux - zkontrolujte, zda na konci souboru není prázdný řádek

  3. Proč si vim mezi běhy nepamatuje moji pozici v souboru?

  1. Proč tento soubor neukáže ‚najít‘?

  2. Nahradit nový řádek nulou?

  3. Proč nemohu tento soubor smazat jako root?