为什么vim在Ex模式下没有正确插入西里尔符号?

时间:2014-06-03 15:41:51

标签: encoding vim cyrillic ex

要在多个文件中进行更改,请使用以下脚本:

echo search('publications.html"') | normal o<li><a href="./book_series.html">Книжные серии</a></li>
echo search('collections.html"') | d
echo search('photo.html"') | d
wq

然后我做for file in *.html do; vim -e $file < script; done

结果插入字符串“^ Z = 86 = K5 A5 @ 88”而不是“Книжныесерии”。 所有的html文件以及脚本本身都是utf-8编码的,西里尔语没有其他问题。 发生了什么事?

提前感谢任何评论!

2 个答案:

答案 0 :(得分:0)

你可能需要告诉Vim将你的脚本解释为utf-8,即使所有的编码都是正确的。

尝试在脚本顶部插入此行:

 scriptencoding utf-8

答案 1 :(得分:0)

根据vim_use邮件列表对同一问题的回复multibyte characters are not handled in Vim's ex mode

因此,解决方案是根本不使用ex模式。

而不是使用:

vim -e $file < script

使用-S标志在ex模式之外运行脚本:

vim -S script $file