莊周夢蝶

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

          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 一下新加的代碼就可以了
          主站蜘蛛池模板: 元朗区| 吉隆县| 阳原县| 佛山市| 临夏县| 肥东县| 芦溪县| 大兴区| 萝北县| 江油市| 天峻县| 桐乡市| 广丰县| 烟台市| 尉氏县| 许昌县| 福鼎市| 东丰县| 涿州市| 杂多县| 彰化市| 峨边| 丹巴县| 吉林市| 黔西县| 靖宇县| 定日县| 东兰县| 宽甸| 慈利县| 隆尧县| 上栗县| 合作市| 柳河县| 青岛市| 沈丘县| 通江县| 湛江市| 上思县| 咸丰县| 都江堰市|