如何在Vim中检查选项是否具有默认值?
仅当Vim directory选项为默认值时才自定义设置的方法
嘿,这个需求其实很好解决!给你两种简洁的实现方式,适配不同版本的Vim:
方法一:用Vim官方自带的getdefault()函数(推荐)
如果你的Vim版本是8.2.1890及以上,官方专门新增了getdefault()函数,能直接获取选项的默认值,用起来超省心:
if exists('*getdefault') && &directory ==# getdefault('directory') set directory^=~/path/to/dir// endif
- 先通过
exists('*getdefault')检查函数是否存在,避免旧版本Vim运行报错 &directory是当前Vim中directory选项的实际值==#用来做大小写敏感的精确对比,保证路径类选项的判断准确- 当两者完全一致时,就执行你的自定义设置
方法二:手动指定默认值(适配旧版Vim)
要是你还在使用较老的Vim版本,没有getdefault()函数,那可以直接写出directory的默认值(Unix-like系统下默认值通常是.,/tmp//,~/tmp//),直接对比即可:
let s:default_dir = '.,/tmp//,~/tmp//' if &directory ==# s:default_dir set directory^=~/path/to/dir// endif
这个写法兼容性拉满,不管什么版本的Vim都能正常运行~
内容的提问来源于stack exchange,提问作者planetp
相关产品推荐
相关产品推荐

