VS Code如何实现类似Geany的基于状态块注释/取消注释功能
VS Code 实现 Geany 同款状态切换块注释方案
完全可以实现该功能,以下是适配Python场景的具体配置方法,支持和Geany完全一致的#~ 前缀区分逻辑,不会修改代码中原生的#注释:
方案1:无扩展依赖配置
直接通过VS Code内置的快捷键正则替换能力实现,操作步骤如下:
- 按下
Ctrl+Shift+P调出命令面板,输入「打开键盘快捷方式(JSON)」,回车进入快捷键配置文件 - 在配置数组中添加以下规则:
[ // 切换Geany风格Python注释 { "key": "ctrl+e", "command": "editor.actions.findWithReplace", "args": { "find": "^(#~ )?(.*)$", "replace": "$1 ? '$2' : '#~ $2'", "regexp": true, "restrictSearchToSelection": true }, "when": "editorLangId == python && editorHasSelection" } ]
保存后即可生效,选中代码块按下Ctrl+e就能实现逐行状态翻转。
方案2:配合扩展实现更稳定的效果
如果方案1存在偶发的正则匹配偏差,可以安装「multi-command」扩展实现逐行精准处理:
- 先在扩展商店搜索安装
multi-command扩展 - 按下
Ctrl+Shift+P输入「打开用户设置(JSON)」,添加如下命令配置:
"multiCommand.commands": [ { "command": "multiCommand.toggleGeanyPythonComment", "sequence": [ "editor.action.insertCursorAtEndOfEachLineSelected", { "command": "editor.action.replaceSelection", "args": { "regexp": "^(#~ )?(.+)$", "replace": "${1:+$2}${1:-#~ $2}" } }, "editor.action.removeSecondaryCursors" ] } ]
- 回到快捷键JSON配置文件,添加绑定规则:
{ "key": "ctrl+e", "command": "multiCommand.toggleGeanyPythonComment", "when": "editorLangId == python && editorHasSelection" }
效果验证
和你描述的Geany逻辑完全一致:
- 选中原始代码块:
x = 1 #~ x = 2 y = 3 #~ y = 4
按下Ctrl+e后将得到:
#~ x = 1 x = 2 #~ y = 3 y = 4
所有原生#开头的注释不会被该操作修改。
内容的提问来源于stack exchange,提问作者Will
相关产品推荐
相关产品推荐

