1

通常在编码时,我需要将注释等与特定列对齐。有一个组合键/命令可以删除从光标到下一个非白色字符的所有内容,这很有用。

  1. M-\ 运行命令 delete-horizo​​​​ntal-space,但是它也会删除光标左侧的空白,这不是预期的结果!是否有任何现有的命令可以做到这一点?

  2. 通过一些试验和错误,完成了以下功能,这似乎可以满足我的要求。

    (defun del-ws-to-right ()
      “删除从点到下一个非白色字符的所有空格和制表符。”
      (交互的)
      (保存游览
        (let* ((orig-pos (point))
               (numchrs (skip-chars-forward "\t"))
               (end-pos (+ orig-pos numchrs)))
          ;(消息“orig-pos : end-pos = %d : %d” orig-pos end-pos)
          (删除区域 orig-pos end-pos)
          )
        )
      )

(global-set-key (kbd "C-.") 'del-ws-to-right)

delete-horizo​​ntal-space 等的 elisp 代码看起来更复杂!只是想知道这里是否有任何陷阱?!

4

2 回答 2

3

我认为没有内置命令。

您的解决方案是合理的,虽然有点罗嗦。您不需要查看 skip-chars-forward 的结果,因为它会移动点。我可能会写更多类似的东西:

(delete-region (point) (save-excursion (skip-chars-forward "\\s-") (point)))
于 2013-08-03T20:02:14.480 回答
1

您也可以使用饥饿删除。如果你安装它并把

 (require 'hungry-delete)
 (global-hungry-delete-mode)

在您的 init 文件中,C-d绑定到hungry-delete-forward定义为“删除以下字符或所有后续空白直到下一个非空白字符”。

于 2013-08-04T05:53:09.073 回答