这件事让我发疯,我找不到解决办法......
我正在使用 MobaXterm 通过 ssh 登录 FreeBSD 机器。每次我用 vim 打开文本文件时,它都会用“g”替换文件的第一个字符。这不仅仅是显示乱码,当我尝试退出 vim 时,它会警告我文件已被更改,并且在写入文件后,“g”当然还在里面。
我唯一能弄清楚的是,这种情况仅当 TERM 设置为 xterm 变体(xterm、xterm-color 等)时才会发生。使用其他编辑器(nano 或 vi)时不会发生这种情况。
有人能建议解决方案或指出正确的方向我应该检查或重新配置什么吗?
更新:
:scriptnames 的输出
1: /usr/local/etc/vim/vimrc
2: /usr/local/share/vim/vim74/syntax/syntax.vim
3: /usr/local/share/vim/vim74/syntax/synload.vim
4: /usr/local/share/vim/vim74/syntax/syncolor.vim
5: /usr/local/share/vim/vim74/filetype.vim
6: /usr/local/share/vim/vim74/plugin/getscriptPlugin.vim
7: /usr/local/share/vim/vim74/plugin/gzip.vim
8: /usr/local/share/vim/vim74/plugin/logiPat.vim
9: /usr/local/share/vim/vim74/plugin/matchparen.vim
10: /usr/local/share/vim/vim74/plugin/netrwPlugin.vim
11: /usr/local/share/vim/vim74/plugin/rrhelper.vim
12: /usr/local/share/vim/vim74/plugin/spellfile.vim
13: /usr/local/share/vim/vim74/plugin/tarPlugin.vim
14: /usr/local/share/vim/vim74/plugin/tohtml.vim
15: /usr/local/share/vim/vim74/plugin/vimballPlugin.vim
16: /usr/local/share/vim/vim74/plugin/zipPlugin.vim
我的主目录中没有 .vimrc 文件,/usr/local/etc/vim 中的文件是 vim 包附带的未修改的默认文件:
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
set fileencodings=ucs-bom,utf-8,latin1
endif
let g:is_posix = 1
set nocompatible
set bs=indent,eol,start
set history=50
set ruler
if &t_Co > 2 || has("gui_running")
syntax on
set hlsearch
endif
if has("autocmd")
augroup freebsd
autocmd!
if $PORTSDIR != ""
autocmd BufNewFile $PORTSDIR/*/*/Makefile 0r $PORTSDIR/Templates/Makefile
else
autocmd BufNewFile /usr/ports/*/*/Makefile 0r /usr/ports/Templates/Makefile
endif
endif
打开文本或二进制文件时会发生这种情况。但该问题似乎与 MobaXterm 有关;只有当我使用 MobaXterm 连接时才会发生这种情况。当我使用 putty 或物理控制台时,Vim 可以正常工作($TERM 在两种情况下都是 xterm)。
答案1
我相信这是一个错误,最近已经修复。请更新您的 Vim。
哦,对于 mobaxterm 来说,这似乎也是一个mobaxterm 的 bug
答案2
将其添加到您的~/.vimrc
文件中:
set background=dark
答案3
我遇到了同样的问题。我没有解决方案。但我有一个避免这种情况的变通方法。
您可以安装“tmux”并在 tmux 上使用 vim,“g”问题就会消失。