如何在没有Unicode问题的情况下从浏览器复制并粘贴到vim?

3
我经常遇到这种情况:我从富文本屏幕(通常是浏览器)复制某些内容,然后粘贴到vim中。通常是一段代码块,当我尝试编译或运行时,会出现各种奇怪的错误。
我会摸着头想半个小时究竟出了什么问题,最后才发现我复制了一些非 ASCII 字符:破折号、左右引号、长下划线、乘号代替x等等。
因此我想问你:我该如何在VIM中无误地复制非ASCII字符?
是否有一种“粘贴模式”可以自动将Unicode转换为ASCII?是否有一种快速/脏的方法在文件中搜索非ASCII字符?
更新: 对于那些寻找类似解决方案的人,我没有找到通用工具。但我发现有一个与此解决方案相关的SO问题
如果你是Vim用户,你很幸运:我已经编写了一个通用函数,并将其发布到了github上作为插件,名为vim-utf2ascii。

我已经分叉了一个替代实现,它不需要 set encoding=utf-8。我的实现是通过搜索十六进制值而不是 Unicode 值来实现的。除此之外,它与原始实现完全相同。 https://github.com/ryanvbissell/vim-asciiplz - Cognitive Hazard
4个回答

2

只需设置Vim以使用UTF-8:

set termencoding=utf-8
set encoding=utf-8

同时,确保你复制的是真正的代码:一些著名的博客系统喜欢将直引号转换为曲引号并对代码进行各种排版调整等排版方面的操作。为了避免这种错误,尽量从源头上复制代码或者寻找一个“原始”的按钮。


2
更新: 对于那些寻找类似解决方案的人,我没有找到通用工具。但我找到了与相同解决方案相关的SO问题

如果你是Vim用户,你很幸运:我写了一个通用函数,并将其发布到github作为一个名为vim-utf2ascii的插件。


你的脚本似乎只有在我将 set termencoding=utf-8set encoding=utf-8 放入我的 .vimrc 文件中才能正常工作。如果我愿意这样做,那么我个人就不需要你的脚本了。这并不意味着你的脚本对其他人没有用,但我建议至少更新一下你的 README 来提到这一点。 - Cognitive Hazard

1

有一个名为demoronizer的脚本,可以(除其他功能外)用ASCII等价物替换所有这些智能引号和连字符。所以你可以通过它过滤文本。


啊,也许这就是我要找的东西。我会去查看一下。 - dsummersl

0

正如 @Romaonl 所说,首先设置 termencoding 并将编码设置为 utf-8。

在你复制了浏览器中的文本之后,切换到 vim 并输入 "+p


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接