1

经过短暂的谷歌搜索后,我没有得到好的答案,所以我在这里问。

通常,当我想格式化当前文件时,我会这样做:

c-x h c-m-\

它格式化当前文件,但我失去了光标位置。例如,我正在编辑一个长文件,我现在在第 157 行。当我重新格式化文件时,我发现我的光标跳到了第 1 行。我必须手动将它移动到第 157 行,这很不方便。

我该怎么做?

4

3 回答 3

5

在 Emacs 中解决此类问题的一般方法如下:

C-SPC C-SPC ...dowhatyouwant... C-u C-SPC

C-SPC C-SPC 部件推动标记环上的当前位置,然后 Cu C-SPC 从标记环弹回该位置。

于 2012-05-11T18:11:56.497 回答
3

您可以使用此功能并将其绑定到单个按键:

(defun indent-current-buffer ()
    (interactive)
    (indent-region (point-min) (point-max)))
于 2012-05-11T16:31:32.167 回答
1

从我的 .emacs (似乎取自http://tuxicity.se/emacs/elisp/2010/05/07/clean-up-buffer-or-region-in-emacs.html或类似):

(defun clean-up-buffer-or-region ()
  "Untabifies, indents and deletes trailing whitespace from buffer or region."
  (interactive)
  (save-excursion
    (unless (region-active-p)
      (mark-whole-buffer))
    (untabify (region-beginning) (region-end))
    (indent-region (region-beginning) (region-end))
    (save-restriction
      (narrow-to-region (region-beginning) (region-end))
      (delete-trailing-whitespace))))

(global-set-key (kbd "C-c n") 'clean-up-buffer-or-region)

这比您想要的要多一点,但我通常会发现额外的功能位(取消制表符和删除尾随空格)很有用。

于 2012-05-11T19:44:59.960 回答