问题:
我希望我的unicode字符存储在磁盘上(而不是tan utf8 / 16编码)
\u####
但是,我希望他们在vim中打开时显示为unicode字符。
我认为最简单的方法是自动执行一些bufopen / bufwrite脚本:
on opening, convert \u#### to unicode character
on writing, convert unicode characters into \u####
但是,我不知道要调用什么函数来实现这一点。有人可以帮忙吗?
谢谢!
答案 0 :(得分:3)
我为你制作了这个插件!
http://www.vim.org/scripts/script.php?script_id=909
用于使用unicode代码编辑文件的Vim文件插件。
它将所有代码更改为重音字符以供查看,并在编写时将所有重音字符转换为代码。
e.g。它在查看时更改为é,并在写入时放置\ u00E9(java样式编码)。设置g:ucs_encode_java(在.vimrc文件中)
默认情况下,它适用于Unicode Latin-1补充中的所有重音字符,但您可以根据需要快速更改它。
您还可以将其设置为使用html编码(& #nnn;)。设置g:ucs_encode_html(在.vimrc文件中)
您也可以将其设置为将重音字符转换为八进制编码(\ 340)。在你的设置中设置g:ucs_encode_octal .vimrc文件
罗杰
答案 1 :(得分:1)
您需要一个外部工具来转换这两种格式。我推荐Bill Poser的uni2ascii
:
$ echo täßt | uni2ascii -q -a L
t\u00E4\u00DFt
$ echo täßt | uni2ascii -q -a L | ascii2uni -q -a L
täßt
然后你必须告诉Vim使用那个过滤器。这只是最基本的方法(我对vim脚本的那部分不擅长):
autocmd BufNewFile,Bufread *.u :%!ascii2uni -q -a L
autocmd BufWritePre *.u :%!uni2ascii -q -a L
autocmd BufWritePost *.u :%!ascii2uni -q -a L
将文件名模式更改为适合您的情况。
文档中包含的相关问题有一个更高级的示例::help hex-editing
。可以在Vim wiki中找到对此方法的讨论和更好的解决方案。