`
chenqi210
  • 浏览: 76666 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

gvim 乱码

    博客分类:
  • vim
阅读更多

gvim 不能很好的检测 编码

 

所以需要一个好的fileencodings

 

有人推荐如下:

 

 

set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
 

 但是在遇到 ucs-16le 或者 ucs-16be的时候 (也就是一般所指 unicode)会出现问题,将之误判为utf-8,而且还会自做主张地在文件开头加上 utf-8 的 byte order mask (EF BB BF)

 

在其他网站看到有说法,最好将encoding设为 utf-8

如下:

 

 

 

if has("multi_byte")
  if &termencoding == ""
    let &termencoding = &encoding
  endif
  set encoding=utf-8
  set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
endif
 

 

尝试之后,的确能比较准确判断出 通常的那些 unicode 编码的文件

但是菜单却乱码了。而且gvim里的提示信息也乱码了。

 

最后按照gvim的帮助,最后把_vimrc 设置如下,就不会乱码了。缺点是不显示中文菜单

 

 

set nocompatible
set langmenu=none
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set nu!
set tabstop=4
colorscheme darkblue
set guifont=Courier_New:h14
if has("multi_byte")
  if &termencoding == ""
    let &termencoding = &encoding
  endif
  set encoding=utf-8
  if $LANG == "zh_CN"
	if &encoding == "utf-8"
		language message zh_CN.UTF-8
	elseif &encoding == "cp936"
		language message zh_CN.cp936
	endif
  endif
  set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
endif
let Tlist_Ctags_Cmd="C:\Program Files\emacs-23.3\bin\ctags.exe"
filetype on
if has("statusline")
 set statusline=%<%f\ %h%m%r%=%{\"[\".(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\",B\":\"\").\"]\ \"}%k\ %-14.(%l,%c%V%)\ %P
endif

set diffexpr=MyDiff()
function MyDiff()
  let opt = '-a --binary '
  if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
  if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
  let arg1 = v:fname_in
  if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
  let arg2 = v:fname_new
  if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
  let arg3 = v:fname_out
  if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
  let eq = ''
  if $VIMRUNTIME =~ ' '
    if &sh =~ '\<cmd'
      let cmd = '""' . $VIMRUNTIME . '\diff"'
      let eq = '"'
    else
      let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
    endif
  else
    let cmd = $VIMRUNTIME . '\diff'
  endif
  silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction

 

*Attention :最好是写为这样 let Tlist_Ctags_Cmd="C:/Progra~1/Vim/vim73/ctags.exe"

用斜杠时在win7下总是报 failed to generate tags for 某文件

 

 

=========================================================================

以上所说,约等于没用,因为总是会有这样那样的错误,比如已经比较全面地解决了乱码,但是用make一编译代码,make 报的错误是中文就会出现<bb><b6>00<bd>这之类的乱码。现在找到的最完美解决方案如下:

 

在vim官网下有个地方,从来没有去注意过。

 

http://www.vim.org/download.php 写道
There are a few extra files:

iconv library libiconv
A library used for converting character sets. Put "iconv.dll" in the same directory as gvim.exe to be able to edit files in many encodings. You can find the dll file in the bin directory of the "libiconv-win32" archive.
newer intl library libintl
The included libintl.dll does not support encoding conversion. If you have installed the iconv library, as mentioned above, you can install a gettext library that uses it. Get "intl.dll" from the bin directory in the gettext-win32 archive and store it as "libintl.dll" in the same directory as gvim.exe, overwriting the file that may already be there.
 

就把第一个iconv下载下来,如说明中所说,将iconv.dll放到和gvim.exe的同一目录下。结果就能完美解析编码,也不用设来设去了。

分享到:
评论
2 楼 chenqi210 2015-07-26  
顺带把iconv.exe和charset.dll也放进去。
要记得把encoding的解析顺序设好。

给你一个我用的encoding的设置

if has("multi_byte")
        set fileencodings&
        set fileencodings-=latin1
        set fileencodings-=default
        set fileencodings-=utf-8
        set fileencodings-=ucs-bom

        set fileencodings+=ucs-bom
        set fileencodings+=utf-8
        set fileencodings+=chinese
        set fileencodings+=japanese
        set fileencodings+=korean
        set fileencodings+=default
        set fileencodings+=latin1
endif
1 楼 rain9355 2015-01-30  
放到里边还是乱码啊

相关推荐

    gvim模板 解决中文乱码

    gvim模板,有效解决gvim中文乱码问题,可以迅速的打出计数器,状态机,测试文件等内容。

    gvim解决utf-8文件中文乱码

    gvim解决utf-8文件中文显示乱码问题

    Windows Gvim 全局配置 乱码问题

    今天在win7下使用gvim打开以前在ubuntu下用vim写的文档时,显示的中文全是乱码,这可不行! google了一下,知道了在console下输入: set encoding=utf-8 解决问题。 但是每打开一个这样的文件都要设置,gvim不是...

    完美解决gvim的菜单乱码问题

    下面小编就为大家带来一篇完美解决gvim的菜单乱码问题。小编觉的挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    vim、gvim在windows下中文乱码的终极解决方案.docx

    vim、gvim在windows下中文乱码的终极解决方案.docx

    Gvim73配置文件

    这是gvim73的配置文件,里面每一句代码我都有给注释,非常...各种乱码啊,各种格式,都很清晰。下载看看吧,想学Gvim的话,绝对对你有帮助。如果你也用的73,可以直接下载放到你的安装目录,然后就是舒服的学习使用。

    gvim配置文件gvimrc

    source $VIMRUNTIME/delmenu.vim "解决菜单乱码 source $VIMRUNTIME/menu.vim "解决consle输出乱码 set nocompatible " 不要使用vi的键盘模式,而是vim自己的 set history=100 " history文件中需要记录的行数 set ...

    grep.vim乱码问题解决

    用gvim打开源码文件,并将光标定位到要查找的内容上,按下F3,确定要查找的内容和搜索范围,会出现乱码问题,此工具可以解决

    Windows下利用Gvim写PHP产生中文乱码问题解决方法

    昨天本来说早点睡觉呢,没想到一个在写PHP程序的时候发现出现的乱码问题又睡晚了,不过总算解决了。

    gVim _vimrc【配置方案】

    自己配置的文件,供大家下载。详情: 增加行号显示 默认配色主题:murphy 语法高亮开启 设置右边栏为文件夹浏览器通过命令“wm”打开 ... 中文乱码 参考:http://blog.chinaunix.net/uid-27155075-id-3517512.html

    vim74 for windows.7z

    vim74 for windows.7z 不用担心windows下中文字符乱码哦!! 因为里面带有一个配置好的_vimcr文件,只要替换安装目录下的_vimcr文件就不会有乱码喽. 而且颜色方案也配置好了有. 自己使用后才发的绝对可用!!

    vim的ycm插件,编译好的,适合win32和linux

    win下需要utf-8的encoding设置,如果出现乱码,请用win_utf_dll中的文件覆盖gvim的原有文件。 linux如果出现glibc不兼容(编译时使用的glib2.11,支持debian6,Fedora19,ubuntu10和redhat及以下),需要设置LD_...

    vim用户手册中文版7.2

    本程序可以直接连接到vim软件中,充当help文档,但是有一个不好,就是如果选择安装时,全部默认中文化时,gvim主窗口界面中文会变成乱码 不过不影响使用大家自己斟酌一下

    vimrc带详细说明配置文件and插件包

    windows下的Gvim7.2的配置文件 增加了"文件浏览"和Taglist等一系列插件. 插件也在压缩包内 "本配置文件包括如下内容: "设定窗口打开位置 winpos 300 60 "设定窗口起始大小 set lines=50 columns=118 " 设定默认解码...

Global site tag (gtag.js) - Google Analytics