Zauważ, że bezpieczniej jest ustawić kodowanie w swoim LOCALE zamiast wymuszać go w Vimie, na wypadek gdybyś edytował plik inny niż Unicode. Otrzymasz taki sam wynik, jak domyślnie LOCALE i nie zepsujesz żadnych obcych znaków, jeśli zostaną spełnione.
timss
Odpowiedzi:
93
TL; DR
W pierwszym przypadku za pomocą set encoding=utf-8zmienisz kodowanie wyjściowe wyświetlane w terminalu.
W drugim przypadku za pomocą set fileencoding=utf-8zmienisz kodowanie wyjściowe zapisywanego pliku .
Jak stwierdził @Dennis, możesz ustawić je oba w swoim ~ / .vimrc, jeśli zawsze chcesz pracować utf-8.
„ encodingokreśla, w jaki sposób vim ma reprezentować znaki wewnętrznie . Utf-8 jest niezbędny dla większości odmian Unicode.”
" fileencodingustawia kodowanie dla konkretnego pliku (lokalnie w buforze);: setglobal ustawia wartość domyślną. Można również użyć pustej wartości: domyślnie jest to to samo co 'kodowanie'. Lub możesz ustawić jedno z kodowań ucs, Może to spowodować, że ten sam plik na dysku będzie większy lub mniejszy w zależności od konkretnej kombinacji znaków. Ponadto, IIUC, utf-8 jest zawsze big-endian (najpierw wysoki bit), podczas gdy ucs może być big-endian lub little-endian, więc jeśli użyj go, prawdopodobnie będziesz musiał ustawić 'bombę' (patrz poniżej). "
Przepraszam, nie rozumiem. Co dokładniej robi kodowanie plików?
Kiraly Zoltan
25
W pierwszym przypadku zmienisz kodowanie wyjściowe, które jest wyświetlane w terminalu. W drugim przypadku zmienisz kodowanie wyjściowe zapisywanego pliku.
Adrien Lacroix
1
+1 Krótka i słodka odpowiedź, zamiast zwykłego powtarzania oficjalnej dokumentacji! :)
425nesp
W razie potrzeby ad-hoc bezpośrednio z wiersza poleceń vim -c "set encoding=utf-8" file.ext.
Hans Ginzel
87
set encoding=utf-8 " The encoding displayed.
set fileencoding=utf-8 " The encoding written to file.
Równie dobrze możesz ustawić oba w swoim, ~/.vimrcjeśli zawsze chcesz pracować z utf-8.
Możesz ustawić zmienną 'fileencodings' w swoim .vimrc.
To jest lista kodowań znaków branych pod uwagę przy rozpoczynaniu edycji istniejącego pliku. Kiedy plik jest czytany, Vim próbuje użyć pierwszego wymienionego kodowania znaków. W przypadku wykrycia błędu próbowany jest następny z listy. Po znalezieniu kodowania, które działa, ustawiane jest „kodowanie pliku”. Jeśli wszystko zawiedzie, właściwość „fileencoding” jest ustawiana na pusty ciąg, co oznacza, że używana jest wartość „encoding”.
Widzieć :help filencodings
Jeśli często pracujesz np. Z cp1252, możesz go tam dodać:
set fileencodings=ucs-bom,utf-8,cp1252,default,latin9
Odpowiedzi:
TL; DR
Jak stwierdził @Dennis, możesz ustawić je oba w swoim ~ / .vimrc, jeśli zawsze chcesz pracować
utf-8
.Więcej szczegółów
Z wiki VIM o pracy z Unicode
„
encoding
określa, w jaki sposób vim ma reprezentować znaki wewnętrznie . Utf-8 jest niezbędny dla większości odmian Unicode.”"
fileencoding
ustawia kodowanie dla konkretnego pliku (lokalnie w buforze);: setglobal ustawia wartość domyślną. Można również użyć pustej wartości: domyślnie jest to to samo co 'kodowanie'. Lub możesz ustawić jedno z kodowań ucs, Może to spowodować, że ten sam plik na dysku będzie większy lub mniejszy w zależności od konkretnej kombinacji znaków. Ponadto, IIUC, utf-8 jest zawsze big-endian (najpierw wysoki bit), podczas gdy ucs może być big-endian lub little-endian, więc jeśli użyj go, prawdopodobnie będziesz musiał ustawić 'bombę' (patrz poniżej). "źródło
vim -c "set encoding=utf-8" file.ext
.Równie dobrze możesz ustawić oba w swoim,
~/.vimrc
jeśli zawsze chcesz pracować z utf-8.źródło
Możesz ustawić zmienną 'fileencodings' w swoim .vimrc.
Widzieć
:help filencodings
Jeśli często pracujesz np. Z cp1252, możesz go tam dodać:
źródło