Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有重音字符的Vim缩写不能完全替代文本_Vim_Non Ascii Characters - Fatal编程技术网

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

带有重音字符的Vim缩写不能完全替代文本,vim,non-ascii-characters,Vim,Non Ascii Characters,当我使用西班牙语口音或字符时,我的Vim缩写不起作用。我的.vimrc中包含以下内容: iab maniana mañana iab habia había 但当我在输入“habia”后点击空格时,我只得到“habí” Myiskeywords设置为: set iskeyword=@,48-57,_,192-255,:,# 编辑:命令:verbose-iab-habia返回i-habia-haba,命令:verbose-iab-maniana返回i-maniana-maana 我认为这是一个

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

iab maniana mañana
iab habia había
但当我在输入“habia”后点击空格时,我只得到“habí”

My
iskeywords
设置为:

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

编辑:命令
:verbose-iab-habia
返回
i-habia-haba
,命令
:verbose-iab-maniana
返回
i-maniana-maana

我认为这是一个简单的编码问题。(溶液位于底部。)

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

ñ (Latin 1):    11110001
然而,当您使用缩写时,不知何故您已经切换到UTF-8编码

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

ñ (UTF-8):      11000011 10110001
                      ^^   ^^^^^^
顺便说一句,ñ具有Unicode代码点
0x00f1
,您实际上可以看到它在上面显示的两个字节中编码

好吧,你问,那是什么意思


这意味着你应该检查你的vimrc,确保缩写前面有
:set encoding=utf-8

什么是
:set encoding的输出?
输出是:utf-8在你的终端中,执行
vim--version | grep-Eo。multi\w+“
输出是什么?@Kent我正在Windows下使用Gvim,那么我该如何执行呢?@petobens然后在你的vim中,键入
:version
看看你是否有
+多字节+多语言
阅读你的答案后,我扫描了我的
vimrc
文件,找到了
脚本编码utf-8
之前的那一行。我不知道为什么会有它(可能是我第一次安装Vim时,由于某种原因,
vimrc
文件没有显示重音字符,我一定添加了这一行)。把它评论出来似乎可以解决问题。