tags:

views:

86

answers:

2

Problem:

I want my unicode characters to be stored on disk as (rather tan utf8/16 encoding)

\u####

However, I want them dispalyed as unicode characters when opened up in vim.

I think the easiest way to acheive this is some bufopen/bufwrite script that automatically:

on opening, convert \u#### to unicode character

on writing, convert unicode characters into \u####

However, I don't know what functions to call to make this happen. Can someone lend a hand?

Thanks!

+1  A: 

You will need an external tool to convert between the two formats. I recommend Bill Poser's uni2ascii:

$ echo täßt | uni2ascii -q -a L
t\u00E4\u00DFt
$ echo täßt | uni2ascii -q -a L | ascii2uni -q -a L
täßt

Then you have to tell Vim to use that filter. This is only the most rudimentary method (I'm no good at that part of vim scripting):

autocmd BufNewFile,Bufread *.u :%!ascii2uni -q -a L
autocmd BufWritePre        *.u :%!uni2ascii -q -a L
autocmd BufWritePost       *.u :%!ascii2uni -q -a L

Change the filename pattern to whatever fits your case.

There is a more advanced example for a related problem included in the docs: :help hex-editing. A discussion of this approach and an even better solution can be found in the Vim wiki.

hop
+2  A: 

I made this plugin just for you!

http://www.vim.org/scripts/script.php?script_id=909

Vim file plugin for editing files with unicode codes.

It changes all of the codes to the accented characters for viewing, and turns all accented characters into the code when writing.

e.g. it changes \u00E9 to é when viewing, and puts \u00E9 when writing (java-style encoding). Set g:ucs_encode_java (in your .vimrc file)

By default, it works for all the accented characters in the Unicode Latin-1 supplement, but you can quickly change it for your needs.

You can also set it to work with html encoding (&#nnn;). Set g:ucs_encode_html (in your .vimrc file)

You can also set it to convert accented characters to octal encoding ( \340 ). Set g:ucs_encode_octal in your .vimrc file

Roger

rpilkey