如何在DrRacket中创建复制选中行的快捷键绑定?
在DrRacket中创建复制选中行的快捷键绑定
要在DrRacket里为「复制选中行」功能绑定自定义快捷键,可借助framework/keybinding-lang实现,以下是完整方案:
完整实现代码
#lang s-exp framework/keybinding-lang ; 绑定Meta+D(Windows/Linux为Ctrl+D,Mac为Cmd+D)为复制选中行的快捷键 (keybinding "m:d" (λ (editor evt) (define start (send editor get-start-position)) (define end (send editor get-end-position)) ; 无选中内容时复制当前行,有选中则复制选中区域 (if (= start end) (let* ([line-start (send editor line-start-position start)] [line-end (send editor line-end-position start)]) (send editor copy line-start line-end)) (send editor copy start end)) ; 覆盖默认快捷键行为 (send evt consume)))
代码说明
keybinding "m:d":m:对应Meta键(跨平台适配:Windows/Linux为Ctrl,Mac为Cmd),若需修改快捷键,可替换为其他组合,比如"c:d"(仅Windows/Linux的Ctrl+D)、"s:d"(Shift+D)。- 核心逻辑:自动判断是否有选中内容——光标未选中任何文本时,复制当前光标所在的整行;已有选中区域时,直接复制选中内容。
(send evt consume):阻止DrRacket原有的Meta+D默认行为(如删除行),确保自定义功能优先触发。
启用步骤
- 将上述代码保存为
.rkt格式文件,例如copy-line-keybinding.rkt。 - 打开DrRacket,点击菜单栏「File」→「Install Package...」。
- 在弹窗中选择「From File...」,选中保存的文件后点击「Install」。
- 重启DrRacket,自定义快捷键即可生效。
内容的提问来源于stack exchange,提问作者tehkonst
相关产品推荐
相关产品推荐

