莊周夢蝶

          生活、程序、未來
             :: 首頁 ::  ::  :: 聚合  :: 管理

          Emacs之一鍵格式化

          Posted on 2011-07-26 11:24 dennis 閱讀(9504) 評論(4)  編輯  收藏 所屬分類: 工具和命令

              格式化源碼是很常見的需求,emacs有個indent-region函數用于格式化選定的代碼,前提是你處在某個非text mode下,如c-mode或者java-mode之類。如果要格式化整個文件,你需要先選定整個文件(C-x-h),然后調用indent-region(或者 C-M-\ )。兩個命令總是麻煩,我們可以定義個函數搞定這一切,并綁定在一個特定鍵上,實現一鍵格式化:

          ;;格式化整個文件函數
          (defun indent
          -whole ()
            (interactive)
            (indent
          -region (point-min) (point-max))
            (message 
          "format successfully"))
          ;;綁定到F7鍵
          (global
          -set-key [f7] 'indent-whole)

              將這段代碼添加到你的emacs配置文件(~/.emacs),重啟emacs,以后格式化源碼都可以用F7一鍵搞定。

          評論

          # re: Emacs之一鍵格式化[未登錄]  回復  更多評論   

          2011-07-26 14:52 by jh
          這是我用的函數:

          (defun indent-buffer ()
          "Indent the whole buffer."
          (interactive)
          (save-excursion
          (indent-region (point-min) (point-max) nil)))

          可以避免光標位置移動。

          # re: Emacs之一鍵格式化[未登錄]  回復  更多評論   

          2011-07-26 14:59 by dennis
          @jh
          感謝,這個版本更好,我update下。

          # re: Emacs之一鍵格式化  回復  更多評論   

          2011-07-26 15:01 by dennis
          @jh
          貌似不調用save-excursion,光標也沒有發生移動。

          # re: Emacs之一鍵格式化  回復  更多評論   

          2011-07-27 13:49 by Regis
          不需要重啟emacs, c-x c-e 一下新加的代碼就可以了
          主站蜘蛛池模板: 康定县| 丰都县| 上饶市| 历史| 中西区| 斗六市| 莆田市| 行唐县| 屏南县| 宜良县| 北川| 阜城县| 东乌珠穆沁旗| 福贡县| 和政县| 遵义市| 江北区| 鄂州市| 孟津县| 富裕县| 和田市| 威宁| 平塘县| 仁寿县| 信阳市| 柘城县| 阳原县| 新蔡县| 灵石县| 云安县| 四会市| 库伦旗| 邵阳县| 广河县| 房山区| 开化县| 县级市| 习水县| 南华县| 扶风县| 靖远县|