Emacs:删除空白区域,直到下一个非白色字符

时间:2013-08-03 12:17:19

标签: emacs elisp

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

  1. M- \运行命令delete-horizo​​ntal-space,但是它也会删除光标左侧的空格,这不是理想的结果!是否有任何现有命令可以执行此操作?

  2. 通过一些试验和错误编写了以下功能,这似乎做了我想要的。

  3.     (defun del-ws-to-right ()
          "Delete all spaces and tabs from point to next non-white char."
          (interactive)
          (save-excursion 
            (let* ((orig-pos (point))
                   (numchrs (skip-chars-forward " \t"))
                   (end-pos (+ orig-pos numchrs)))
              ;(message "orig-pos : end-pos = %d : %d" orig-pos end-pos) 
              (delete-region orig-pos end-pos)
              )
            )
          )
    
    (global-set-key (kbd "C-.") 'del-ws-to-right)
    
    

    删除水平空间等的elisp代码看起来更复杂!只是想知道这里有没有陷阱?!

2 个答案:

答案 0 :(得分:3)

我认为没有内置命令。

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

(delete-region (point) (save-excursion (skip-chars-forward "\\s-") (point)))

答案 1 :(得分:1)

您也可以使用hungry-delete。如果你安装它并放

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

在您的init文件中, Cd 绑定到hungry-delete-forward,该{{1}}被定义为“删除后续字符或所有后续空格直到下一个非空白字符。”