2012-10-05 74 views
4

是否有一個寄存器或變量保存當前選定範圍的行號?VIM量程行號寄存器

line(".")適用於當前行,但有一個在視覺範圍內?

編輯

如下的'<'>寄存器提到持有的起止線。

我最終什麼事,除了使用上述在寫Vimscript中的一個函數,它接受這些行號,並執行一個外部命令做的,下面我將它包含:

function! Github(line1, line2) 
    execute "!github -f " . expand("%") . " -l " . a:line1 . " -n " . a:line2 
endfunction 
com! -range Github call Github(<line1>, <line2>) 

我的品牌VimScript是新的,但是從我從最初的谷歌搜索中收集的信息,上述函數接受一個範圍。然後我開始和結束行號,並使用它們來執行外部腳本github,它與Github API接口和/或基於git信息打開瀏覽器到github頁面。

回答

8
  • '<'>

    所以:line("'<")line("'>")應該是你所期望的

  • 此外,

    :'<,'>sort 
    

    排序最後可視選擇

  • `<跳到開始最後的視覺選擇(也參見:he v_o

  • 最後,如果'cpoptions'包括*,你可以使用:*作爲同義詞:'<,'>

    :se cpoptions-=* 
    :*sort 
    
+3

完美的答案,甚至作爲一個長期Vim的用戶,我學到了一些東西(':*',它比'gv:'短一個鍵)! –

+0

@IngoKarkat謝謝!老實說,對我來說,這不是關鍵擊;這是一個需要記住的好工作集(小而靈活)和便於打字。 ':'<,'>'傷害打字。我通常使用'gv:'來代替(所以''*')不要依賴'cpoptions'。 – sehe