What's the most elegant way of commenting / uncommenting blocks of ruby code in Vim?
在VIM中,我需要注释掉一段Ruby代码:
- 我导航到我要注释掉的行的第一列
- 我按CTRL-v进入可视区块模式
- 我向下导航到我想要结束操作的地方
-
如果我想取消注释代码,我输入
r ,如果我想要注释,我输入r# 。
这个工作流程对我来说似乎没问题,有没有办法改进这个过程? 是否有任何其他技巧可以在vim中评论或取消注释ruby代码部分?
我做的几乎和你一样。
注释:
-
视觉块选择
CTRL-V 然后I# (在开头插入# )
取消注释:
-
视觉块选择
CTRL-V 然后X (删除行上的第一个符号)
请注意大写
对于每种语言(ftplugin),我编写映射,添加或删除注释引导并将光标向下移动一行。例如,在我的python ftplugin中,我有这个:
1 2 | 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评论(/*...*/)它不起作用,但我不想再使用它们。
我使用这些插件:
使用这种组合,我可以在普通模式下轻松注释/取消注释特定于Ruby的代码,例如:
总而言之,它非常像Vim和自然。
希望有所帮助。
有些人似乎喜欢Nerd Commenter
我喜欢使用以下内容:
- 将光标放在要注释掉的第一行上
- 输入ma(无冒号)在该行上放置标记
- 转到要注释的块的最后一行
- 输入:'a,.s / ^ /#/然后输入
也就是说,从包含标记"a"的行到当前行,将哈希替换为行的开头。
你试过EnhCommentify.vim或tComment.vim吗?
在块模式下直观地选择要注释的文本,点击I(即大写i),键入#并最后点击转义键。它基本上与您当前使用的程序相同,但使用insert而不是replace。
你也可以这样做:
- 移至第一行注释掉
- 然后按'ESC'
-
按
Ctrl + q 进入Visual Block模式 - 将完成移至最后一行以注释掉
-
点击
I ,按# 注释掉 -
点击
ESC
并取消注释:
-
移至评论的第一个
# -
按
Ctrl + q 进入Visual Block模式 - 将完成移至最后一行以注释掉
-
按
d 删除注释字符
我将向您推荐一种使用Macro进行评论的替代方法
第一个,只是把它放到你的
1 2 | let @c="I#\ej" let @u="^xj" |
例如
评论12行:
取消注释12行:
结论
注释:
1 | [quantifier]@c |
取消注释:
1 | [quantifier]@u |
注意:这些命令将从当前行开始注释/取消注释。
额外:
为了改善你的需要,
https://github.com/myusuf3/numbers.vim
尝试使用Ruby块进行T-comment。
我将T-comment映射到//。
1 2 3 | " Easy commenting nnoremap // :TComment<CR> vnoremap // :TComment<CR> |
这允许从Ruby块中的任何位置使用以下内容对其进行注释:
1 2 | var (visual around Ruby) // (toggle comments) |
请注意,Ruby块有一些需要安装的插件依赖项,请参阅我的Vimfiles示例。