2013-08-03 117 views
1

通常在編碼時我需要將註釋等對齊到特定的列。有一個組合鍵/命令可以刪除光標到下一個非白色字符的所有內容,這很有用。Emacs:刪除空白到下一個非白色字符

  1. M- \運行命令delete-horizo​​ntal-space,但刪除光標左側的空白,這不是所需的結果!有沒有現有的命令可以做到這一點?

  2. 隨着一些試驗和錯誤煮熟以下功能,這似乎做我想做的。

 
    (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的代碼!只是想知道這裏是否有任何問題?!

+0

我相信這個問題:http://stackoverflow.com/questions/17958397/emacs-delete-whitespaces-or-a-word/17964055#17964055是問同樣的事情。 – 2013-08-03 12:21:04

回答

3

我不認爲這是一個內置的命令。

你的解決方案是合理的,雖然有點羅嗦。你不需要看skip-chars-forward的結果,因爲它移動了點。我可能會寫更多的東西一樣:

​​
1

您還可以使用hungry-delete。如果你安裝了它,並把

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

在你的init文件,C-d成爲必然hungry-delete-forward其定義爲「刪除下列字符或所有後續的空白直到下一個非空白字符。」

+0

如果你不想永久性的這種行爲,你可以將飢餓 - 刪除 - 轉發(其確實是你想要的)綁定到某個鍵(在你的情況下)。 – Malabarba