美文网首页Vim
Neovim下配置golang开发环境

Neovim下配置golang开发环境

作者: 城西丶 | 来源:发表于2017-12-22 00:01 被阅读172次

    golang 开发者在Vim 上贡献了许多成熟的插件。站在巨人的肩膀上,我们可以非常轻松的在Vim 下配置出属于自己的golang的开发环境。

    电脑环境: Mac 10.13 + neovim

    实现功能:

    • 代码高亮
    • 语法检查
    • 代码提示
    • 一个漂亮的主题
    • 快速的启动体验

    核心插件:
    vim-gogruvboxdeoplete.nvimALE ...

    使用Neovim

    neovim用起来与vim 完全兼容,但体验上要更好一些,从 Vim 上的迁移成本也很低。

    • 使用 brew install neovim 安装 neovim,安装成功后便可以使用nvim命令来使用了。
    • Vim中迁移,创建 ~/.config/nvim/init.vim 文件,并写入以下内容:
    set runtimepath^=~/.vim runtimepath+=~/.vim/after
    let &packpath = &runtimepath
    source ~/.vimrc
    

    至此,vim 的配置便迁移成功了。

    安装 vim-plug

    vim-plug 是一个vim插件管理工具,有了它,我们就可以便捷地管理vim 插件了。

    1.安装

    curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
        https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
    

    2.在 .vimrc,或~/.config/nvim/init.vim(neovim)中添加插件:

    filetype plugin indent on
    syntax on
    call plug#begin('~/.vim/plugged)
    Plug 'fatih/vim-go'
    call plug#end()
    

    3.普通模式下使用命令 :PlugInstall 安装插件👋。

    安装 vim-go

    按照上一步,将vim-go安装到vim中,通过:help vim-go.txt 或者到github.com/fatih/vim-go 了解详细的说明。

    可以使用<C-x><C-o>触发补全机制,且一般需要在 . 之后使用。

    代码补全插件

    deoplete.nvim

    安装 deoplete.nvim 可以实现代码实时提示功能。

    deopleteneovim/Vim8 的一个异步补全框架。比起 YouCompleteMe要轻量的多。
    并且在开启自动加载时,也没有对启动速度造成太大的影响。

    For Plug
    if has('nvim')
      Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
    else
      Plug 'Shougo/deoplete.nvim'
      Plug 'roxma/nvim-yarp'
      Plug 'roxma/vim-hug-neovim-rpc'
    endif
    

    deoplete.nvim 需要 python3 以及 neovim 的 python 模块。

    检查是否支持 python3 命令:echo has("python3") 输出 1表示支持。

    可以使用下面命令安装所需要的模块.

    brew install python3
    
    pip3 install neovim --user
    
    deoplete.nvim 设置

    deoplete.nvim 默认使用 <C-p><C-n> 上下选择,根据自己的使用习惯设置使用<TAB>选择:

    let g:deoplete#enable_at_startup = 1
    inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
    inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
    inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<cr>"
    

    deoplete-go

    下面使用deoplete-go

    1. 安装neovim/python-client
    pip2 install --upgrade neovim
    pip3 install --upgrade neovim
    
    1. 安装 nsf/gocode
    go get -u github.com/nsf/gocode
    
    1. 安装 deoplete-go 插件,在vim-plug中加入
    Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
    Plug 'zchee/deoplete-go', { 'do': 'make'}
    

    然后执行:PlugInstall安装。。

    1. 简单配置deoplete-go
    " deoplete-go settings
    let g:deoplete#sources#go#gocode_binary = $GOPATH.'/bin/gocode'
    let g:deoplete#sources#go#sort_class = ['package', 'func', 'type', 'var', 'const']
    

    UltiSnips & vim-snippets

    使用Sirver/ultisnipshonza/vin-snippets 拓展代码片断。

    由于deoplete.nvim已经使用了 <Tab> 进行候选跳转。为了避免冲突,将UltiSnips快捷键做一些更改:

    let g:UltiSnipsExpandTrigger="<leader><tab>"
    let g:UltiSnipsJumpForwardTrigger="<tab>"
    let g:UltiSnipsJumpBackwardTrigger="<S-tab>"
    

    这样便可以通过<tab>来选择,<leader><tab>来触发代码块。

    语法检测

    ALEneovim/Vim8 的一款异步语法检测的插件,并且支持多种语言。

    1. 使用vim-plug安装
    Plug 'w0rp/ale' 
    
    1. 自定义
    let g:ale_sign_error = ''
    let g:ale_sign_warning = ''
    let g:ale_completion_enabled = 1
    let g:ale_echo_msg_error_str = 'E'
    let g:ale_echo_msg_warning_str = 'W'
    let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
    let g:ale_swift_swiftlint_use_defaults = 1
    let g:ale_open_list = 0
    let g:ale_lint_delay = 1000
    let g:ale_linters = {
          \ 'go': ['golint', 'go vet', 'go build'],
          \ }
    nmap ]a <Plug>(ale_next_wrap)
    nmap [a <Plug>(ale_previous_wrap)
    

    gruvbox 主题

    gruvbox 是一款比较受欢迎的 Vim 主题,它支持自定义风格,并且实现多种文件类型的语法高亮,并且对许多插件支持。

    1. Plug 'morhetz/gruvbox'

    2. 设置colorscheme

    colorscheme gruvbox
    set background=dark
    

    下面就是我Vim 界面了。左右分别是 NERDTreeTagbar 以及底部的 lightline.vim
    并且在我的电脑上可以做到小于 400ms 的启动速度,感觉还是挺不错的。
    感兴趣的同学可以到我的vimrc中查看设置。

    golang_in_vim_01.png

    我的 .vimrc

    相关文章

      网友评论

      • Marlboro_06f1:详细看了下配置 补全这里么看懂,为什么用了deoplete还要用ycm呢?
      • Marlboro_06f1:neovim的配置文件是init吧。话说地址失效啦 打不开了UP
        Marlboro_06f1:@城西丶 加上科学就过去了。。这个注释好标准 ,大赞。gopher一枚
        城西丶:我最初使用的是vim,所以习惯在vimrc中写配置。关于neovim 中使用vim配置可以看https://neovim.io/doc/user/nvim.html#nvim-from-vim

        地址的话,放在gist.github.com 上的,可能你需要一些科学上网的方法。

      本文标题:Neovim下配置golang开发环境

      本文链接:https://www.haomeiwen.com/subject/zrgzwxtx.html