在Vim中评论/取消注释ruby代码块的最优雅方式是什么?

Sam*_*ron 38 vim

在VIM中,我需要注释掉一段Ruby代码:

  • 我导航到我要注释掉的行的第一列
  • 我按CTRL-v进入可视区块模式
  • 我向下导航到我想要结束操作的地方
  • r<space>如果我想取消注释代码或者r#我想将其注释掉,我会输入.

这个工作流程对我来说似乎没问题,有没有办法改进这个过程?是否有任何其他技巧可以在vim中评论或取消注释ruby代码部分?

sas*_*nin 38

我做的几乎和你一样.

注释:

  • CTRL-V然后用视觉块选择I#(#在开头插入)

取消注释:

  • CTRL-V随后的视觉块选择X(删除行上的第一个符号)

请注意大写IX.

  • 在某些情况下,为什么这可能不起作用的任何想法?我尝试它只插入我阻止的第一行.我安装了+ visualextra. (4认同)

too*_*php 13

对于每种语言(ftplugin),我编写映射,添加或删除注释引导并将光标向下移动一行.例如,在我的python ftplugin中,我有这个:

noremap   <buffer> K      :s,^\(\s*\)[^# \t]\@=,\1#,e<CR>:nohls<CR>zvj
noremap   <buffer> <C-K>  :s,^\(\s*\)#\s\@!,\1,e<CR>:nohls<CR>zvj
Run Code Online (Sandbox Code Playgroud)

我发现这是一个非常灵活的设置:

  • 点击K评论当前行.
  • K反复点击以评论很多行.
  • 6K 评论6行.
  • K 在视觉模式中评论整个选择.
  • 所有内容都可以使用相同的方式取消注释 CTRL-K
  • 如果行已经注释,则它们不会#在开头添加额外的行.
  • 如果a #后跟空格,则将其视为文本注释,不会被触及.

我对每种语言略有适应.对于旧C评论(/*...*/)它不起作用,但我不想再使用它们.


pro*_*ero 6

有些人似乎喜欢Nerd Commenter


Dou*_*oug 6

我使用这些插件:

  1. VIM-评论蒂姆教皇,它定义了一个注释操作gc
  2. vim-textobj-rubyblock,它为Ruby do ...块定义ir(在Ruby块内部)和ar(在Ruby块周围).
  3. vim-ruby定义im/ am用于Ruby方法内部/周围,以及iM/ aM用于Ruby类内部/周围.

使用这种组合,我可以在普通模式下轻松注释/取消注释特定于Ruby的代码,例如:

  1. gcir/ gcar在Ruby do/end块内/周围发表评论.
  2. gcim/ gcam在Ruby方法内/周围注释.
  3. gciM/ gcaM在Ruby类内部/周围发表评论.
  4. 加上正常的评论地图喜欢gcc评论一行,或5gcc评论5行.

总而言之,它非常像Vim和自然.

希望有所帮助.


Rob*_*lls 5

我喜欢使用以下内容:

  • 将光标放在要注释掉的第一行上
  • 输入ma(无冒号)在该行上放置标记
  • 转到要注释的块的最后一行
  • 输入:'a,.s/^ /#/然后输入

也就是说,从包含标记"a"的行到当前行,将哈希替换为行的开头.