2016-04-14 49 views
0

請注意這是不是:paste/:nopaste和剪貼板有關。我正在討論完全在vim中複製和粘貼(d,y,p)。如何在vim中刪除/粘貼粘貼並正確縮進? (不是在說:粘貼)

將一個外部塊的代碼塊複製並粘貼到內部塊中是很常見的。不幸的是,縮進仍然在外部塊的水平,我不得不縮進它之後。

我想做的是去距離:

function foo() { 
} 
var bar; 
var bazz; 

function foo() { 
    var bar; 
    var bazz; 
} 

在vim中我通常做的是:

1)去行

2)切換到視覺模式

3)突出顯示的行

4)dd刪除線

5)向上移動光標

6)P粘貼

7)進入視覺模式

8)突出顯示行

9)>>縮進行

我希望它自動縮進到正確的位置。如果我不需要重新突出顯示行然後手動縮進它,這將會是一個更流暢的工作流程。換句話說,消除步驟7-9。

任何人都知道一種方法來做到這一點?

回答

1

您可以輕鬆地將此作爲粘貼的一部分進行自動縮進的鍵盤映射。

例如,

nnoremap gp p`[v`]= 

擊穿:

p to paste text 
`[v`] to selecte Pasted text 
= to autoindent selected text 
1

我碰到這個插件。

https://github.com/sickill/vim-pasta

看起來它做同樣的事情與上面一些額外的功能提到ronakg。

+0

這是一個很好的插件。我也使用它。但很好理解東西是如何工作的。乾杯。 – ronakg