退出vim终端乱码问题

当当前的目录是中文名字时,随便进入vim,然后退出,终端就乱码了,用reset命令重置一下屏幕就会显示正常。
但每次进去都是乱码的,如果在乱码时候再进去vim再退出,屏幕显示又好了。模式都是utf-8编码的。
估计是vim这个东西退出的时候每次往屏幕上输出了额外的不完整字节的字符了(多了半个 ? utf-8)
这两天才发现这个问题,估计是装了gvim之后引入的,或者是gvim哪里的配置不对了。 用看到到现在的vim是链接到
vim.gnome的,就是这个有问题, vim.basic是没有问题的。按照网上所说的只要用update-alternatives 命令把vi vim
的链接改到 vim.basic 上去就可以了,那个是正常工作的,以后调用vim都是调用正确的vim.basic了

widebright@widebright:~/桌面$ which vim

/usr/bin/vim
widebright@widebright:~/桌面$
widebright@widebright:~/桌面$
widebright@widebright:~/桌面$ ls -l /usr/bin/vim
lrwxrwxrwx 1 root root 21 2009-02-13 11:19 /usr/bin/vim -> /etc/alternatives/vim
widebright@widebright:~/桌面$ ls -l /etc/alternatives/vim
lrwxrwxrwx 1 root root 18 2009-03-17 09:49 /etc/alternatives/vim -> /usr/bin/vim.gnome

widebright@widebright:~/桌面$ ls -l /etc/alternatives/gvim

lrwxrwxrwx 1 root root 18 2009-03-17 09:49 /etc/alternatives/gvim -> /usr/bin/vim.gnome

估计是 gvim的配置导致的问题



widebright@widebright:~/桌面$ ls /usr/bin/ |grep vim

evim
gvim
gvimdiff
gvimtutor
rgvim
rvim
vim
vim.basic
vimdiff
vim.gnome
vim.tiny
vimtutor


sudo update-alternatives --config vi

sudo update-alternatives --config vim


根据提示选择 /usr/bin/vim.basic 就可以了

widebright@widebright:~/桌面$ sudo update-alternatives --config vi

现有 3 个可选项,它们都提供了“vi”<


    选择        可选项
-----------------------------------------------
          1    /usr/bin/vim.tiny
          2    /usr/bin/vim.basic
*+        3    /usr/bin/vim.gnome

要维持缺省值[*],按回车键,或者键入选择的编号:2

使用“/usr/bin/vim.basic”来提供“vi”。

widebright@widebright:~/桌面$ sudo update-alternatives --config vim


现有 3 个可选项,它们都提供了“vim”<


    选择        可选项
-----------------------------------------------
          1    /usr/bin/vim.tiny
          2    /usr/bin/vim.basic
*+        3    /usr/bin/vim.gnome

要维持缺省值[*],按回车键,或者键入选择的编号:2

使用“/usr/bin/vim.basic”来提供“vim”。

