Textový editor bez BOM

Textový editor bez BOM
« kdy: 02. 11. 2016, 09:44:32 »
Potřeboval bych radu:
a) nějaký textový editor kde by šlo nastavit aby se utf-8 ukládalo bez BOM (1, 2) a v lepším případě i ono nastavení
b) jak vypnout BOM v bluefish (pokud to jde)
c) script (nebo příkaz) na odstranění BOM v již vytvořených souborech (přičemž mám asi soubory s BOM i bez BOM)


Re:Textový editor bez BOM
« Odpověď #1 kdy: 02. 11. 2016, 09:57:57 »
Umí to třeba Vim.

Zjistím, jestli mám v otevřeném souboru BOM:

Kód: [Vybrat]
:set bomb?
Odstraním BOM a uložím na disk:

Kód: [Vybrat]
:set nobomb
:w

pavlix

  • ****
  • 253
    • Zobrazit profil
Re:Textový editor bez BOM
« Odpověď #2 kdy: 02. 11. 2016, 09:59:26 »
Potřeboval bych radu:
a) nějaký textový editor kde by šlo nastavit aby se utf-8 ukládalo bez BOM (1, 2) a v lepším případě i ono nastavení
b) jak vypnout BOM v bluefish (pokud to jde)
c) script (nebo příkaz) na odstranění BOM v již vytvořených souborech (přičemž mám asi soubory s BOM i bez BOM)

Měl jsem za to, že texťáky bez nesmyslů jako je BOM jsou na unixových systémech včetně linoxových distribucí standard.

ByCzech

  • *****
  • 1 848
    • Zobrazit profil
    • E-mail
Re:Textový editor bez BOM
« Odpověď #3 kdy: 02. 11. 2016, 10:36:57 »
Tak konzolový editor byl uveden, uvedu tedy k tomu editor(y) s GUI. V KDE standardní komponenta textového editoru, kterou používají mj. např. editor KWrite, Kate to také umí. Je to v nastavení a taky se to dá hodit jako tlačítko na nástrojovou lištu.

Ivan

Re:Textový editor bez BOM
« Odpověď #4 kdy: 02. 11. 2016, 10:58:50 »
emacs


Kit

Re:Textový editor bez BOM
« Odpověď #5 kdy: 02. 11. 2016, 11:23:15 »
Umí to třeba Vim.
Odstraním BOM a uložím na disk:
Kód: [Vybrat]
:set nobomb
:w

Nedávno jsem to potřeboval udělat na několika stovkách souborů. Ručně to samozřejmě němělo smysl, tak jsem si na to napsal skript. Dá se to udělat nějak hromadně udělat přímo ve Vimu?

Pavel Tisnovsky

Re:Textový editor bez BOM
« Odpověď #6 kdy: 02. 11. 2016, 11:41:27 »
Umí to třeba Vim.
Odstraním BOM a uložím na disk:
Kód: [Vybrat]
:set nobomb
:w

Nedávno jsem to potřeboval udělat na několika stovkách souborů. Ručně to samozřejmě němělo smysl, tak jsem si na to napsal skript. Dá se to udělat nějak hromadně udělat přímo ve Vimu?

Muzes si to dat do autocommands, at jiz pri vytvareni bufferu nebo pred ulozenim (myslim nastaveni bomb, filencoding a pro jistotu i filetype).

Kit

Re:Textový editor bez BOM
« Odpověď #7 kdy: 02. 11. 2016, 12:26:15 »
Umí to třeba Vim.
Odstraním BOM a uložím na disk:
Kód: [Vybrat]
:set nobomb
:w

Nedávno jsem to potřeboval udělat na několika stovkách souborů. Ručně to samozřejmě němělo smysl, tak jsem si na to napsal skript. Dá se to udělat nějak hromadně udělat přímo ve Vimu?

Muzes si to dat do autocommands, at jiz pri vytvareni bufferu nebo pred ulozenim (myslim nastaveni bomb, filencoding a pro jistotu i filetype).

To souhlasí, ale to mi neřeší problém, když obdržím několik set souborů, ve kterých je ten BOM na začátku. Musel bych každý z těch souborů otevřít a uložit. Lze to udělat hromadně jedním příkazem?

gll

Re:Textový editor bez BOM
« Odpověď #8 kdy: 02. 11. 2016, 13:21:00 »
Umí to třeba Vim.
Odstraním BOM a uložím na disk:
Kód: [Vybrat]
:set nobomb
:w

