2013-04-11 53 views
1

我經常發現自己將數字隨時添加到數字列表中。如何增加或減少在飛行中的視覺塊數量?

p.e.

38 
    12 x 
    215 x 
    98 x 
    03 x 
    23 

我想要做什麼是選擇數字的視覺塊(X在上面的例子) 和增加或與另一數目減小數字。我試圖使用兩個宏(我假設一個宏是不可能的):
@a增加數字 - > 5 @ a - >用5增加每個數字(@a = '^ AJ')
@x減小數字 - > 5 @ X - >爲...減少每個數字用5(@x = '^ XJ')

我不t知道
1)如何僅在我的選擇中使用宏(不包括行數)
2)如何在不創建全新宏的情況下即時更改增加/減少數量。
3)如何解決這個問題:當我將上面的數字加上100時,數字12,9803右移1個字符。

另一個解決方案是創建一個函數,但它是i.m.o.複雜的添加每一次輸入框中的值,我必須改變一些數字。

回答

4

一旦你選擇了所有的線,你可以這樣做:

:'<,'>norm 5<C-v><C-a> <-- inserts ^A 

5添加到每個號碼。

對齊問題無法避免AFAIK和是的,vimscript可能是正確的工具。

+0

+1很好的答案!對齊自動調整是可能的,但需要編寫一個小功能或轉到一些插件。 – Kent 2013-04-11 16:25:48

+0

@romainl,Tnx,你說得對。我正在嘗試創建一個腳本。是否有可能在搜索中加入標記以找出搜索的來源?體育讓@/='mysearch.recognizesign'? – Reman 2013-04-11 19:33:26

+0

編號'@ /'將成爲不在你的緩衝區中的東西。你試圖用什麼來實現? – romainl 2013-04-12 05:02:00

1

增加數字並不壞。你有幾個選項,但我個人建議使用蒂姆波普的speeddating插件。它將提供一個很好的<c-a>視覺模式映射。

但是,如果你想在這裏一個快速和骯髒的映射你去:

xnoremap <silent> <c-a> :<c-u>exe "'<,'>norm! ".min([col("'<"),col("'>")]).'<bar>'.v:count1."\<c-a>"<cr> 

既然你提到,你可能也想看看godlygeek的Tabular插件對齊。畫在vimcasts做了screencast on using tabular

如果你決定讓自己的映射/功能/插件,我也建議你考慮以下幾點:

:h :s 
:h /\%V 
:h sub-replace-expression 
:h printf(
相關問題