<think> 我们正在解决Vim中文乱码问题,根据用户提供的多个引用,我们需要综合给出解决方案。 用户需求:在Vim中看到乱码后恢复正常显示的方法。 根据引用,乱码通常是因为编码设置不正确。解决方案是修改Vim的配置文件(.vimrc),设置合适的编码选项。 引用中提供了多种设置,但我们需要总结一个通用且有效的方法。 关键点: 1. 设置文件编码自动识别顺序(fileencodings) 2. 设置终端编码(termencoding) 3. 设置Vim内部编码(encoding) 4. 设置文件格式(fileformats)为unix(主要解决换行符问题,与乱码无关但常一起设置) 5. 对于Windows系统,可能还需要额外设置,如菜单乱码的解决(引用[3]) 综合分析: - 引用[1][4][5]建议在Linux下设置: set fileencodings=utf-8,gb2312,gbk,gb18030 (或者更全面的如ucs-bom,cp936等) set termencoding=utf-8 set encoding=utf-8 - 引用[3]针对Windows系统,除了编码设置,还解决了菜单乱码问题,并设置了字体。 因此,我们分平台(Linux和Windows)给出解决方案。 步骤: 通用步骤:创建或修改~/.vimrc(Windows下为_vimrc,或通过$HOME环境变量确定的位置) 一、Linux/Unix系统(包括MacOS): 1. 打开终端。 2. 编辑用户主目录下的.vimrc文件(如果不存在则创建): ```bash vim ~/.vimrc ``` 3. 在文件中添加以下内容: ``` " 设置编码 set fileencodings=utf-8,gb2312,gbk,gb18030,ucs-bom,cp936 set termencoding=utf-8 set encoding=utf-8 " 设置文件格式为unix(可选,主要解决换行符问题) set fileformats=unix ``` 4. 保存并退出:`:wq`。 二、Windows系统: 1. 找到Vim的配置文件。通常位于用户主目录下的_vimrc文件(例如:C:\Users\用户名\_vimrc)。 注意:引用[2]提到在Windows7和vista下需要管理员权限才能修改,建议以管理员身份运行Vim后编辑_vimrc。 2. 在_vimrc文件中添加以下内容: ``` " 设置编码 set encoding=utf-8 set fileencodings=utf-8,chinese,cp936,gb18030,gbk,gb2312,ucs-bom set fileencoding=chinese " 设置写入文件时的编码为中文(这里chinese即gbk,也可写具体编码) " 解决菜单和提示乱码 language message zh_CN.utf-8 source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim " 设置字体(可选,但推荐,否则菜单可能乱码) set guifont=新宋体:h12 ``` 注意:如果使用GVim,设置字体(guifont)很重要。字体名称需要根据系统安装的字体来定,常用中文字体如:宋体(SimSun)、新宋体(NSimSun)、微软雅黑(Microsoft YaHei)等。 三、测试: 修改配置文件后,重新打开Vim,打开之前乱码的文件查看效果。如果仍然乱码,可能需要调整fileencodings的顺序,或者确认文件的原始编码。 说明: - `fileencodings`:Vim尝试以此顺序检测文件编码,直到成功。 - `encoding`:Vim内部使用的编码,通常设为utf-8。 - `termencoding`:终端编码,如果终端支持utf-8,则设为utf-8(在Linux终端下很重要)。 - Windows下,除了编码设置,还要解决菜单乱码问题(通过重新加载菜单资源)。 注意事项: 1. 如果文件是在Windows下创建的,可能使用gbk(cp936)编码;在Linux下创建的多为utf-8。 2. 如果设置后仍然有问题,可以尝试在Vim中手动转换编码: ```vim :e ++enc=gb18030 " 尝试用gb18030重新加载文件 ``` 3. 如果终端本身不支持中文显示(如某些纯英文环境),则可能需要配置终端支持中文。 根据引用[5]还可以加入更全面的编码,如: set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 最后,生成相关问题。 </think> ### Vim中文乱码问题解决方案 在Vim中出现中文乱码通常是由于编码设置不正确导致的。以下是分步解决方法: #### ️ **通用解决方案(Linux/Windows/MacOS)** 1. **创建或修改配置文件** ```bash # Linux/MacOS vim ~/.vimrc # Windows vim $HOME/_vimrc # 或通过管理员权限编辑安装目录下的_vimrc ``` 2. **添加核心配置** ```vim " 设置编码识别顺序(关键!) set fileencodings=utf-8,gb2312,gbk,gb18030,ucs-bom,cp936,latin1 " 设置终端显示编码 set termencoding=utf-8 " 设置Vim内部处理编码 set encoding=utf-8 " 设置文件格式(解决换行符问题) set fileformats=unix,dos ``` 3. **Windows系统额外配置** ```vim " 解决菜单乱码 source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim " 设置中文字体(根据系统字体调整) set guifont=Consolas:h12:cANSI ``` 4. **保存并重启Vim** ```bash :wq " 保存退出 ``` #### 🔍 **排查技巧** 1. **手动检测文件编码** ```vim :set fileencoding? " 查看当前文件编码 :e ++enc=gb18030 " 尝试用GB18030重新加载 ``` 2. **检查终端编码** ```bash # Linux终端 echo $LANG # 应输出类似zh_CN.UTF-8 # Windows需设置CMD/PowerShell为UTF-8: chcp 65001 ``` 3. **特殊文件处理** ```vim " 强制转换文件编码 :set fileencoding=utf-8 :w " 保存转换 ``` > 配置原理:`fileencodings`参数按顺序尝试解码(建议UTF-8在前兼容GB系列)[^1][^4][^5],`termencoding`需匹配终端设置[^1],Windows需重载菜单资源[^3]。 #### ⚠️ 注意事项 1. **配置文件位置** - Linux: `~/.vimrc` - Windows: `C:\Users\<用户名>\_vimrc` 或Vim安装目录的`_vimrc` - 需管理员权限修改系统级配置[^2] 2. **编码优先级建议** ```vim " 推荐顺序(覆盖99%场景) set fileencodings=utf-8,gb18030,gbk,gb2312,cp936,latin1 ``` 3. **终端兼容** - PuTTY需设置"Windows>Translation"为UTF-8 - iTerm2需设置"Profiles>Text"编码 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值