0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux中如何用vim做golang开发环境

马哥Linux运维 来源:CSDN博客 作者:少年已不再年少年 2021-10-08 17:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

vim 做 golang 开发环境,多么炫酷!还没尝试过用 vim 做开发环境的同学可以跟着这篇文档把环境搭建起来了!

准备条件,是已经安装好 golang 环境,还需要把 golang 的环境变量配置好,这里配置如下

[root@localhost bundle]# vim /etc/profile

在这个文件最后加上,GOPATH、GOBIN、GOROOT、PATH 的环境变量

export GOPATH=“/root/go”export GOBIN=“$GOPATH/bin”export GOROOT=“/usr/local/go”export PATH=“$PATH:/usr/local/go/bin”export PATH=“$PATH:/root/go/bin”

[root@localhost bundle]# source /etc/profile

安装 git

[root@localhost ~]# yum install -y git

安装 Vundle.vim

mkdir ~/.vim/bundle

git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

安装 vim-go

git clone https://github.com/fatih/vim-go.git ~/.vim/bundle/vim-go

修改~/.vimrc,如果没有就创建。vimrc 文件

[root@localhost bundle]# vim ~/.vimrcset nocompatible “ be iMproved, required

filetype off ” required

“ set the runtime path to include Vundle and initialize

set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

” let Vundle manage Vundle, required

Plugin ‘gmarik/Vundle.vim’

Plugin ‘fatih/vim-go’“ All of your Plugins must be added before the following line

call vundle#end() ” required

filetype plugin indent on “ required

let g:go_version_warning = 0

如果觉得高亮的地方太少,可在~/.vimrc 下多添加如下配置

let g:go_highlight_functions = 1

let g:go_highlight_methods = 1

let g:go_highlight_structs = 1

let g:go_highlight_operators = 1

let g:go_highlight_build_constraints = 1

创建一个测试文件 test.go,将发现可以高亮了

[root@localhost bundle]# vim 。/test.go

下载 nerdtree 和 nerdtree-git-plugin

[root@localhost bundle]# git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle/nerdtree

[root@localhost bundle]# git clone https://github.com/Xuyuanp/nerdtree-git-plugin.git ~/.vim/bundle/nerdtree-git-plugin

修改~/.vimrc

set nocompatible ” be iMproved, required

filetype off “ required

” set the runtime path to include Vundle and initialize

set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

“ let Vundle manage Vundle, required

Plugin ‘gmarik/Vundle.vim’

Plugin ‘fatih/vim-go’

Plugin ‘git://github.com/scrooloose/nerdtree.git’

Plugin ‘git://github.com/Xuyuanp/nerdtree-git-plugin.git’” All of your Plugins must be added before the following line

call vundle#end() “ required

filetype plugin indent on ” required

let g:go_version_warning = 0

“ NERDTree config

map 《F7》 :NERDTreeToggle《CR》 ”快捷键 F7,可以收放目录树的视图

autocmd bufenter * if (winnr(“$”) == 1 && exists(“b:NERDTreeType”) &&b:NERDTreeType == “primary”) | q | endif

autocmd vimenter * NERDTree

nerdtree 的使用,这里不讲解,大家可使用?命令来自己了解,如下

[root@localhost bundle]# vim ~/.vimrc

注意:使用 nerdtree 的命令,需要光标在目录树的窗口下才可以,如上图,此时直接敲?即可

安装 neocomplete

这个智能的提示功能需要很多限制条件,想要安装成功请先阅读这个网址:

https://blog.csdn.net/pei2215015/article/details/79813522

根据官网 https://github.com/shougo/neosnippet.vim 的提示安装,修改~/.vimrc

[root@localhost bundle]# vim ~/.vimrc

在如上位置添加 3 个插件 Plugin

在~/.vimrc 文件的最后添加

let g:neocomplete#enable_at_startup = 1

:wq 保存退出

打开 vim,执行:PluginInstall

[root@localhost .vim]# vim

:PluginInstall

