2012-03-07 81 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

相关问题