2014-01-28 31 views

回答

4

:setglobal將無法​​正常工作,因爲它只是設置了未來違約,但不更新現有窗口中的值。您需要將其應用於所有當前窗口,通常使用:windo,但在涉及特殊命令行窗口時更改窗口是個壞主意。因此,我們通過切換setwinvar()選項(多個)「在距離」和一個循環:

augroup cmdWin 
    autocmd! 
    autocmd CmdwinEnter * for i in range(1,winnr('$')) | call setwinvar(i, '&number', 1) | call setwinvar(i, '&relativenumber', 0) | endfor 
    autocmd CmdwinLeave * for i in range(1,winnr('$')) | call setwinvar(i, '&number', 0) | call setwinvar(i, '&relativenumber', 1) | endfor 
augroup END 

此切換nu + nornunonu + rnu之間;如果您想保留nu並只需切換rnu,請修改邏輯。

+0

也許將'&nu'和'&rnu'值保存到窗口變量然後恢復它們會更好。 –

+0

@PeterRincker當然,這可以變得更加方便和強大。我只是給出了一個答案,沒有完整的插件:-) –

+0

嘿,如果我在VimL中變得更好,我會製作一個完整的插件並稱贊你Ingo,假設這很酷 – lsiebert

相關問題