zoukankan      html  css  js  c++  java
  • GVIM在WINDOWS下打印中文乱码的解决

    因为种种原因,我告别了从WIN95时代就开始使用的UltraEdit转向使用GVIM。在经历了显示乱码、大小写操作错乱等一系列问题后,慢慢摸熟了GVIM的脾气,渐渐开始享受使用的过程。

    今天在GVIM下打印一份文本,却很遗憾的发现中文乱码又出现了,自己折腾了半天也没有解决,网上有人说在WINDOWS下encoding的编码模式要设为cp936,打印才能正常。试了一下虽然可行,但操作实在是太繁琐。

    我的设置中encoding是utf-8(工作原因,不方便随意改),在命令模式设置set enc=cp936后会乱码,要在设置后重新输入中文才能正常显示和打印。打印完毕后如果把编码模式再设回成utf-8,则重新输入的中文又会乱码,真是相当麻烦。

    那么如此麻烦的操作能否通过VIM自身的机制来自动完成呢?答案显然是可以,我的思路如下:

    1 全选文本,利用系统剪贴板剪切文本
    2 设置encoding=cp936
    3 从系统剪帖板中复制出文本到空文件中
    4 调用打印
    5 全选文本,删除
    6 设置encoding=utf-8
    7 再从系统剪帖板中将文本复制回文件
    这样做的目的是让文件在需要打印时临时转换成cp936编码,打印完成后再恢复到utf-8。

    我将操作整合到,p这个快捷键,需要打印时直接按,p就可以了。(快捷键的定义虽然有些长,但只是简单命令的集合,配合上面1~7步骤自己看看,我就不解释了)
    map ,p ggvG$"+yggvG$x:set enc=cp936<CR>"+P:hardcopy<CR>ggvG$"+yggvG$x:set enc=utf-8<CR>"+P

    这个解决方案的缺点是,会使用系统剪贴板,如果里面有重要的内容那就要注意了。另外文件会由于一系列的操作变成为已修改状态。
    虽然解决的方式也有些笨,但好在方便实用,有点小瑕疵也是可以接受的。在此记录下来,一是方便被同样问题困扰的朋友;二是抛个砖,如果哪位有更好的解决方案还请多指教。

    lykyl原创,转载请注明出处)
  • 相关阅读:
    第七天 安卓 4大组件
    第六天 页面跳转和数据传递
    第五天 断点续传和下载
    objective-c里的protocol
    Cocos2d-x的屏幕适配
    CocosBuilder的Inspector及让Text View实时更新内容+binding控件到基类成员
    几个输出注意点
    Xcode
    Category、Extension
    iOS内存管理
  • 原文地址:https://www.cnblogs.com/lykyl/p/2215933.html
Copyright © 2011-2022 走看看