2014-01-21 31 views
1

我一直在使用vim,但仍然不熟悉腳本語言。Vim中的`relativenumber` - 在「動作」 - 「編號」 - 「對象」操作中來回切換

我想實現這個小部件,只有當我最需要它時調用relativenumber,這是我在做「動作」 - 「數字」 - 「對象」操作時。

例如,當我想刪除4行我的文字,我按dd。只有當我知道它是我想要刪除的4行時方便。有時當數字變大並且:set nu沒有真正提供太多幫助時,很難繼續計數。

所以我想要做的是這樣的:當我按下d「動作」,:set relativenumber被調用。然後我去按,只有當我通過它的「對象」按在組合中的最後一個關鍵,是它d瓦特或什麼的,它調用:set norelativenumber ,回到常規線路號碼。

如何在我的.vimrc中實現該功能?還是已經有一個插件流動,我沒有找到?

+1

您是否安裝了'easyMotion'?你可以'd j' + x – Kent

+0

嘿,我喜歡那個!感謝您的推薦!儘管如此,我還是可以從VimScript中學到一些東西,但你的建議真的很棒! – alxyzc

回答

0

不是那麼容易,因爲您即將更改vim默認映射並且必須處理遞歸。 下面是你必須考慮的事項列表:

  • 寫一個函數來切換relativenumber/norelativenumber。
  • 重新映射命令應該用它來先調用函數,然後
  • 輸入操作符等待模式count
  • 避免遞歸後趕上第二個命令,而這樣做

這裏出發點,翻轉功能:

function! ToggleRN() 
    if &rnu==1 
    set nornu 
    elseif &rnu==0 
    set rnu 
    endif 
endfunction 

&能夠ŧ o使用Vim的內部設置,如變量。由於relativenumber是一個布爾變量,因此它可以是1或0.

在此之後的一切開始變得複雜起來。祝你好運!如何使用set relativenumber