出现 Done 即安装成功

安装 ctags、gotags 和 tarbar

[root@localhost bundle]# yum install -y ctags

如上面第 9 个步骤一样,在~/.vimrc 中添加插件

Plugin ‘jstemmer/gotags’

Plugin ‘majutsushi/tagbar’

保存之后,打开 vim,执行:PluginInstall,如下

[root@localhost .vim]# vim

:PluginInstall

出现 Done 即安装成功

在~/.vimrc文件最后加入以下内容:

let g:tagbar_type_go = {

‘ctagstype’ : ‘go’,

‘kinds’ : [

‘p:package’,

‘i1’,

‘c:constants’,

‘v:variables’,

‘t:types’,

‘n:interfaces’,

‘w:fields’,

‘e:embedded’,

‘m:methods’,

‘r:constructor’,

‘f:functions’

],

‘sro’ : ‘。’,

‘kind2scope’ : {

‘t’ : ‘ctype’,

‘n’ : ‘ntype’

},

‘scope2kind’ : {

‘ctype’ : ‘t’,

‘ntype’ : ‘n’

},

‘ctagsbin’ : ‘gotags’,

‘ctagsargs’ : ‘-sort -silent’

}

安装 mark.vim

地址:https://www.vim.org/scripts/script.php?script_id=2666,我这里演示中下载的是

直接使用 vim 打开

[root@localhost bundle]# vim 。/mark-3.0.0.vmb.gz

在 vim 的命令模式下输入

:so %

即安装成功

在~/.vimrc 中添加

nmap ml 《Plug》MarkSet #高亮或反高亮一个单词

nmap md 《Plug》MarkClear

nmap mn 《Plug》MarkSearchAnyNext #跳转到任一下一个高亮单词

nmap mp 《Plug》MarkSearchAnyPrev

nmap mf 《Plug》MarkSearchCurrentNext #跳转到当前高亮的下一个单词

nmap mb 《Plug》MarkSearchCurrentPrev

安装 goimports

[root@localhost src]# cd /root/go/src

[root@localhost src]# mkdir golang.org

[root@localhost golang.org]# mkdir x

[root@localhost golang.org]# cd 。/x

[root@localhost x]# git clone https://github.com/golang/tools.git

[root@localhost x]# cd 。/tools/cmd/goimports/

[root@localhost goimports]# go install

使用方法:在 vim 的命令模式下输入:GoImports

注意:在 tools/cmd 下还有很多命令工具,可以使用同样的方法安装

安装 golint,对 go 代码进行 lint 检查

[root@localhost golang.org]# cd /root/go/src/golang.org/x/

[root@localhost x]# git clone https://github.com/golang/lint

[root@localhost x]# cd 。/lint/

[root@localhost golint]# go install

使用方法:在 vim 的命令模式下输入:GoLint

让 vim 支持 gocode

[root@localhost vim]# cd /root/go/src/github.com/gocode/vim

[root@localhost vim]# 。/update.sh

如果还需要安装其他的第三方库,请按照下面地址去学习

https://www.golangtc.com/download/package

这里就不一一演示了,所有操作和上面的都是一样的了

最后的~/.vimrc 的文件是这样子的

set nocompatible “ be iMproved, required

filetype off ” required

“ set the runtime path to include Vundle and initialize

set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

” let Vundle manage Vundle, required

Plugin ‘gmarik/Vundle.vim’

Plugin ‘fatih/vim-go’

Plugin ‘git://github.com/scrooloose/nerdtree.git’

Plugin ‘git://github.com/Xuyuanp/nerdtree-git-plugin.git’

Plugin ‘Shougo/neocomplete’

Plugin ‘Shougo/neosnippet’

Plugin ‘Shougo/neosnippet-snippets’

Plugin ‘jstemmer/gotags’

Plugin ‘majutsushi/tagbar’

“ All of your Plugins must be added before the following line

call vundle#end() ” required

filetype plugin indent on “ required

let g:go_version_warning = 0

let g:go_highlight_functions = 1

