作者oversky0 (oversky0)
看板Editor
标题[vim ] 编码问题及 Unicode BOM 设定
时间Fri Jan 29 23:03:36 2010
下面是我 _vimrc 有关 encoding 的设定,
开启大部份的档案都没问题,
不知大家有没有更好的设定?
vim 的编码侦测常常出错,
一开始我是用 FencView 来补强。
但是我发现如果是 cp936 的文档中含有日文字,
FencView 会用 cp932 的编号去开。
因为我找到的日文歌词多是 cp936 的码,
所以後来我把 FencView 的自动侦测关掉,
直接由 fileencodings 的顺序来决定。
如果还有错,就用 FencView 增加的选单来改编码。
FencView 的 bug 我已经於去年十月就通报给作者,
不过目前还没更新。
我试过一些不同的设定,大家可以参考下面的网址,
红色代表编码侦测错误。
https://spreadsheets.google.com/ccc?key=0Alf0sK-moZNJdElYWnhzbVFiOGJFQzI0MnJydGx6UGc&hl=en
P.S. 这样会强制使用英文选单。
P.S.2 记得加在 _vimrc 最前面才有效。
P.S.3 status line 的设定我再另外开一篇文章。
BOM 是标准 unicode 档加在档头的辨识符号。
不过一些 HTML, XML, and Tex's 的 compilers
无法处理含有 BOM 的档,因此下面的设定是预设为
开新档时内定格式为 utf-8, 但不储存 BOM。
开启旧档时则依原来的设定储存。
如果新档要用 BOM,可以在存档前下 :set bomb 指令。
我是建立一个 "SaveAs" hotkey 每次另存新档时提供选项。
============ _vimrc ===================================
"""""""""" Multi-encoding setting, MUST BE IN THE BEGINNING OF .vimrc!
" Plugins:
" 1. FencView : Add encoding options to menu.
"
http://www.vim.org/scripts/script.php?script_id=1708
if has("multi_byte")
if &termencoding == ""
let &termencoding = &encoding
endif
let $LANG="UTF-8"
"zh_TW.UTF-8"
set langmenu=none "Force English menu for execute menu command
set encoding=utf-8
set
fileencodings=ucs-bom,utf-8,big5,euc-tw,cp932,sjis,euc-jp,gbk,cp949,cp1253,latin1
set ambiwidth=double
else
echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte"
endif
let g:fencview_autodetect = 0 "Turn off FencView auto dectecion on startup
"For CJK users who need symbols like the dash to be double-width"
"
http://vim.wikia.com/wiki/Working_with_Unicode
"set bomb "DON'T UNCOMMENT THIS LINE. Open new file in utf-8 with Bom (Byte
"Order Mark).
"BOM is a file header that help programs recognize the file is unicode
"encoded. However, some HTML, XML, and Tex's compilers/render engines
"can't recognized files with BOM and echo errors. So I set the default
"value off.
"For editing old file, the option "set fileencodings=ucs-bom" above will
"read the header of the "file and keep BOM as it was, so the modified file
"keeps its original encoding format.
"
"For editing new file, use FencView in the menu bar to choose correct
"encoding. The current encoding is shown on the statusline.
"Use ":set bomb" only when you really want to save a multi-encoding (CJK)
"unicode.
" F4 SaveAs
noremap <F4> :call SaveBOM()<CR>:browse confirm saveas<CR>
inoremap <F4> <C-O>:call SaveBOM()<CR><C-O>:browse confirm saveas<CR>
vnoremap <F4> <C-C>:call SaveBOM()<CR>:browse confirm saveas<CR>
cnoremap <F4> <C-C>:call SaveBOM()<CR>:browse confirm saveas<CR>
function SaveBOM()
let l:choice=confirm("Save with BOM?\nYes for multi languages.\nNo for
Latex, HTML, XML.", "&yes\n&no", 0)
if l:choice==1
setlocal bomb
else
setlocal nobomb
endif
endfunction
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.42.136.191
※ 编辑: oversky0 来自: 114.42.136.191 (01/29 23:14)
※ 编辑: oversky0 来自: 114.42.136.191 (01/29 23:19)
※ 编辑: oversky0 来自: 114.42.136.191 (01/29 23:19)
※ 编辑: oversky0 来自: 114.42.136.191 (01/29 23:28)
※ 编辑: oversky0 来自: 114.42.136.191 (01/29 23:31)
※ 编辑: oversky0 来自: 114.42.136.191 (01/30 02:32)