Vim - :set background = <expression>

时间:2016-03-13 06:52:10

标签: vim

我正在尝试制作一个用于在bg=darkbg=light之间切换的领导映射,但我遇到了麻烦。 Vim似乎不喜欢这样的事情:

:set bg=(&bg=='dark' ? 'light' : 'dark')

它将空格视为分隔符。我删除了这些空格,并用eval()搞砸了,但没有成功。

有没有办法在Vim中为表达式的结果设置一个选项?

2 个答案:

答案 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>
相关问题