【问题标题】:Emacs reindenting entire C++ bufferEmacs 重新缩进整个 C++ 缓冲区
【发布时间】:2010-11-03 19:21:08
【问题描述】:

我有一个 c++ 代码文件,但有相当难看的缩进。我如何告诉 emacs 对文件重新应用缩进?

【问题讨论】:

    标签: emacs indentation


    【解决方案1】:

    C-x h C-M-\

    这两个命令选择整个缓冲区并运行indent-region

    【讨论】:

    • 比上面的方案简单多了!但是您实际上是如何按 \ 键的??
    • 我猜这取决于您的键盘布局。我使用 ESC 作为 Meta,所以和弦的最后一部分是 `ESC C-`。 Mac 用户可能需要额外设置才能将 Alt 视为 Meta。
    【解决方案2】:

    这是我放在~/.emacs.d/defuns.el 文件中的“缩进整个缓冲区”代码。我采取了额外的步骤并将其绑定到一个快捷键C-x \。这也将清除所有悬挂的空白,并将制表符转换为等效的空间表示。

    (defun indent-buffer ()                                                                                                                                                            
      "Indents an entire buffer using the default intenting scheme."                                                                                                                   
      (interactive)                                                                                                                                                                    
      (point-to-register 'o)                                                                                                                                                           
      (delete-trailing-whitespace)                                                                                                                                                     
      (indent-region (point-min) (point-max) nil)                                                                                                                                      
      (untabify (point-min) (point-max))                                                                                                                                               
      (jump-to-register 'o))                                                                                                                                                           
    
    (global-set-key "\C-x\\" 'indent-buffer)                                                                                                                                           
    

    编辑,合并下面的@JSONs 建议会给你一个看起来像这样的定义:

    (defun indent-buffer ()                                                                                                                                                            
      "Indents an entire buffer using the default intenting scheme."                                                                                                                   
      (interactive)                                                                                                                                                                    
      (save-excursion                                                                                                                                                                  
        (delete-trailing-whitespace)                                                                                                                                                   
        (indent-region (point-min) (point-max) nil)                                                                                                                                    
        (untabify (point-min) (point-max))))                                                                                                                                           
    

    我对此进行了测试,它就像以前一样工作。感谢您指出 JSON。

    【讨论】:

    • 相比点注册和跳转注册,使用 save-excursion 包装重新格式化块可能会更好。
    【解决方案3】:

    选择整个缓冲区并执行 M-x indent-region

    this guide

    【讨论】:

      【解决方案4】:
      (defun iwb ()
        "indent whole buffer"
        (interactive)
        (delete-trailing-whitespace)
        (indent-region (point-min) (point-max) nil)
        (untabify (point-min) (point-max)))
      

      你可以使用这个小宏(我从http://emacsblog.org/2007/01/17/indent-whole-buffer/复制了这个)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 2011-11-04
        相关资源
        最近更新 更多