2012-03-07 71 views
3

M-mback-to-indentation)將點移動到行上的第一個非空白字符。我想做相反的事情:將點移動到行上的最後一個非空白字符。我一直無法找到一個「內置」命令,我不熟悉ELisp寫什麼,所以任何幫助,將不勝感激請。Emacs:將點移動到最後一個非空白字符

回答

6
(defun my-move-end-of-line-before-whitespace() 
    "Move to the last non-whitespace character in the current line." 
    (interactive) 
    (move-end-of-line nil) 
    (re-search-backward "^\\|[^[:space:]]")) 
+0

謝謝。我在末尾添加了'(forward-char)',這樣我就可以使用'C-k'來刪除空格。 – SabreWolfy 2012-03-08 14:47:28

0

我認爲已經phils回答你的問題。只是另一個POW ..尾隨的空白空間非常煩人,不可見並且容易出現錯誤(?)。所以我有一個掛鉤before-save-hook刪除它們。

;;; delete nasty hidden white spaces at the end of lines 
(add-hook 'before-save-hook 'delete-trailing-whitespace) 

所以你的縮進操作變得簡單C-e我。

+0

你可以更簡單地寫成'(add-hook'before-save-hook'delete-trailing-whitespace)',BTW。 – sanityinc 2012-03-07 09:21:11

+0

@sanityinc是的。你是對的。刪除冗餘的lambda。謝謝 – kindahero 2012-03-07 09:26:04

+1

我推薦出色的'ws-trim-mode'(也包括'global-'variant)來修剪尾部空白。它是非常可定製的,但默認配置將只修改您編輯的行,使其版本控制安全(即,如果您編輯的文件具有大量尾隨空白,則不會引入大量無關的更改)。 ftp://ftp.lysator.liu.se/pub/emacs/ws-trim.el – phils 2012-03-07 10:17:43

4

通常在這種情況下,我想最後一個非空白字符,並刪除尾隨的空間,所以我用這個:

M-\ runs the command delete-horizontal-space, which is an interactive 
compiled Lisp function in `simple.el'. 

在極少數情況下,我會希望保留空白我只是使用MbMfbackward-wordforward-word)它通常足夠接近。

+0

這很有用,但要求該點已移至正確的位置。 – SabreWolfy 2012-03-08 14:39:36

+0

好點。如果不在該行的末尾,則需要事先添加「C-e」。 – 2012-03-08 20:48:18

+2

是的,所以'C-e'' M - \\'是一種替代方案,它將點移動到行的末尾,然後刪除多餘的空格。謝謝。 – SabreWolfy 2012-03-09 03:11:08

相關問題