在vim中注释掉XML

时间:2009-06-01 08:31:01

标签: vim

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

  • tomcat的server.xml
  • maven的settings.xml

和其他许多人。

是否有一个vim插件/命令来使这个变得简单?

6 个答案:

答案 0 :(得分:16)

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

例如,给定这个片段:

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

将光标放在开始或结束TypeDef上,然后输入以下序列:

vat:s/^\(.*\)$/<!--\1-->/

v - 让您进入视觉模式
at - 选择整个XML标记
:s/^\(.*\)$/<!--\1-->/ - 用'<!--...-->'围绕每一行,XML的注释分隔符

或者,你可以像这样删除它:

dat

d - 根据以下动作删除
at - 与以前一样

答案 1 :(得分:5)

Vim本身并没有对所有文件类型进行智能评论。您应该获得满足评论需求的脚本。

我使用enhcomentify脚本已经存在很长时间了

http://www.vim.org/scripts/script.php?script_id=23

似乎可以很好地执行xml,并且您可以获得与您正在使用的任何文件类型相同的键绑定的优势。

还有其他人......尤其是NERD评论者

http://www.vim.org/scripts/script_search_results.php?keywords=comment&script_type=&order_by=rating&direction=descending&search=search

答案 2 :(得分:5)

使用surround.vim进行常规标记匹配,删除,插入,环绕等,

对于评论标签,很容易使用vim文本对象&amp;和一个简单的宏

示例:

输入

vmap ,c <esc>a--><esc>'<i<!--<esc>'>$

某处合适,然后将光标放在下面第二行“ArrayType”的大写“A”上(借用上面的Nathan Fellmans示例)

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

然后点击

vat,c

你会得到:

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

将光标放在评论的末尾

答案 3 :(得分:5)

我喜欢https://github.com/tpope/vim-commentary的简单性。容易添加其他语言,虽然似乎支持大多数开箱即用。不到100行代码。

gcc评论当前行,或选择要评论的文字并点击gc。超级容易。

答案 4 :(得分:2)

我认为适应this vim tip可能会有用。

我建议添加:

" 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

到你的.vimrc

然后,在视觉选择激活(V)的情况下,点击\ c(反斜杠然后c)将您的块包裹在<!-- --> XML样式的注释中。

或者,正如维基上所建议的那样,您可以将代码放在〜/ .vim / scripts / wrapwithcomment.vim中并添加到.vimrc中:

au Filetype html,xml source ~/.vim/scripts/wrapwithcomment.vim

仅在处理html或xml文件时加载该功能。

答案 5 :(得分:1)

如果您找到一个在选择的开头和结尾添加内容的命令,那就最好了。

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

:2,4s/^/#/g