You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DrRacket中设置无空格合并行的键盘快捷键?

在DrRacket中配置行合并快捷键

以下是实现需求的完整键盘绑定代码,支持无选中时合并当前行与下一行(无空格),以及选中多行时将所有选中行合并为一行的功能:

#lang s-exp framework/keybinding-lang
(keybinding "m:j" (λ (editor evt)
  (define start-pos (send editor get-start-position))
  (define end-pos (send editor get-end-position))
  (define has-selection? (not (= start-pos end-pos)))

  (if has-selection?
      ; 处理选中多行场景:移除选中区域内所有换行符
      (let* ([selected-text (send editor get-text start-pos end-pos)]
             [merged-text (regexp-replace* #rx"\n" selected-text "")])
        (send editor delete start-pos end-pos)
        (send editor insert merged-text start-pos))
      ; 处理无选中场景:合并当前行与下一行
      (let* ([current-line (send editor position-line start-pos)]
             [next-line (add1 current-line)]
             [current-line-end (send editor line-end-position current-line)]
             [next-line-start (send editor line-start-position next-line)])
        (when (< next-line (send editor line-count))
          ; 提取下一行内容并移除左侧空白(若需保留原缩进可去掉string-trim)
          (define next-line-content (string-trim (send editor get-text next-line-start (send editor line-end-position next-line)) #:left? #t))
          (send editor delete current-line-end next-line-start)
          (send editor insert next-line-content current-line-end))))))

关键逻辑说明

  • 先判断是否有文本选中:通过对比编辑区域的起始/结束位置是否相等来判断
  • 选中多行时:提取选中文本,用正则替换所有换行符为空,再将合并后的文本插回原位置
  • 无选中时:定位当前行末尾与下一行开头,删除中间的换行和空白区域,将下一行内容(移除左侧缩进后)拼接到当前行末尾

配置步骤

  1. 将上述代码保存为merge-lines-keybinding.rkt文件
  2. 打开DrRacket,点击菜单栏Edit → Preferences
  3. 在左侧导航栏选择Keybindings → Add Custom Keybinding
  4. 选择你保存的merge-lines-keybinding.rkt文件,点击OK
  5. 重启DrRacket后,按下Alt+J(Windows/Linux)或Option+J(Mac)即可使用该功能

内容的提问来源于stack exchange,提问作者tehkonst

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:31:00