Vim中如何让listchars仅显示文件实际存在的换行符?
解决Vim中
set list显示不存在的EOL字符问题 Vim默认会给无末尾换行符的文件添加一个虚拟换行(适配终端显示需求),set list开启后会把这个虚拟换行也识别为EOL字符显示出来。要让Vim仅显示文件实际存在的换行符,可以按以下步骤配置:
- 先设置默认的
listchars,指定实际换行符的显示样式(这里用↵作为示例,你可以换成$或其他字符):
set listchars=eol:↵,trail:·,nbsp:·
- 添加自动命令,让Vim在读取无末尾换行的文件时,临时隐藏虚拟EOL的显示:
autocmd BufReadPost * if !&endofline | setlocal listchars-=eol:↵ | endif
说明
&endofline是Vim内置变量,当文件实际存在末尾换行时为1,否则为0。- 自动命令会在文件读取完成后检查该变量,若文件无末尾换行,就移除
listchars中的eol配置,这样set list就只会显示文件里实际存在的换行符。
内容的提问来源于stack exchange,提问作者mikew
相关产品推荐
相关产品推荐

