2014-05-16 29 views
5

抽出一個完整標記給定一個普通的HTML有點像剪切或在VIM

<div> 
    <p> 
    Mary had a <b>little</b> lamb. 
    </p> 
</div> 

我希望削減粘貼的整個(不是隻內)div別處。我知道還有其他的方法可以做到這一點,比如切割一系列線條等等,但作爲VIM的新用戶,我非常需要在前端工作流程中移動標籤,而且我還沒有看到一個很好的方法來完成這個任務。

+0

@JonathanLandrum我猜這是因爲他在div之前的同一行上有其他標籤/文本。 – ElGavilan

+0

在這裏找到了一個關於堆放和粘貼的有用答案:http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim/1220118#1220118 –

+0

@JonathanLandrum有時標籤是真的大,我看不到它實際上結束了什麼行號。其次,我不喜歡計算喜歡7或8以外的喜歡。也許隨着時間的推移,我會發展出更好的估計感覺,但現在我真的需要像許多積木一樣移動標籤,而不會在精神上轉換爲計數。如果這是有道理的。 – iamnotsam

回答

10

與外div標籤您cusor:d一個噸

d elete 一個一輪牛逼 AG

然後將其與p粘貼哪裏你需要它。

+0

這對我有效,謝謝!我發現有很多方法可以做到這一點,包括進入可視化模式(儘可能避免使用這種方式),但這對我的用例非常直接。 – iamnotsam

2

vatyp應該這樣做。

vat直觀地選擇周圍標記光標在

y猛拉它

p粘貼。轉到要粘貼的位置並使用p進行粘貼。

4

使用at文本對象作用於整個標記,it文本對象作用於標記的內容。

作用於當前的文本對象上,你的命令應該是這樣的:

operator + text-object 

您可以添加一個count前的文本對象上count水平周圍文本對象的行爲:

operator + count + text-object 

所以,用光標線1和5,可以使用下面的命令來抽出整個<div>

yat 

當光標在第2行,3或4,該命令就變成:

y2at 

隨着<b>內的光標,該命令就變成:

y3at 

這就是說,我建議你使用視覺模式而不是計數:它更直觀,更安全並且可能更快。重複剛纔的文本對象擴大您的選擇:

vatat 

則:

y 

:help motion.txt

1

xml插件http://github.com/othree/xml.vim非常方便編輯xml。

用這個插件,當你的光標在<div>上時,按<leader>D,將刪除<div> till </div>(含)。

如果按<leader>d,只會刪除<div> and </div>標籤,更改文字到:

<p> 
    Mary had a <b>little</b> lamb. 
    </p> 

有更多的功能,你可能要檢查。沒有xml插件,你可以按dat