關於emacs就不說明了,直接切入主題。關於個人emacs配置,能夠直接參考GitHub上的lienhua34/myemacs-conf。html
關於go-mode的安裝,能夠直接參考GitHub。從github上下載go-mode.el或go-mode-autoloads.el文件到你本地的某個目錄下,而後在~/.emacs文件中輸入下面內容:node
(add-to-list 'load-path "/path/to/your/dir") (require 'go-mode-autoloads)
若是想要用好go-mode的特新,得先確保你本機環境安裝了godef工具。若是沒有,則運行下面命令(固然你首先也要確保你本機有go環境,而且設置了GOPATH環境變量):git
go get github.com/rogpeppe/godef
下面對go-mode提供的特性進行一下說明。github
go-mode提供了對函數簽名的處理方法,其支持匿名函數,不過也能夠很方便的跳過你命函數。go-mode提供了以下的函數簽名處理(括號裏是默認快捷鍵):golang
在上述方法或者快捷鍵以前加上C-u的前綴,則能夠跳過匿名函數。dom
go語言自身提供了gofmt工具用於格式go語言的代碼。emacs的go-mode藉助gofmt工具來實現對正在編寫的代碼進行格式化。其提供了兩種方式:函數
在~/.emacs配置文件中添加下面代碼設置保存前的hook,工具
(add-hook 'before-save-hook 'gofmt-before-save)
這樣,在保存go語言代碼文件時回自動調用gofmt對代碼內容進行格式化對齊。post
go-mode結合godoc工具提供了查看包或者某個標識符的docstring說明,ui
go-mode提供了三個對import進行管理的方法:
go-remove-unused-imports方法默認沒有綁定快捷鍵,在~/.emacs文件中下面代碼將該方法綁定到快捷鍵「C-c C-r」了。
(add-hook 'go-mode-hook (lambda() (local-set-key (kbd "C-c C-r") 'go-remove-unused-imports)))
go-mode提供了標準的一些代碼瀏覽操做快捷鍵,例如:
另外,go-mode結合godef工具提供了以下三個功能:
go-mode提供的這種跳轉也能夠跳轉到go語言的標準庫,以下所示,將光標移動到左邊緩衝區的md5Inst.Sum()的Sum標識符上,而後按快捷鍵C-x 4 C-c C-j便在右邊打開關於Sum()函數的定義,
若是不清楚flymake的,請查看GNU flymake(不多,也很簡單,幾分鐘看懂)。
goflymake則是Doug MacEachern爲go語言寫的flymake-mode,它是針對go語言代碼執行on-the-fly語法檢查的minor-mode。
參考github,先運行下面命令安裝goflymake:
go get -u github.com/dougm/goflymake
而後在~/.emacs配置文件中添加一下下面配置,
(add-to-list 'load-path "~/gocode/src/github.com/dougm/goflymake") (require 'go-flymake)
其執行檢查的三個時間點是,
goflymake提供的方法有:
默認狀況下,這些方法都沒有綁定快捷鍵,在~/.emacs配置文件添加了下面的快捷鍵綁定。
(add-hook 'flymake-mode-hook (lambda() (local-set-key (kbd "C-c C-e n") 'flymake-goto-next-error))) (add-hook 'flymake-mode-hook (lambda() (local-set-key (kbd "C-c C-e p") 'flymake-goto-prev-error))) (add-hook 'flymake-mode-hook (lambda() (local-set-key (kbd "C-c C-e m") 'flymake-popup-current-error-menu)))
效果圖以下(左圖是goflymake檢查出來的結果,紅色語句即是有問題的地方;右圖是光標移動到第一個錯誤點,按下快捷鍵C-c C-e m後顯示的錯誤menu):
推送門:
參考列表:
http://dominik.honnef.co/posts/2013/03/emacs-go-1/
https://github.com/dominikh/go-mode.el
https://github.com/dougm/goflymake
*******************
***歡迎轉載,不過請註明出處哦***
*******************