Làm thế nào để vim listchar hoạt động trong môi trường không utf8?


8

.Vimrc của tôi chứa:

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

Nhưng có một số ký tự là unicode, khi tôi chạy vim trong môi trường LC_CTYPE = zh_TW.Big5, nó sẽ hiển thị

Error detected while processing /home/user/.vimrc:
  line   70:
E474: Invalid argument: listchars=tab:»·,trail:~,extends:>,precedes:<

Câu trả lời:


5

Thêm dòng sau vào vimrc của bạn, tốt nhất là gần đầu:

scriptencoding utf-8

Điều đó sẽ cho vim đọc tệp dưới dạng UTF8 ngay cả khi bạn đang sử dụng hệ thống không phải UTF. Sau đó, nó sẽ chuyển mã bất kỳ ký tự nào từ đó sang mã hóa hiện tại của bạn. Nếu các ký tự bạn đang sử dụng trong tùy chọn listchars tồn tại các bảng mã khác mà bạn sử dụng, bạn thậm chí không cần phải có điều kiện xung quanh đó.


Phương pháp này hoạt động trên vim, nhưng, tôi thấy gvim vẫn hiển thị thông báo lỗi đó.
Daniel YC Lin

1
Bạn có một .gvimrctập tin cũng chứa các ký tự unicode? Nếu vậy, thêm cùng một dòng vào tập tin đó cũng sẽ khắc phục vấn đề ở đó. Lệnh đó chỉ áp dụng cho tệp được tìm thấy, do đó cần phải được đưa vào bất kỳ tệp cấu hình vim nào trong đó mã hóa ký tự là quan trọng.
qqx

Tôi đã tìm thấy sự cố do gvimrc của tôi gây ra và đã khắc phục nó.
Daniel YC Lin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.