2011-07-04 63 views
1

p.e.我選擇了一個文本塊(使用Ctrl-V),並且希望將它的在vimscript中擴展到一個新的位置p.e. 30行以下如何在vimscript中擴展選擇

有誰知道如何做到這一點?

回答

3

您可以使用標記'<'>分別移動到最近的視覺選擇的開始和結束位置。所以一個簡單的函數,如

EDITED使用gvjump變量。

function! ExtendVisual(jump) 
    execute "normal! gv" . a:jump . "j" 
endfunction 

vnoremap <silent> <leader>e :call ExtendVisual(30)<CR> 

將讓你延伸當前視覺:通過使用\Ê 30個條紋●區域。

+0

感謝。我創建了一個變量「jump」,表示選擇的行數有多少。我的值「跳」裏面的功能是什麼? '正常! gv「跳」j ?? – Reman

+0

如果你想添加一個變量,你需要明確地執行「正常」命令,所以該行將變成:「執行」正常!'「。跳。 「J」'。如果'jump'是提供給函數的參數,那麼當你使用它時你需要使用'a:jump'。 –

+0

Btw你的功能擴展選擇作爲行選擇。在選擇區塊的情況下會是什麼? – Reman

3

這是更好地與<expr>映射表示:

vnoremap <expr> \e g:jump."j" 

用一個函數調用:

function Jump() 
    " Do something (modifying text, switching buffers and 
    " something other is forbidden, see :h map-<expr>) 
    return jump."j" 
endfunction 
vnoremap <expr> \e Jump() 
+0

謝謝。好的解決方案但在我的情況下可能很難......我在函數中聲明瞭跳轉值。 – Reman

+0

@Remonn什麼問題?你可以在那裏放一個函數調用。查看更新。 – ZyX

+0

在我的函數中,我計算跳躍p.e. jump = 30。你怎麼把它放在函數調用中? – Reman