2009-06-17 12 views
17

Zauważyłem, że przez większość czasu, gdy używasz kodowania innego niż "standardowy angielski", vim nie rozpoznaje i nie wyświetla poprawnie znaków.
Najprościej można to zobaczyć, otwierając niektóre grafiki ascii lub podobne pliki z sieci, które korzystają ze strony kodowej cp437.Jak mogę sprawić, aby vim rozpoznawał kodowanie pliku?

Czy istnieje sposób sprawdzenia kodowania przy otwieraniu pliku przy użyciu vima i otwarcia go z poprawnym?

Jakie kodowania używasz jako najbardziej "przenośne" (te, z którymi najmniejsza liczba użytkowników będzie miała najmniejsze problemy)?

+0

Kwestia jesteś stoi nie ma wiele wspólnego z językiem angielskim, ponieważ w ASCII brakuje wielu znaków interpunkcyjnych używanych w języku angielskim, takich jak znaki emdash i niektóre symbole walut, w tym z niektórych krajów anglojęzycznych. ASCII tak naprawdę miał na myśli tylko amerykańsko-angielski, który nie jest tak naprawdę "standardowy", tak jak USAns lubi to udawać. ;-) –

Odpowiedz

20

Vim musi wykryć kodowanie, a to będzie problematyczne, ponieważ pliki nie często jawnie określają swoje kodowanie (oczywistym wyjątkiem są pliki XML z atrybutem kodowania w nagłówku).

można zmusić Vima aby przeładować plik z innego kodowania tak:

:e ++enc=cp437 

i można ustawić domyślne kodowanie w swoim .vimrc jeśli chcesz.

This page ma więcej informacji i linków, szczególnie w języku angielskim. edycja Unicode. UTF-8 jest najczęściej używanym kodowaniem i domyślnie powinieneś wybrać.

+1

Tak miło widzieć tak sprytnych ludzi na całym świecie.Dziękuję za tak przydatną odpowiedź;) –

2

Możesz użyć modelu vim do ustawienia kodowania pliku. Jest to po prostu komentarz w pierwszych pięciu wierszach pliku, rozpoczynający się od vi: set fileencoding=cp437.

Można również rozpocząć od "vim:", zamiast "vi: set", ale ten ostatni umożliwia kompatybilność z większą liczbą edytorów. Zdecydowanie potrzebujesz spacji między jednym z tych prefiksów i "fileencoding" lub jakąś opcją, którą chcesz ustawić. Opcja fileencoding powinna jednak rozwiązać Twój problem.

Więc w Pythonie lub pliku .rc można umieścić to na górze pliku:

# vi: set fileencoding=cp437 

W języku Java, C, C++, JavaScript, itp umieścić to:

// vi: set fileencoding=cp437 

Aby uzyskać więcej informacji, w vim, wpisz :help modeline.

+0

Edytowane zgodnie z sugestią użytkownika @SumnerHayes, aby pokazać, że modelina musi być jedną z pierwszych pięciu linii w pliku. –

0

Można zakodować pliki przy użyciu Unicode i ustawić Byte Order Mark (BOM) w pliku. To sprawi, że vim potraktuje to poprawnie, ale niektóre kompilatory i programy mogą mieć z tym problemy. Nawet podstawowe polecenia powłoki, takie jak cat, mogą źle działać w niektórych przypadkach.

Aby to zrobić, wpisz to w vim:

:set fileencoding=utf-8 
:set bomb 
:w 

Aby uzyskać więcej informacji, należy wpisać:

:help bomb 
Powiązane problemy