我正在尝试制作一个用于在bg=dark
和bg=light
之间切换的领导映射,但我遇到了麻烦。 Vim似乎不喜欢这样的事情:
:set bg=(&bg=='dark' ? 'light' : 'dark')
它将空格视为分隔符。我删除了这些空格,并用eval()
搞砸了,但没有成功。
有没有办法在Vim中为表达式的结果设置一个选项?
答案 0 :(得分:2)
您不能在:set
命令中使用表达式;只有基本的字符串/数值。
请改用:let
。您可以通过在名称前添加&
来引用设置变量。转换为它,它将读取:
:let &background = (&background == 'dark' ? 'light' : 'dark')
如果您愿意,也可以使用&bg
等短手值;但是对于vimrc的东西,我建议使用更长的变体,因为从现在起五年后这意味着更清楚(人们的vimrc文件往往会持续很长时间!)
这也允许您使用稍微宽松的间距,因为:set
对此非常敏感。
有关此问题的Vim文档,请参阅:help :set-args
和:help :let-&
。
答案 1 :(得分:1)
我不知道您是否可以使用:set
的表达式,但您可以使用:let
:
nnoremap <Leader>b :let &bg=(&bg=='dark' ? 'light' : 'dark')<Enter>