Vim varolan bir dosyayı okuduğunda, dosya kodlamasını algılamaya çalışır. Dosyayı yazarken, Vim algıladığı dosyayı kullanır (farklı şekilde anlatmanız hariç). Yani UTF-8 olarak algılanan bir dosya UTF-8 olarak yazılmıştır, Latin-1 olarak algılanan bir dosya Latin-1 olarak yazılmıştır, vb.
Varsayılan olarak, algılama işlemi kaba. Vim ile açtığınız her dosyanın, üstünde Unicode bayt sırası işareti bulunmadığı sürece, Latin-1 olduğu varsayılır. Bayt sırası işaretine sahip olmayan bir UTF-8 dosyasını düzenlemek zor olacaktır, çünkü herhangi bir çok baytlık karakter arabellekte tek karakter yerine karakter dizisi olarak gösterilir.
Daha kötüsü, Vim, varsayılan olarak, arabellekteki metni temsil etmek için Latin-1 kullanır. Yani UTF-8 dosya ile bir bayt sırası işareti Latin-1'e aşağı dönüşüm tarafından bozulmuş olacaktır.
Çözüm Vim'i UTF-8'i dahili olarak kullanacak şekilde yapılandırmaktır. Aslında bu, Vim belgelerinde önerilmektedir ve bu şekilde yapılandırılmamasının tek nedeni, Vim'in temel olarak Latin-1 editörü olarak çalışmasını bekleyen kullanıcılar arasında büyük bir karışıklık yaratmamaktır.
Gözlerinde farklı .vimrc
ekleyebilir set encoding=utf-8
ve Vim yeniden başlatın.
Veya bunun yerine, LANG
ortam değişkenini UTF-8'in tercih ettiğiniz karakter kodlaması olduğunu belirtecek şekilde ayarlayın . Bu sadece Vim'i değil LANG
, metni nasıl temsil edeceğini belirlemeye dayanan herhangi bir yazılımı da etkileyecektir . Örneğin, metnin en
Amerika Birleşik Devletleri'nde ( US
) konuşulduğu gibi UTF-8 ( utf-8
) olarak kodlanan İngilizce olarak ( ) görünmesi gerektiğini belirtmek için ayarlanmış LANG=en_US.utf-8
.
Şimdi Vim, arabellekteki metni temsil etmek için UTF-8 kullanacaktır. Ayrıca, bir dosyadaki UTF-8 kodlamasını tespit etmek için daha kararlı bir çaba gösterecektir. Bir bayt sırası işareti aramanın yanı sıra, Latin-1'e geri dönmeden önce bayt sırası işareti olmadan UTF-8'i de kontrol edecektir. Bu yüzden artık UTF-8'de kodlanmış bir dosyayı bozmaz ve düzenleme oturumu sırasında UTF-8 karakterlerini düzgün şekilde göstermesi gerekir.
Vim'in dosya kodlamasını nasıl algıladığı hakkında daha fazla bilgi için , Vim belgelerinde bulunan
fileencodings
seçeneğe bakın .
Vim'in dahili olarak kullandığı kodlamayı ayarlama hakkında daha fazla bilgi için encoding
seçeneğe bakın .
Bir dosyayı diske geri yazarken kullanılan kodlamayı geçersiz kılmanız gerekirse , fileencoding
seçeneğe bakın .
.vimrc
; Aslında, varsayılan kodlama değeri "latin1" veya sistemimde ayarlanan $ LANG değerindenen_US.UTF-8
. Bu nedenle:set encoding
verirencoding=utf-8
kutunun dışında. Beklendiği gibi, eğer LANG ayarlanmamışsa:set encoding
verirencoding=latin1
. Harika cevap için teşekkürler!