带有重音字符的Vim缩写不能完全替换文本

时间:2013-03-10 22:11:44

标签: vim non-ascii-characters

当我使用西班牙语重音或字符时,我的Vim缩写不起作用。我有.vimrc以下内容:

iab maniana mañana
iab habia había

但是当我在输入“habia”之后点击 Space 时,我只能得到“habí”。

我的iskeywords设置为:

set iskeyword=@,48-57,_,192-255,:,#

编辑:命令:verbose iab habia返回i habia hab<ed>a,命令:verbose iab maniana返回i maniana ma<f1>ana

1 个答案:

答案 0 :(得分:3)

我认为这是一个简单的编码问题。 (底部的解决方案。)

似乎执行:iab maniana mañana时,ñ以拉丁语1编码进行解释,其中大小为一个字节且值为0x00f1

ñ (Latin 1):    11110001

但是当使用缩写时,您已经以某种方式切换到UTF-8编码。

Vim只是插入你在右侧存储的字节:11110001。但是在UTF-8 ñ中有一个不同的表示 - 事实上,11110001是一个无效的UTF-8字节(显示为<f1>),这就是扩展停止的原因。为了说明这一点,这些是ñ

的UTF-8字节
ñ (UTF-8):      11000011 10110001
                      ^^   ^^^^^^

顺便说一下,ñ有Unicode 代码点 0x00f1,你实际上可以看到它在上面显示的两个字节中编码。

好的,你问,但这是什么意思?!

这意味着您应该检查您的vimrc并确保:set encoding=utf-8位于缩写之前。