在vim中注释XML

在vim中注释XML,vim,Vim,我经常在配置文件中删除和添加XML部分: tomcat的server.xml maven的settings.xml 还有很多其他的 是否有一个vim插件/命令可以简化此操作?如果您能找到一个在选择的开头和结尾添加内容的命令,这将是最好的选择 当我评论python代码时,我是这样做的: :2,4s/^/#/g 您可以使用匹配XML标记的组合,如和Perl的搜索和替换中所示 例如,给定以下代码段: <TypeDef name="a"> <ArrayTy

我经常在配置文件中删除和添加XML部分:

  • tomcat的server.xml
  • maven的settings.xml
还有很多其他的


是否有一个vim插件/命令可以简化此操作?

如果您能找到一个在选择的开头和结尾添加内容的命令,这将是最好的选择

当我评论python代码时,我是这样做的:

:2,4s/^/#/g

您可以使用匹配XML标记的组合,如和Perl的搜索和替换中所示

例如,给定以下代码段:

<TypeDef name="a">
  <ArrayType high="14" low="0">
    <UndefType type="node">
    </UndefType>
  </ArrayType>
</TypeDef>
v
-使您进入视觉模式
at
-选择整个XML标记
:s/^\(.*\)$/
-用XML的注释分隔符
'
围绕每一行

或者,您可以这样删除它:

dat
d
-根据以下移动进行删除

at
-与之前一样

Vim本身并没有针对所有文件类型的智能注释。你应该为你的评论需求准备一个脚本

我使用的enhcomentify脚本已经存在并维护了很长时间

它似乎可以很好地处理xml,并且对于所使用的任何文件类型,都可以使用相同的键绑定

还有其他的。。特别是书呆子评论员

用于一般标记匹配、删除、插入、环绕等

对于注释标记,很容易使用vim文本对象和一个简单的宏

例如:

进入

vmap ,c <esc>a--><esc>'<i<!--<esc>'>$
您将获得:

<TypeDef name="a">
  <!--<ArrayType high="14" low="0">
    <UndefType type="node">
    </UndefType>
  </ArrayType>-->
</TypeDef>

将光标放在评论的末尾,我认为调整可能会有用

我建议加入:

" Wrap visual selection in an XML comment
vmap <Leader>c <Esc>:call CommentWrap()<CR>
function! CommentWrap()
  normal `>
  if &selection == 'exclusive'
    exe "normal i-->"
  else
    exe "normal a-->"
  endif
  normal `<
  exe "normal i<!--"
  normal `<
endfunction
在处理html或xml文件时仅加载该功能。

我喜欢它的简单性。易于添加其他语言,但似乎支持大多数开箱即用的语言。100行以下的代码


gcc
注释当前行,或选择要注释的文本并点击
gc
。超级简单。

谢谢你的回答,它确实为我指明了正确的方向。但是我该如何将“”附加到最后一个?vim宏使这变得很容易,通过使用与视觉选择相关的“<和]”标记,或者使用“o”将光标从视觉选择的一端移动到另一端,您的更新非常有洞察力。然后,我可以使用vat:s/-->//删除注释。谢谢。+1提供
dat
信息。如果您演示如何将此添加到热键中,应该会得到更多。@MerlynMorgan Graham您的意思是:
nmap dt dat
Enhcommitify似乎已经死了(上次更新于2008年),但NERD Commenter仍在积极开发中,对我来说工作得很好。@luator这个答案确实很旧。我现在使用vim评论。“超级简单”是一个轻描淡写的说法,如果你已经设置了捆绑包。我希望更多的人找到这个。
vat,c
<TypeDef name="a">
  <!--<ArrayType high="14" low="0">
    <UndefType type="node">
    </UndefType>
  </ArrayType>-->
</TypeDef>
" Wrap visual selection in an XML comment
vmap <Leader>c <Esc>:call CommentWrap()<CR>
function! CommentWrap()
  normal `>
  if &selection == 'exclusive'
    exe "normal i-->"
  else
    exe "normal a-->"
  endif
  normal `<
  exe "normal i<!--"
  normal `<
endfunction
au Filetype html,xml source ~/.vim/scripts/wrapwithcomment.vim