Vim中评论/取消注释Ruby代码块的最优雅方式是什么?
在VIM中,当我需要注释掉一段Ruby代码的时候:
- 我导航到我想要注释的行中的第一列
- 我按CTRL-V进入可视化块模式
- 我向下导航到我想要结束操作的地方
- 如果我想要取消注释代码或
r#
如果我想注释掉,则键入r<space>
。
这个工作stream程对我来说似乎可以,有没有改进这个过程的方法? 在vim中有没有其他的技巧来评论或取消注释ruby代码段?
我和你做的事情差不多。
注释:
- 可视块select
CTRL-V
然后I#
(在开头插入#
)
取消注释:
- 可视化块select
CTRL-V
然后X
(删除线上的第一个符号)
请注意大写I
和X
对于每种语言(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。
我使用这些插件:
- 蒂姆·波普(Tim Pope)的vim- comment,定义了一个评论操作符
gc
- vim-textobj-rubyblock ,它定义了Ruby(在Ruby块内部)和
ar
(在Ruby块周围)Ruby块…。 - vim-ruby在Ruby /内部/周围定义了
im
/am
,而在Ruby /类中则定义了iM
/aM
。
使用这种组合,我可以在普通模式下轻松地评论/取消注释Ruby特定的代码,例如:
- Ruby do / end块内部/周围的
gcir
/gcar
注释。 -
gcim
/gcam
评论里面/围绕Ruby方法。 - 在Ruby类里面/周围的
gciM
/gcaM
注释。 - 加上正常的评论地图,如
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行:
- 导航到您要开始评论的第一行。
- 在命令模式下input
12@c
来注释12行
取消注释12行:
- 导航到您要取消注释的第一行。
- 在命令模式下键入
12@u
取消注释12行
结论
注释:
[quantifier]@c
取消注释:
[quantifier]@u
注意:这些命令将从当前行开始注释/取消注释。
额外:
为了提高你的nevigation number.vim
可以帮助你很多量词的数量。