Sự khác biệt giữa hai lệnh này là gì?
set encoding=utf-8
set fileencoding=utf-8
Tôi có cần đặt cả hai khi tôi muốn sử dụng utf-8 không?
Ngoài ra, tôi có cần đặt mã tập tin bằng set
hoặc setglobal
không?
Sự khác biệt giữa hai lệnh này là gì?
set encoding=utf-8
set fileencoding=utf-8
Tôi có cần đặt cả hai khi tôi muốn sử dụng utf-8 không?
Ngoài ra, tôi có cần đặt mã tập tin bằng set
hoặc setglobal
không?
Câu trả lời:
Trong trường hợp đầu tiên với
set encoding=utf-8
, bạn sẽ thay đổi mã hóa đầu ra được hiển thị trong thiết bị đầu cuối.Trong trường hợp thứ hai với
set fileencoding=utf-8
, bạn sẽ thay đổi mã hóa đầu ra của tệp được ghi .
Như đã nêu bởi @Dennis, bạn có thể đặt cả hai trong ~ / .vimrc của mình nếu bạn luôn muốn làm việc utf-8
.
Từ wiki của VIM về cách làm việc với unicode
" encoding
thiết lập cách vim sẽ đại diện cho các ký tự bên trong . Utf-8 cần thiết cho hầu hết các phiên bản Unicode."
" fileencoding
đặt mã hóa cho một tệp cụ thể (cục bộ thành bộ đệm);: setglobal đặt giá trị mặc định. Giá trị trống cũng có thể được sử dụng: giá trị này được mặc định giống như 'mã hóa'. Hoặc bạn có thể muốn đặt một trong các mã hóa ucs, Nó có thể làm cho cùng một tệp đĩa lớn hơn hoặc nhỏ hơn tùy thuộc vào kết hợp ký tự cụ thể của bạn. Ngoài ra, IIUC, utf-8 luôn là big-endian (bit cao trước) trong khi ucs có thể là big-endian hoặc little-endian, vì vậy nếu bạn sử dụng nó, bạn có thể sẽ cần đặt 'bom' (xem bên dưới). "
vim -c "set encoding=utf-8" file.ext
.
Bạn có thể đặt biến 'fileencodings' trong .vimrc của mình.
Đây là danh sách các bảng mã ký tự được xem xét khi bắt đầu chỉnh sửa tệp hiện có. Khi một tệp được đọc, Vim cố gắng sử dụng mã hóa ký tự được đề cập đầu tiên. Nếu lỗi được phát hiện, lỗi tiếp theo trong danh sách sẽ được thử. Khi một mã hóa được tìm thấy hoạt động, 'mã hóa tệp' được đặt thành mã đó. Nếu tất cả đều không thành công, 'mã tập tin' được đặt thành một chuỗi trống, có nghĩa là giá trị của 'mã hóa' được sử dụng.
Xem :help filencodings
Nếu bạn thường xuyên làm việc với ví dụ: cp1252, bạn có thể thêm nó vào đó:
set fileencodings=ucs-bom,utf-8,cp1252,default,latin9