let g:go_highlight_methods = 1

let g:neocomplete#enable_at_startup = 1

” NERDTree config

map 《F7》 :NERDTreeToggle《CR》

autocmd bufenter * if (winnr(“$”) == 1 && exists(“b:NERDTreeType”) && b:NERDTreeType == “primary”) | q | endif

autocmd vimenter * NERDTree

“ mark config

nmap ml 《Plug》MarkSet

nmap md 《Plug》MarkClear

nmap mn 《Plug》MarkSearchAnyNex

nmap mp 《Plug》MarkSearchAnyPrev

nmap mf 《Plug》MarkSearchCurrentNext

nmap mb 《Plug》MarkSearchCurrentPrev

nmap 《F8》 :TagbarToggle《CR》

let g:tagbar_type_go = {

‘ctagstype’ : ‘go’,

‘kinds’ : [

‘p:package’,

‘i1’,

‘c:constants’,

‘v:variables’,

‘t:types’,

‘n:interfaces’,

‘w:fields’,

‘e:embedded’,

‘m:methods’,

‘r:constructor’,

‘f:functions’

],

‘sro’ : ‘。’,

‘kind2scope’ : {

‘t’ : ‘ctype’,

‘n’ : ‘ntype’

},

‘scope2kind’ : {

‘ctype’ : ‘t’,

‘ntype’ : ‘n’

},

‘ctagsbin’ : ‘gotags’,

‘ctagsargs’ : ‘-sort -silent’

}

有时间再补充下各个插件是怎么使用的吧。

安装 ack,这里是新补充的

[root@localhost kingshard]# yum install -y ack

[root@localhost bundle]# git clone https://github.com/mileszs/ack.vim.git ~/.vim/bundle/ack

在~/.vimrc中添加插件位置添加 Ack 和在文件最后添加快捷键 F4

Plugin ‘mileszs/ack’

map 《F4》 :Ack

光标停留在某函数或变量名上,按 F4 回车,即可全局搜索调用处

总结:可能会经常使用的快捷键

打开目录窗口:F7

打开符号窗口:F8

各窗口间的相互跳转:ctr+w+w

跳转到函数定义处:gd

向前:tab 键

向后:ctr+o

高亮光标所在的单词:ml

取消光标所在单词的高亮:md

下一个高亮的单词:mf

上一个高亮的单词:mp

转自:blog.csdn.net/pei2215015/article/details/79802351

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11627

    浏览量

    217893
  • VIM
    VIM
    +关注

    关注

    0

    文章

    137

    浏览量

    16111

