我試圖做一個領導者映射切換bg=dark
和bg=light
,但我有麻煩。 Vim似乎並不喜歡這樣的東西:Vim - :設置背景= <expression>
:set bg=(&bg=='dark' ? 'light' : 'dark')
它將空格看作分隔符。我已經刪除了空格,並與eval()
混淆,但沒有成功。
有沒有辦法在Vim中設置一個表達式結果的選項?
我試圖做一個領導者映射切換bg=dark
和bg=light
,但我有麻煩。 Vim似乎並不喜歡這樣的東西:Vim - :設置背景= <expression>
:set bg=(&bg=='dark' ? 'light' : 'dark')
它將空格看作分隔符。我已經刪除了空格,並與eval()
混淆,但沒有成功。
有沒有辦法在Vim中設置一個表達式結果的選項?
您不能在:set
命令中使用表達式;只有基本的字符串/數字值。
改爲使用:let
。您可以通過在&
前加上名稱來引用設置變量。轉換到,它會讀:
:let &background = (&background == 'dark' ? 'light' : 'dark')
,如果你願意的話,還可以使用短邊數值,如&bg
;但對於vimrc的東西,我建議使用更長的變體,因爲它會更清晰地表明從現在開始的五年時間(人們的vimrc文件往往會持續很長時間!)
這也允許您稍微使用更輕鬆的間距,因爲:set
對此非常敏感。
對於Vim文檔,請參見:help :set-args
和:help :let-&
。
我不知道你是否可以使用表達式與:set
,但你可以:let
:
nnoremap <Leader>b :let &bg=(&bg=='dark' ? 'light' : 'dark')<Enter>
注意,你幾乎總是要使用'nnoremap'而不是用於非遞歸映射的'nmap'。閱讀[Learn Vimscript the Hard Way](http://learnvimscriptthehardway.stevelosh.com/chapters/05.html)以獲取更詳細的解釋。 – Carpetsmoker
謝謝,我試圖早點理解並遇到麻煩。 – xdhmoore
謝謝,剛纔打我吧:) – xdhmoore