Nedávno jsem to potřeboval udělat na několika stovkách souborů. Ručně to samozřejmě němělo smysl, tak jsem si na to napsal skript. Dá se to udělat nějak hromadně udělat přímo ve Vimu?

Muzes si to dat do autocommands, at jiz pri vytvareni bufferu nebo pred ulozenim (myslim nastaveni bomb, filencoding a pro jistotu i filetype).

To souhlasí, ale to mi neřeší problém, když obdržím několik set souborů, ve kterých je ten BOM na začátku. Musel bych každý z těch souborů otevřít a uložit. Lze to udělat hromadně jedním příkazem?

http://stackoverflow.com/a/3622153/1112457

Kit

Re:Textový editor bez BOM
« Odpověď #9 kdy: 02. 11. 2016, 13:38:25 »
To souhlasí, ale to mi neřeší problém, když obdržím několik set souborů, ve kterých je ten BOM na začátku. Musel bych každý z těch souborů otevřít a uložit. Lze to udělat hromadně jedním příkazem?

http://stackoverflow.com/a/3622153/1112457

Ano, tak nějak jsem to tenkrát udělal:
Kód: [Vybrat]
# Removing BOM from all text files in current directory:
sed -i '1 s/^\xef\xbb\xbf//' *.txt

Kit

Re:Textový editor bez BOM
« Odpověď #10 kdy: 02. 11. 2016, 13:52:37 »
Ještě jsem našel jedno elegantní řešení:
Kód: [Vybrat]
find . -type f -name "*.php" -print0 | xargs -0 bomstrip-files

Re:Textový editor bez BOM
« Odpověď #11 kdy: 02. 11. 2016, 15:24:59 »
Nedávno jsem to potřeboval udělat na několika stovkách souborů. Ručně to samozřejmě němělo smysl, tak jsem si na to napsal skript. Dá se to udělat nějak hromadně udělat přímo ve Vimu?

Vim se dá spustit neinteraktivně. Je třeba mít seznam příkazů pro Vim, které se umístí do souboru, např. vim_remove_bom.txt. Podle rady výše jde o příkazy:

Kód: [Vybrat]
:set nobomb
:wq

Pak se Vim spustí s touto syntaxí:

Kód: [Vybrat]
vim -s vim_remove_bom.txt my_file.txt

... to je samozřejmě forma vhodná ke zapracování ve skriptu. Sice nejde o spouštění "přímo z Vimu", ale alespoň pomocí prostředků Vimu.

Kit

Re:Textový editor bez BOM
« Odpověď #12 kdy: 02. 11. 2016, 15:49:32 »
Vim se dá spustit neinteraktivně. Je třeba mít seznam příkazů pro Vim, které se umístí do souboru, např. vim_remove_bom.txt. Podle rady výše jde o příkazy:

Kód: [Vybrat]
:set nobomb
:wq

Kód: [Vybrat]
vim -s vim_remove_bom.txt my_file.txt

... to je samozřejmě forma vhodná ke zapracování ve skriptu. Sice nejde o spouštění "přímo z Vimu", ale alespoň pomocí prostředků Vimu.

Tohle bohužel nefunguje:
Kód: [Vybrat]
vim -s nobomb.vim *.php
Kód: [Vybrat]
E173: 1 more file to edit

To už raději použít ten sed nebo bomstrip-files

Kit

Re:Textový editor bez BOM
« Odpověď #13 kdy: 02. 11. 2016, 16:00:05 »
Ten jednoduchý prográmek bomstrip je filtrem. Dá se tedy snadno zařadit do Gitu jako filtr "clean" a/nebo "smudge".

pavlix

  • ****
  • 253
    • Zobrazit profil
Re:Textový editor bez BOM
« Odpověď #14 kdy: 02. 11. 2016, 16:09:20 »
To souhlasí, ale to mi neřeší problém, když obdržím několik set souborů, ve kterých je ten BOM na začátku. Musel bych každý z těch souborů otevřít a uložit. Lze to udělat hromadně jedním příkazem?

http://stackoverflow.com/a/3622153/1112457

Ano, tak nějak jsem to tenkrát udělal:
Kód: [Vybrat]
# Removing BOM from all text files in current directory:
sed -i '1 s/^\xef\xbb\xbf//' *.txt

V tom případě ovšem vůbec netuším, co tady řešíme. :D