原文标题:Linux 下 golang 的 vim 环境配置

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【免费送书】成为硬核Linux开发者:《Linux 设备驱动开发(第 2 版)》

    Linux系统的设备驱动开发,一直给人门槛较高的印象,主要因内核机制抽象、需深度理解硬件原理、开发调试难度大所致。2021年,一本讲解驱动开发的专著问世即获市场青睐,畅销近万册——这便
    的头像 发表于 11-18 08:06 410次阅读
    【免费送书】成为硬核<b class='flag-5'>Linux</b><b class='flag-5'>开发</b>者:《<b class='flag-5'>Linux</b> 设备驱动<b class='flag-5'>开发</b>(第 2 版)》

    移植蜂鸟需要在Linux环境下吗?

    《手把手教你设计CPU》书上运行Verilog仿真测试那章说为了重现仿真环境,最好在Linux环境下。不知道移植蜂鸟是否需要在Linux环境
    发表于 11-10 07:42

    飞凌嵌入式ElfBoard-Vim编辑器之Vim常用操作命令

    /hello$ vim hello.c +4使用vim打开文件后,默认为一般模式。2.文件对比Vim的vimdiff对比工具可以很容易实现文件对比的功能,用法举例如下:我们修改一个h
    发表于 10-14 09:15

    飞凌嵌入式ElfBoard-常用编辑器之Vim编辑器

    环境开发,有windows界面软件使用习惯的程序员不怎么友好,所以,也可以使用gedit文本编辑器,gedit类似windows的写字板程序,有友好的图形界面。对于不经常在Linux
    发表于 10-13 08:47

    Vim编辑器高效操作流程

    在现代运维工作,服务器配置管理、日志分析、脚本编写等任务几乎占据了工程师日常工作的大部分时间。作为Linux系统标配的文本编辑器,Vim以其强大的功能和极高的效率赢得了无数运维工程师的青睐。然而,
    的头像 发表于 09-02 16:45 650次阅读

    【HZ-T536开发板免费体验】5、安装sqlite3和使用golang读写数据库

    ://golang.google.cn/dl/go1.25.0.linux-arm64.tar.gz 下载完毕后,我们需要把编译环境解压缩到指定目录里。我习惯在用户目录里创建一个.bin目录,然后
    发表于 08-26 00:04

    Linux 应用开发手册

    T507linux应用开发手册
    发表于 08-22 17:01 10次下载

    开发环境一键部署 | 如何搭建Docker环境编译ARM程序?

    智能化科技领域,嵌入式系统开发占据着极为重要的地位。瑞迅科技RK3568、RK3588主板及核心板以其卓越的性能,为众多应用场景赋能。基于Linux系统搭建其开发环境,为用户开启高效
    的头像 发表于 08-15 11:06 689次阅读
    <b class='flag-5'>开发</b><b class='flag-5'>环境</b>一键部署 | 如何搭建Docker<b class='flag-5'>环境</b>编译ARM程序?

    【Milk-V Duo S 开发板免费体验】Duo S(SG2000)开发环境搭建

    开发环境Linux主机:Ubuntu 20.04 开发板:DuoS (SG2000) Windows 下有很多虚拟机软件,目前市面上流行的有 VMware 和 VirtualBox
    发表于 08-10 16:58

    【HZ-RK3568开发板免费体验】合众HZ-RK3568开发环境搭建

    开发环境: 主机:Ubuntu 20.04 开发板:合众HZ-RK3568开发板 Windows 下有很多虚拟机软件,目前市面上流行的有 VMware 和 VirtualBox。 VM
    发表于 07-15 23:13

    【米尔RK3576开发板免费体验】1、开发环境、镜像烧录、QT开发环境搭建以及应用部署

    /output/rockchip_rk3576/host/environment-setup 其中的SDK安装路径根据自身放置Linux SDK的位置进行修改。 在命令行,执行以下指令配置工具链开发
    发表于 07-14 11:26

    Linux系统环境监测终极指南

    Linux系统环境主要监测CPU、内存、磁盘I/O和网络流量。
    的头像 发表于 06-25 14:41 528次阅读
    <b class='flag-5'>Linux</b>系统<b class='flag-5'>环境</b>监测终极指南

    Vim编辑器的基本操作

    在代码的世界里,效率是永恒的追求。无论是新手开发者还是资深工程师,都渴望拥有一款能让自己如虎添翼的编辑器。而在Linux生态,有一款被无数程序员奉为神器、被誉为“效率之王”的编辑器——Vim
    的头像 发表于 05-06 13:41 966次阅读
    <b class='flag-5'>Vim</b>编辑器的基本操作

    LinuxVim编辑器的使用技巧

    Vim】常用总结⟳ 简介⟳ image 什么是vim?⟳ Linux下两大编辑神器之一 vimLinux/Unix下使用最多的编辑器
    的头像 发表于 04-01 17:36 1024次阅读
    <b class='flag-5'>Linux</b>下<b class='flag-5'>Vim</b>编辑器的使用技巧

    迅为RK3568开发板驱动指南Linux通用SPI设备驱动

    迅为RK3568开发板驱动指南Linux通用SPI设备驱动
    的头像 发表于 01-23 11:02 3418次阅读
    迅为RK3568<b class='flag-5'>开发</b>板驱动指南<b class='flag-5'>Linux</b><b class='flag-5'>中</b>通用SPI设备驱动