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

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

  • 我导航到我想要注释的行中的第一列
  • 我按CTRL-V进入可视化块模式
  • 我向下导航到我想要结束操作的地方
  • 如果我想要取消注释代码或r#如果我想注释掉,则键入r<space>

这个工作stream程对我来说似乎可以,有没有改进这个过程的方法? 在vim中有没有其他的技巧来评论或取消注释ruby代码段?

我和你做的事情差不多。

注释:

  • 可视块selectCTRL-V然后I# (在开头插入#

取消注释:

  • 可视化块selectCTRL-V然后X (删除线上的第一个符号)

请注意大写IX

对于每种语言(ftplugin),我都会编写映射,这些映射将添加或删除注释引用,并将光标向下移动一行。 例如,在我的pythonftplugin,我有这样的:

 noremap <buffer> K :s,^\(\s*\)[^# \t]\@=,\1#,e<CR>:nohls<CR>zvj noremap <buffer> <CK> :s,^\(\s*\)#\s\@!,\1,e<CR>:nohls<CR>zvj 

我觉得这是一个非常灵活的设置:

  • 击中K来评论当前行。
  • 重复击中K来评论很多线条。
  • 6K来评论6行。
  • K在可视模式下评论整个select。
  • 所有的东西都可以使用CTRL-K以相同的方式取消注释
  • 如果行已经被评论,他们将不会有一个额外的#添加到开始。
  • 如果#后面跟着一个空格,则认为它是文本注释,不会被触及。

我对每种语言稍作调整。 对旧C的评论(/*…*/)不起作用,但我宁愿不要使用那些。

有些人似乎喜欢书呆子评论员

你试过了EnhCommentify.vim或tComment.vim吗?

我喜欢使用以下内容:

  • 把光标放在你想注释掉的第一行
  • inputma(无冒号)在该行上放置一个标记
  • 去你想注释掉的块的最后一行
  • input:“a,.s / ^ /#/然后input

也就是说,从包含标记“a”的行开始,直到当前行,用一个散列代替行的开始。

在块模式下,在视觉上select要注释的文本,点击I (这是一个大写字母i),然后input ,最后点击退出键。 它基本上是你目前使用的相同的程序,但使用插入而不是replace。

我使用这些插件:

  1. 蒂姆·波普(Tim Pope)的vim- comment,定义了一个评论操作符gc
  2. vim-textobj-rubyblock ,它定义了Ruby(在Ruby块内部)和ar (在Ruby块周围)Ruby块…。
  3. vim-ruby在Ruby /内部/周围定义了im / am ,而在Ruby /类中则定义了iM / aM

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

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

总而言之,它非常Vim般自然。

希望有所帮助。

你也可以这样做:

  • 移到第一行注释掉
  • 然后按“ESC”
  • Ctrl + q进入可视块模式
  • 移动到最后一行注释掉
  • I ,按#
  • ESC

并取消注释:

  • 移至第一条评论
  • Ctrl + q进入可视块模式
  • 移动到最后一行注释掉
  • d去除注释字符

尝试使用Ruby块的 T评论 。

我有T评论映射到/ /。

 " Easy commenting nnoremap // :TComment<CR> vnoremap // :TComment<CR> 

这允许从Ruby块中的任何地方通过以下方式对其进行注释:

 var (visual around Ruby) // (toggle comments) 

请注意,Ruby块有一些需要安装的插件依赖,请参阅我的Vimfiles的例子。

我会推荐你​​一个备用的方式来评论使用macros

首先,把这个放到你的.vimrc

 let @c="I#\ej" let @u="^xj" 

例如

要评论12行:

  1. 导航到您要开始评论的第一行。
  2. 在命令模式下input12@c来注释12行

取消注释12行:

  1. 导航到您要取消注释的第一行。
  2. 在命令模式下键入12@u取消注释12行

结论

注释:

 [quantifier]@c 

取消注释:

 [quantifier]@u 

注意:这些命令将从当前行开始注释/取消注释。

额外:

为了提高你的nevigation number.vim可以帮助你很多量词的数量。

https://github.com/myusuf3/numbers.vim