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

时间:2009-01-20 08:45:25

标签: vim

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

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

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

10 个答案:

答案 0 :(得分:38)

我做的几乎和你一样。

注释:

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

取消注释:

  • 使用CTRL-V进行视觉区块选择,然后选择X(删除线条上的第一个符号)

请注意大写IX

答案 1 :(得分: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

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

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

我对每种语言稍微调整一下。它对于旧C评论(/*...*/)也不起作用,但我还是不想使用它们。

答案 2 :(得分:6)

有些人似乎喜欢Nerd Commenter

答案 3 :(得分:6)

我使用这些插件:

    Tim Pope的
  1. vim-commentary,它定义了一个评论运算符gc
  2. vim-textobj-rubyblock,它为Ruby do ...块定义ir(在Ruby块内)和ar(在Ruby块周围)。
  3. vim-ruby为Ruby方法内部/周围定义im / am,为Ruby类内部/周围定义iM / aM
  4. 使用这种组合,我可以在普通模式下轻松注释/取消注释特定于Ruby的代码,例如:

      在Ruby do / end块内/周围发表
    1. gcir / gcar评论。
    2. gcim / gcam在Ruby方法内部/周围发表评论。
    3. gciM / gcaM在Ruby类内部/周围发表评论。
    4. 加上普通的评论地图,例如gcc来评论一条线,或5gcc评论5条线。
    5. 总而言之,它非常像Vim和自然。

      希望有所帮助。

答案 4 :(得分:5)

您是否尝过EnhCommentify.vimtComment.vim

答案 5 :(得分:5)

我喜欢使用以下内容:

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

这就是说,从包含标记“a”的行到当前行,用一个哈希替换该行的开头。

答案 6 :(得分:4)

在屏蔽模式下直观地选择要注释的文字后,点击(即大写i),输入,然后点击逃脱键。它基本上与您当前使用的程序相同,但使用insert而不是replace。

答案 7 :(得分:2)

你也可以这样做:

  • 转到第一行注释
  • 按'ESC'然后
  • 点击Ctrl + q进入Visual Block模式
  • 将完成移至最后一行以注释掉
  • 点击I,按#
  • 注释
  • 点击ESC

并取消注释:

  • 转到评论的第一个#
  • 点击Ctrl + q进入Visual Block模式
  • 将完成移至最后一行以注释掉
  • 点击d删除评论字符

答案 8 :(得分:1)

使用T-comment尝试Ruby block

我将T-comment映射到//.

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

这允许从Ruby块中的任何位置用以下内容对其进行注释:

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

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

答案 9 :(得分:1)

我会建议您使用宏

进行评论的替代方法

首先,只需将其放入.vimrc

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

例如

评论12行:

  1. 导航到您要开始发表评论的第一行。
  2. 在命令模式下键入12@c以评论12行
  3. 取消注释12行:

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

      注释:

      [quantifier]@c 
      

      取消注释:

      [quantifier]@u
      

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

      其他:

      为了改善您的需要,number.vim可以帮助您量化量词数。

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