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

0

私はすでにあなたの質問に答えていると思います。ちょうど別の捕虜..末尾の空白は非常に迷惑で、目に見えず、バグ(?)になりやすいです。だから私はそれらを削除するために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 'の前にsave-hook' delete-trailing-whitespace)'といっしょに書くことができます。 – sanityinc

+0

@sanityincはい。あなたが正しいです。冗長ラムダを削除しました。ありがとう – kindahero

+1

末尾の空白をトリミングするための優れた 'ws-trim-mode'(' global-'バリアントも含む)をお勧めします。カスタマイズは可能ですが、デフォルトの設定では、編集する行だけを変更し、バージョンコントロールを安全にします(末尾の空白がたくさんあるファイルを編集すると、無関係の変更が大量に導入されることはありません)。 ftp://ftp.lysator.liu.se/pub/emacs/ws-trim.el – phils

4

は、通常、このような状況で、私は最後の非空白文字を取得し、また、末尾のスペースを削除したいので、私はこれを使用します。私は空白を保持したいと思うまれなケースで

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

を私はちょうどMbMfbackward-word,forward-word)を使用してください。これは通常は十分近いです。

+0

これは便利ですが、ポイントが既に正しい位置に移動されている必要があります。 – SabreWolfy

+0

良い点。既に行末にない場合は、事前に 'C-e'を追加する必要があります。 –

+2

はい、 'C-e'' M - \\'は、行末までポイントを移動させて余分な空白を削除する代替ソリューションです。ありがとう。 – SabreWolfy

関連する問題