Vim编辑器出现幽灵字符:已删除字符残留与文件不同步问题求助
问题描述
使用Vim时偶尔出现已删除字符残存在缓冲区显示的异常:实际文件内容正常,但Vim界面会残留已删除的字符。比如输入locaation后删除两个a,界面会显示loction n(多余的n是原单词末尾的残留),但用浏览器或其他编辑器打开文件时看不到这个多余字符。
- 该问题在各类文件中均会出现,本次发生在
.md文件中 - NeoVim无此问题,但因依赖仅支持Vim的插件,必须使用Vim
- 切换到Vim默认配色方案后问题仍存在
补充:version输出:
VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Sep 30 2023 05:45:56) macOS version - arm64 Included patches: 1-1894 Compiled by root@apple.com Normal version without GUI. Features included (+) or not (-): +acl +file_in_path +mouse_urxvt -tag_any_white -arabic +find_in_path +mouse_xterm -tcl +autocmd +float +multi_byte +termguicolors +autochdir +folding +multi_lang +terminal -autoservername -footer -mzscheme +terminfo -balloon_eval +fork() +netbeans_intg +termresponse -balloon_eval_term -gettext +num64 +textobjects -browse -hangul_input +packages +textprop ++builtin_terms +iconv +path_extra +timers +byte_offset +insert_expand -perl +title +channel +ipv6 +persistent_undo -toolbar +cindent +job +popupwin +user_commands -clientserver +jumplist +postscript -vartabs +clipboard -keymap +printer +vertsplit +cmdline_compl +lambda -profile +vim9script +cmdline_hist -langmap -python +viminfo +cmdline_info +libcall -python3 +virtualedit +comments +linebreak +quickfix +visual -- More --
可行的解决方法
强制刷新界面
遇到字符残留时,输入:redraw!命令强制刷新屏幕,可清除残留。也可以在.vimrc中映射快捷键:nnoremap <F5> :redraw!<CR> inoremap <F5> <C-o>:redraw!<CR>检查终端与Vim的term设置
- 终端执行
echo $TERM,确认值为xterm-256color或screen-256color - Vim内执行
:set term?,若与终端值不一致,在.vimrc中添加:set term=xterm-256color
- 终端执行
排查插件冲突
临时重命名.vim目录(如改为.vim_bak),重启Vim测试问题是否消失。若消失,再逐个恢复插件定位冲突源。更新Vim补丁
当前使用的Vim 9.0补丁到1894,后续补丁可能修复了显示bug,可通过源码编译或包管理器更新到最新补丁版本。关闭真彩色支持
你的Vim启用了+termguicolors,部分终端对真彩色支持不佳可能导致渲染异常。在.vimrc中添加:set notermguicolors测试问题是否缓解。
内容的提问来源于stack exchange,提问作者Younes Mdarhri Alaoui
相关产品推荐
相关产品推荐

