Как позволить vim listchar работать в среде not utf8?

8

Мой .vimrc содержит:

if $LANG =~ '\(UTF\|utf\)-\?8' || $LC_CTYPE =~ '\(UTF\|utf\)-\?8'
  set list listchars=tab:»·,trail:~,extends:>,precedes:<
endif

Но есть некоторые символы, которые являются Unicode, когда я запускаю vim в среде LC_CTYPE = zh_TW.Big5, он покажет

Error detected while processing /home/user/.vimrc:
  line   70:
E474: Invalid argument: listchars=tab:»·,trail:~,extends:>,precedes:<
Даниэль YC Лин
источник

Ответы:

5

Добавьте следующую строку в ваш vimrc, желательно в начале:

scriptencoding utf-8

Это скажет vim прочитать файл как UTF8, даже если вы работаете не в UTF-системе. Затем он перекодирует любые символы из этого в вашу текущую кодировку. Если символы, которые вы используете в параметре listchars, существуют в других используемых вами кодировках, вам даже не нужно иметь условных обозначений.

qqx
источник
Этот метод работает на vim, но я обнаружил, что gvim все еще показывает это сообщение об ошибке.
Даниэль YC Лин
1
У вас есть .gvimrcфайл, который также содержит символы Юникода? Если это так, добавление этой же строки в этот файл также должно решить проблему. Эта команда применяется только к файлу, в котором она найдена, поэтому ее необходимо включить в любой файл конфигурации vim, где важна кодировка символов.
qqx
Я нашел проблему, вызванную моим gvimrc, и исправил ее.
Даниэль YC Лин