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