跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • doom-emacs 搭建 golang 开发环境
未分類
29 12 月 2020

doom-emacs 搭建 golang 开发环境

doom-emacs 搭建 golang 开发环境

資深大佬 : zjsxwc 3

安装 doom-emacs

我是 manjaro 系统,参考 https://github.com/hlissner/doom-emacs/#install

pacman -S git emacs ripgrep pacman -S fd git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d ~/.emacs.d/bin/doom install 

安装 gopls 这个 golang 语言服务器

pacman -S gopls 

配置 doom-emacs

修改 ~/.doom.d/init.el (参考 https://emacs-lsp.github.io/lsp-mode/page/installation/ )

;;; 添加中国源 (setq package-archives '(("gnu" . "http://mirrors.ustc.edu.cn/elpa/gnu/")                          ("melpa" . "http://mirrors.ustc.edu.cn/elpa/melpa/")                          ("melpa-stable" . "http://mirrors.ustc.edu.cn/elpa/melpa-stable/")                          ("org" . "http://mirrors.ustc.edu.cn/elpa/org/")))  (doom! :input ...        :tools        lsp  ;打开支持 gopls 的 lsp 协议的三方包依赖 ...        :lang        (go +lsp)  ;对于 go 语言使用 lsp 协议  

更新 doom-emacs 的三方包

~/.emacs.d/bin/doom sync 

对 go-mode 钩子 lsp-mode 并使用 gopls 作为 lsp-server,修改文件~/.doom.d/config.el 最后添加

(setq lsp-gopls-staticcheck t) (setq lsp-eldoc-render-all t) (setq lsp-gopls-complete-unimported t)  (use-package lsp-mode   :ensure t   :commands (lsp lsp-deferred)   :hook (go-mode . lsp-deferred))  ;; Set up before-save hooks to format buffer and add/delete imports. ;; Make sure you don't have other gofmt/goimports hooks enabled. (defun lsp-go-install-save-hooks ()   (add-hook 'before-save-hook #'lsp-format-buffer t t)   (add-hook 'before-save-hook #'lsp-organize-imports t t)) (add-hook 'go-mode-hook #'lsp-go-install-save-hooks)  ;; Optional - provides fancier overlays. (use-package lsp-ui   :ensure t   :commands lsp-ui-mode)  ;; Company mode is a standard completion package that works well with lsp-mode. (use-package company   :ensure t   :config   ;; Optionally enable completion-as-you-type behavior.   (setq company-idle-delay 0)   (setq company-minimum-prefix-length 1))  ;; Optional - provides snippet support. (use-package yasnippet   :ensure t   :commands yas-minor-mode   :hook (go-mode . yas-minor-mode)) 

使用方式

doom-emacs 使用 vim 快捷键编辑单个文件,使用 emacs 快捷键编辑整个项目,还能使用 emacs 庞大的 elisp 插件库。

默认 go-mode 会以go.mod 文件所在文件为一个项目(所以每个 go 项目必须先执行go mod init xxx,来创建一个项目,如果有.git 与 go.mod 同时存在会在第一次打开的时候询问以哪个项目为准,一般输入 i 就是一 go.mod 所在目录项目为准),但 gopls 会把 go-src 当作三方依赖,所以可以从我们当前代码跳到标准库代码定义中。

使用 <空格> + c 就可以唤出菜单进行对 golang symbol 语义上跳转,

比如 <空格> + c + d 会跳到 symbol 定义处, <空格> + c + D 会跳到使用 symbol 处(当然这个是我当前的版本快捷键,如果版本更新还是要看菜单显示出的快捷键)。

使用 <空格> + b 就可以唤出菜单进行进行 navigation,比如 <空格> + b + [ 就是回跳上一个页面,<空格> + b + ]就是回跳下一个页面。

使用 <空格> + s 就是全局搜索

使用 <空格> + p 就是项目管理

使用 <ctrl> + x + <ctrl> + c 就是退出 emacs

使用 <alt> + x 就是执行 emacs 三方插件提供的函数

大佬有話說 (0)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具