Hi Tony :)
* A.J.Mechelynck <[EMAIL PROTECTED]> dixit:
> DervishD wrote:
> > My system is latin-1, so I want my files written using latin-1
> >encoding. But sometimes I get files in utf8 encoding, so I set up my vim
> >like this:
> >
> > set encoding =latin1
> > set fileencoding =latin1
> > set fileencodings =ucs-bom,utf-8,latin1
> >
> > This last line is causing big problems to me. Everytime I edit one
> >of MY files, not the utf8 imported files, vim converts it to utf-8,
> >because while ucs-bom may fail as an encoding, utf-8 not.
> >
> > My problem will be gone if I set "fileencodings" to just latin1, but
> >then I won't get utf-8 files automagically converted and presented to me
> >in a readable form.
> >
> > Is there any way to get what I want, that is, to have ALL my files
> >edited as latin1 but convert utf-8 files properly without using the
> >"++enc" thing?
>
> Your problem lies in the relation between UTF-8, Latin1 and US-ASCII.
> Characters 0x00 to 0x7F are represented identically in all three, therefore
> if a file contains only 7-bit ASCII characters, it won't make any
> difference whether it is interpreted as US-ASCII, Latin1 or UTF-8 -- the
> data will be the same, *represented the same way*, in all three cases.
I know that, ucs-bom and utf-8 are tried before latin1 and utf-8
always succeeds for US-ASCII files :(((
> You can do it in advance by intentionally placing some upper-ASCII in the
> file, for instance by underlining the top title with
> ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ (a line of "divide-by" signs, 0xF7), then saving
> the file as Latin1.
Yes, I thought about that solution, but it's messy and not always
applicable (I cannot place upper latin1 characters in some files at the
beginning, or remember to save it as latin1).
> Note that in order to edit Unicode files properly, it is more prudent to
> set 'encoding' to UTF-8, otherwise if you happen to edit a file containing
> anything which your current 'encoding' cannot represent, it will get
> garbled, and Vim won't be able to restore the original value when saving
> the file. You can do it as follows (in your vimrc):
>
> if &encoding !~? "^u"
> if &termencoding == ""
> let &termencoding = &encoding
> endif
> set encoding=utf-8 fileencodings=ucs-bom,utf-8,latin1
> setglobal bomb fileencoding=latin1
> endif
So, there is no way of solving my problem unless I put "latin1"
before "utf8" in "fileencodings", but then nothing will work because
"latin1" will always succeed :(((
A partial solution for me would be to force "latin1" when saving a
file, but then I take the risk of messing the encoding of a couple of
projects where I may add code which are utf-8 :((
Probably my best bet is to map "save as latin1" and do this
manually.
BTW, and regarding your suggestion above, I just forgot to do it
back when I wrote my vimrc while reading the documentation. I missed the
prominent note, sorry O:))))
Thanks for your help :)
Raúl Núñez de Arenas Coronado
--
Linux Registered User 88736 | http://www.dervishd.net
It's my PC and I'll cry if I want to... RAmen!