Infoga specialtecken i emacs

För att infoga specialtecken i emacs kan man använda sig av kommandot insert-char. Kommandot är normalt bundet till tangetkombinationen C-x 8.

Man kan använda kommandot på samma sätt som man använder AltGr-tangenten, dvs C-x 8 ^ i producerar î. En lista över alla tecken som kan skrivas på detta sätt får man fram genom kommandot C-x 8 C-h.

Tecken som inte kan skrivas på detta sätt kan istället infogas genom att anropa insert-char och sedan ange tecknets unicode-namn eller nummer. Kommandot för tecknet   är till exempel C-x 8 [Enter] DELTA EQUAL TO. Tecknet δ kan infogas genom kommandot C-x 8 [Enter] 03b4.

En tabell över unicode-tecken och dess nummer finns på http://unicode-table.com.

Om man vill ha information om ett tecken som redan finns i emacs-buffern så placerar man markören på tecknet och anropar kommandot describe-char.

Att byta teckenkodning på filnamn

När man kopierar filer mellan olika system så behåller filnamnen sin ursprungliga teckenkodning. Om teckenkodningen skiljer sig åt mellan systemen så kan det innebära att filnamnen ser konstiga ut. Vissa program kan dessutom få problem med dessa filer när de upptäcker underliga tecken i dem.

Som ett exempel så kan vi ta filen mitt älsklingsrecept på köttbullesmörgås.txt. Om detta filnamn är skrivet i teckenkodningen ISO-8859-1 och systemet ät inställt på UTF-8 så visas filen något i stil med

mitt_�lsklingsrecept_p�_k�ttbullesm�rg�s.txt

Har man många filer blir det snabbt tröttsamt att ändra filnamnen manuellt. Som tur är så finns det ett verktyg som heter convmv som automatiserar namnbytet.

För att byta teckenkodning från ISO-8859-1 till UTF-8 på alla filer i en katalog så kan man först göra en provkörning via kommandot

convmv -f iso-8859-1 -t utf8 *

För köttbullesmörgåsen ovan blir resultatet av provkörningen

Starting a dry run without changes...
mv "./mitt_�lsklingsrecept_p�_k�ttbullesm�rg�s.txt"     "./mitt_älsklingsrecept_på_köttbullesmörgås.txt"
No changes to your files done. Use --notest to finally rename the files.

Programmet genererar då en lista med alla mv-kommandon som kan köras för att byta namn på filerna. Om allting ser bra ut så lägger man till flaggan --notest för att utföra namnbytet.

$ convmv -f iso-8859-1 -t utf8 * --notest
mv "./mitt_�lsklingsrecept_p�_k�ttbullesm�rg�s.txt"     "./mitt_älsklingsrecept_på_köttbullesmörgås.txt"
Ready!

Filnamnen är nu ändrade till korrekt teckenkodning.

Referenser

  1. http://www.faqforge.com/linux/convert-the-charset-of-file-names-from-iso-8859-15-to-utf8/