使用utf-8启动后,vimrc nnoremap无效。 vimrc重新加载修复程序

时间:2014-04-08 06:43:53

标签: vim

我在Windows 8上的_vimrc开头设置了以下内容

scriptencoding utf-8
set encoding=utf-8

文件的下方是以下映射

nnoremap § ~
nnoremap ö :

我的问题是gvim启动后映射没有效果。如果我通过打开文件重新加载文件并强制写入我的

:au! BufWritePost $MYVIMRC source $MYVIMRC

开始,映射工作。如果我在运行gvim时手动输入命令,它们也可以工作。

为我的_vimrc运行set fileencoding报告fileencoding=utf-8

我使用的vim版本是https://bitbucket.org/Haroogan/vim-for-windows的7.4.094 / 2.7 / 3.3 / 2.0.0。

映射在Mac上的MacVim中无需修改即可使用。有什么想法吗?

更新1

:nmap的输出显示为

n  §           * ~
n  <f6>        * :

使用redir捕获:nmap的输出并将其粘贴到新的utf-8缓冲区中,§显示为灰色的<a7>。复制粘贴此处后,§再次成为§

更新2

我从vim.org安装了gvim74.exe并使用了相同的_vimrc。没有什么变化。我的其他键映射通常不是ö§。我已经尝试了gvim.exevim.exe,vim.org的官方版本7.4和https://bitbucket.org/Haroogan/vim-for-windows的版本7.4.094 / 2.7 / 3.3 / 2.0.0。

更新3

如果我删除了编码设置

scriptencoding utf-8
set encoding=utf-8

来自我的_vimrc,键绑定按预期工作。

1 个答案:

答案 0 :(得分:1)

我只需将编码设置的顺序更改为

即可解决上述问题
set encoding=utf-8
scriptencoding utf-8

另一个解决方案是使用对此脚本编码的调用来包装keymappings,就像这个

一样
scriptencoding
nnoremap § ~
nnoremap ö :
scriptencoding utf-8

我假设这会改变文本转换为utf-8的方式,但我不是vim专家。请告诉我为什么这个有效!的xD