我在XML文件中有以下内容:
<TypeDef name="a">
<ArrayType high="14" low="0">
<UndefType type="node">
</UndefType>
</ArrayType>
</TypeDef>
Run Code Online (Sandbox Code Playgroud)
我想复制这个条目.通常我会去第一行,进入Line-Visual模式V,下到最后一行,猛拉并粘贴.
如何在不查找条目结尾的情况下复制整个条目?
我今天学到的解决方案(感谢CMS回答了这个问题)是使用VIM的文本对象动作.
将光标放在要复制的条目中,然后在命令模式下键入以下内容yat:
y 根据以下动作猛拉.at 选择当前标签.请注意,如果光标位于"ArrayType"标记内,那么将会被拉出.
另请注意,这不会拉扯整条线.仅从开口标签的开口支撑到关闭标签的闭合支撑.如果您不小心,这可能会导致对齐问题.
解决这个问题的一种方法是通过粘贴:put而不仅仅是p这样:yat:put.
请注意,这不会保留缩进,因为XML条目不会作为整行被拉动.
另一种方法是vatVy:
v 进入可视模式.at 如上所述.V 切换到Line Visual模式并选择整行.y 挑选了一下.除了 Nathan 的答案之外,您可能还想查看 matchit.vim ...如果您有较新的安装,您可能已经拥有它
http://www.vim.org/scripts/script.php?script_id=39
matchit 扩展了 vim 的 % (查找匹配括号)以覆盖 xml/html 标签等。因此,对于您的解决方案,操作将从开始标签开始
V%y
Run Code Online (Sandbox Code Playgroud)
matchit 当然对于一般导航目的非常有用。