2016-03-13 37 views
0

我試圖做一個領導者映射切換bg=darkbg=light,但我有麻煩。 Vim似乎並不喜歡這樣的東西:Vim - :設置背景= <expression>

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

它將空格看作分隔符。我已經刪除了空格,並與eval()混淆,但沒有成功。

有沒有辦法在Vim中設置一個表達式結果的選項?

回答

2

您不能在:set命令中使用表達式;只有基本的字符串/數字值。

改爲使用:let。您可以通過在&前加上名稱來引用設置變量。轉換到,它會讀:

:let &background = (&background == 'dark' ? 'light' : 'dark') 

,如果你願意的話,還可以使用短邊數值,如&bg;但對於vimrc的東西,我建議使用更長的變體,因爲它會更清晰地表明從現在開始的五年時間(人們的vimrc文件往往會持續很長時間!)

這也允許您稍微使用更輕鬆的間距,因爲:set對此非常敏感。

對於Vim文檔,請參見:help :set-args:help :let-&

+0

謝謝,剛纔打我吧:) – xdhmoore

1

我不知道你是否可以使用表達式與:set,但你可以:let

nnoremap <Leader>b :let &bg=(&bg=='dark' ? 'light' : 'dark')<Enter> 
+1

注意,你幾乎總是要使用'nnoremap'而不是用於非遞歸映射的'nmap'。閱讀[Learn Vimscript the Hard Way](http://learnvimscriptthehardway.stevelosh.com/chapters/05.html)以獲取更詳細的解釋。 – Carpetsmoker

+0

謝謝,我試圖早點理解並遇到麻煩。 – xdhmoore