经过短暂的谷歌搜索,我得不到一个好的答案,所以我在这里问。
通常,当我想格式化当前文件时,我会这样做:
c-x h c-m-\
它格式化当前文件,但我丢失了光标位置。例如,我正在编辑一个长文件,现在我在第157行。当我重新格式化文件时,我发现光标跳到第1行。我要手动将它移动到第157行,这不方便。
我该怎么做?
答案 0 :(得分:5)
在Emacs中解决此类问题的一般方法如下:
C-SPC C-SPC ...dowhatyouwant... C-u C-SPC
C-SPC C-SPC部件推动标记环上的当前位置,然后C-u C-SPC从标记环弹出该位置。
答案 1 :(得分:3)
您可以使用此功能并将其绑定到单个按键:
(defun indent-current-buffer ()
(interactive)
(indent-region (point-min) (point-max)))
答案 2 :(得分: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)
这比您想要的多一点,但我通常会发现额外的功能(无法修改和删除尾随空格)非常有用。