如何使用Vim跳转到XML元素的下一个兄弟节点?
我正在编辑一些
XML文件,现在有一些类型的结构,如:
<Parent> <Child name="Fred"> Some content </Child> <Child name="George" value="other content" /> ... </Parent> 换句话说,一些父元素的内容将是一个子元素的序列(在这种情况下具有相同的名称).作为示例,请考虑目录中出售的项目列表,甚至是
我想做的是将vim中的一些关键序列映射到父元素中的下一个(或上一个)子元素中,并且理想地可以将其前缀到计数(以便我可以“去”对于第五个下一个孩子,例如)理想情况下,我将需要超出Child元素的内容,这样才有意义,所以在Child元素内部,我可以用同一个地图在Sunchildren之间跳转.插件/解决方案,没有找到任何东西. 在下一个孩子在该孩子关闭之后的下一个行(即前一个孩子的同样vato< Esc> k)的情况下,我现在可以做的是vat& Esc> j.但是,我有一些问题: >我不能用这个数字前缀在映射之前这样做会导致奇怪的行为(请参阅:help v,前缀v与count不一样我想在这里);在映射(例如v2at)内进行此操作,连续选择“较高”的包围元素. 数字2并不是非常关键的 – 我可以对我正在编辑的文件执行正确的格式化,并且可以使用xmllint轻松实现.如果可能,我仍然希望采用更“语义”的方式来优雅和健壮. 第一号是关键的,因为我经常发现自己想要这么多的孩子下来.目前,我正在寻找我想要的孩子,看看我的相对于该线的相对数,然后去下去(或上).这是 烦人的,并不明显的我对XML的内容的想法 另一个可能的解决方案是搜索Child,然后去[count] n或[count] N.这也有一些问题: >我必须想到并键入自己的名字,这完全不可编程;或者我做一些类似vato< Esc> l *的东西,不能以我想要的方式以计数为前缀 理想情况下,我将创建一些功能命令映射,以强大,智能的方式处理所有这些.然后,我可以在编辑时无意中使用我的命令,并且没有头痛的尝试记录通过在元素之间跳转等工作的宏.但是,我仍然相当新的vimscripting,我不太确定如何开始.
如果你经常需要这个动作,那么为它创建一个自定义的动作是有意义的.我的
CountJump plugin,这很容易:
call CountJump#Motion#MakeBracketMotion('<buffer>','','<Child','<Child.*zs/>|</Child>',0) 这将修改[[[]等运动(您也可以选择其他映射),并支持计数. (将其放入?/ .vim / ftplugin / xml_motions.vim) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |