Maison >développement back-end >Golang >Explication détaillée de la configuration vim de l'environnement linguistique go

Explication détaillée de la configuration vim de l'environnement linguistique go

尚
avant
2019-12-31 17:17:564237parcourir

Explication détaillée de la configuration vim de l'environnement linguistique go

1. Préparation de l'environnement :

Description de l'environnement système :

[root@docker golang]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
[root@docker golang]# uname -a
Linux docker 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@docker golang]#

Préparez un fichier go pour observer le plug-in de configuration- dans Modifications en cours :

//hellogolang.go
package main
import "fmt"
func main() {
        fmt.Println("Hello Golang!")
}

2. Configuration du plug-in :

1.Vundle.vim :

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

Configurer vimrc : créer~ /.vimrc (si vous n'avez pas ce fichier), ajoutez la configuration concernant Vundle.vim en haut du fichier :

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'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

Pour l'instant, Vim n'a que le plug-in Vundle.vim installé. L'édition de hellogolang.go n'est pas différente de l'édition d'un fichier texte ordinaire. Tout est toujours les attributs par défaut de Vim

2 vim-go

Vim-go est actuellement l'outil le plus largement utilisé pour créer Golang. . Le plug-in vim pour l'environnement de développement. Ici, j'utilise également vim-go comme noyau et base pour créer l'environnement. vim-go est installé à l'aide du gestionnaire de plug-ins Vim open source gmarik/Vundle.vim est actuellement le gestionnaire de plug-ins Vim le plus recommandé, surpassant le pathogène.

Ici, nous utilisons vundle comme outil de gestion des plug-ins de Vim.

Modifiez ~/.vimrc, ajoutez une ligne entre vundle#begin et vundle#end :

Plugin 'fatih/vim-go'

Exécuter dans Vim : PluginInstall,

Vundle.vim A La sous-fenêtre Vundle Installer Preview s'ouvrira sur la gauche et une invite apparaîtra en bas de la fenêtre : "Traitement de 'fatih/vim-go'". Une fois l'installation terminée, le message d'invite deviendra "Terminé ! ".

À ce moment, nous pouvons voir qu'il y a un dossier vim-go supplémentaire sous .vim/bundle :

$ ls .vim/bundle/
vim-go/  Vundle.vim/

À ce moment, modifiez à nouveau hellogolang.go , la mise en évidence de la syntaxe est disponible et le formatage automatique lors de l'enregistrement (à l'aide de $GOBIN/gofmt) est disponible, mais d'autres fonctions avancées, telles que l'importation automatique des packages manquants et la complétion automatique, ne sont toujours pas disponibles. certaines choses.

3. Installer les binaires go.tools

Les instructions d'installation de vim-go mentionnent que tous les binaires nécessaires doivent d'abord être installés. , comme gocode, godef, goimports, etc.

Grâce à :GoInstallBinaries, ces outils binaires dépendants de vim-go seront automatiquement téléchargés et installés sous $GOBIN ou $GOPATH/bin. (Cet outil nécessite git ou hg et doit être installé au préalable sur votre OS.)

 : L'exécution de GoInstallBinaries est interactive, vous devez appuyer sur Entrée pour confirmer :

vim-go: gocode not found. Installing github.com/nsf/gocode to folder /home/tonybai/go/bin
vim-go: goimports not found. Installing code.google.com/p/go.tools/cmd/goimports to folder /home/tonybai/go/bin/
vim-go: godef not found. Installing code.google.com/p/rog-go/exp/cmd/godef to folder /home/tonybai/go/bin/
vim-go: oracle not found. Installing code.google.com/p/go.tools/cmd/oracle to folder /home/tonybai/go/bin/
vim-go: gorename not found. Installing code.google.com/p/go.tools/cmd/gorename to folder /home/tonybai/go/bin/
vim-go: golint not found. Installing github.com/golang/lint/golint to folder /home/tonybai/go/bin/
vim-go: errcheck not found. Installing github.com/kisielk/errcheck to folder /home/tonybai/go/bin/

Mais ces codes La plupart d'entre eux sont hébergés sur code.google.com, donc pour des raisons bien connues, l'installation automatique de vim-go est susceptible d'échouer. Cela nécessite que vous téléchargiez et installiez localement en fonction de l'adresse du code source de chaque outil. mentionné dans le journal ci-dessus. Si vous ne parvenez pas à créer une échelle, vous pouvez télécharger le package correspondant via http://gopm.io.

Après l'installation, les nouveaux binaires sous $GOBIN sont les suivants :

-rwxr-xr-x  1 tonybai tonybai  5735552 11??  7 11:03 errcheck*
-rwxr-xr-x  1 tonybai tonybai  9951008 11??  7 10:33 gocode*
-rwxr-xr-x  1 tonybai tonybai  5742800 11??  7 11:07 godef*
-rwxr-xr-x  1 tonybai tonybai  4994120 11??  7 11:00 goimports*
-rwxr-xr-x  1 tonybai tonybai  5750152 11??  7 11:03 golint*
-rwxr-xr-x  1 tonybai tonybai  6381832 11??  7 11:01 gorename*
-rwxr-xr-x  1 tonybai tonybai  2954392 11??  7 10:38 gotags*
-rwxr-xr-x  1 tonybai tonybai  9222856 11??  7 11:01 oracle*

Après avoir installé ces binaires, examinons quelles fonctionnalités sont prises en charge.

Modifiez à nouveau hellogolang.go :

- Commencez une nouvelle ligne et entrez fmt., puis ctrl+x, ctrl+o, Vim fera apparaître la liste déroulante d'invite de fin, mais ce n'est pas celui qui suit en temps réel. Type de complétion, cette complétion est assurée par gocode.

– Entrez une ligne de code : time.Sleep(time.Second), exécutez : GoImports, Vim importera automatiquement le package time.

– Déplacez le curseur sur la fonction Sleep, exécutez : GoDef ou tapez gd en mode commande, Vim ouvrira la définition de la fonction Sleep dans $GOROOT/src/time/sleep.go. Exécution : b 1 retourne à hellogolang.go.

– Exécuter : GoLint, exécutez golint sur le fichier source Go actuel.

– Exécuter : GoDoc pour ouvrir le document Go correspondant au symbole sous le curseur actuel.

– Exécuter : GoVet, exécutez go vet dans le répertoire courant sur le fichier source Go actuel.

– Exécuter : GoRun, compiler et exécuter le package principal actuel.

– Exécuter : GoBuild, compilez le package actuel, qui dépend de vos fichiers sources, GoBuild ne produit pas le fichier résultat.

– Exécuter : GoInstall pour installer le package actuel.

– Exécuter : GoTest pour tester le fichier _test.go sous votre chemin actuel.

– Exécuter : GoCoverage, créez un fichier de résultats de couverture de test et ouvrez le navigateur pour afficher la situation actuelle du package.

– Exécuter : GoErrCheck pour vérifier les éventuelles erreurs non détectées dans le package actuel.

– Exécuter : GoFiles pour afficher la liste des fichiers sources correspondant au package actuel.

– Exécuter : GoDeps, afficher la liste des packages de dépendances du package actuel.

– Exécuter : GoImplements, afficher la liste des interfaces implémentées par le type actuel.

– Exécuter : GoRename [to], remplacez le symbole sous le curseur actuel par [to].

3. Autres plug-ins

Jusqu'à présent, nous avons encore un certain nombre de fonctionnalités qui n'ont pas été implémentées, les points clés sont :

– Supplément de code pour le suivi en temps réel de Qi
– Prise en charge des extraits de code

1 Installez YCM (Your Complete Me)

Ajoutez une ligne dans ~/.vimrc :
.

Plugin 'Valloric /YouCompleteMe'

Après avoir enregistré et quitté, ouvrez ~/.vimrc et exécutez : PluginInstall

Après l'installation, l'invite suivante invites de la barre :

ycm_client_support.[so|pyd|dll] et ycm_core.[so|pyd|dll] non détectés ; vous devez compiler YCM avant de l'utiliser !

YCM est Le module écrit en C++ est utilisé pour optimiser les performances, la bibliothèque de support YCM doit donc être compilée manuellement. Les étapes sont les suivantes :

sudo yum install build-essential cmake python-dev
cd ~/.vim/bundle/YouCompleteMe
./install.sh

Build (la compilation de C++ est très lente, vous devez attendre patiemment un moment. Après OK, ouvrez hellogolang.go et la fonction d'achèvement en temps réel s'affichera). soyez disponible ! Cool!

2. Installez UltiSnips

Vim-go默认是用ultisnips引擎插件,但这个插件需要单独安装。同样,我们利用vundle来安装它,在~/.vimrc中添加一行:

Plugin 'SirVer/ultisnips'

保存,退出vim

打开vim,执行:PluginInstall

编辑hellogolang.go,按照go.snip中的说明,我们输入func后敲击tab键,我们发现期待的:

func name(params) type {
 }

并没有出现。反倒是YCM的下拉提示显示在那里让你选择。似乎是ultisnips和YCM的键组合冲突了。ultisnips官方说明也的确如 此。ultisnips默认是用Tab展开snippet的,而YCM中的Tab用来选择补齐项,我们可以通过设置来避免这些。

我们在.vimrc中添加如下setting:

" YCM settings
let g:ycm_key_list_select_completion = ['', '']
let g:ycm_key_list_previous_completion = ['']
let g:ycm_key_invoke_completion = &#39;<C-Space>&#39;

" UltiSnips setting
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"

这样让YCM通过回车和向下的箭头来做list item正向选择,通过向上箭头做反向选择。通过ctrl+space来原地触发补齐提示。

而ultisnips则是用tab做snippet展开,ctrl+b正向切换占位符,ctrl+z反向切换占位符。

四、.vimrc

前面讲到了vim-go有许多命令,在:xx模式下执行多显不便,于是你可以定义一些Mappings,比如:

 " set mapleader
  let mapleader = ","

  " vim-go custom mappings
  au FileType go nmap <Leader>s <Plug>(go-implements)
  au FileType go nmap <Leader>i <Plug>(go-info)
  au FileType go nmap <Leader>gd <Plug>(go-doc)
  au FileType go nmap <Leader>gv <Plug>(go-doc-vertical)
  au FileType go nmap <leader>r <Plug>(go-run)
  au FileType go nmap <leader>b <Plug>(go-build)
  au FileType go nmap <leader>t <Plug>(go-test)
  au FileType go nmap <leader>c <Plug>(go-coverage)
  au FileType go nmap <Leader>ds <Plug>(go-def-split)
  au FileType go nmap <Leader>dv <Plug>(go-def-vertical)
  au FileType go nmap <Leader>dt <Plug>(go-def-tab)
  au FileType go nmap <Leader>e <Plug>(go-rename)  

这样我们在命令模式下,输入6580843315dd7804e35fd3743df832ea+398b25610591cbbc67e306d776209d28就是运行 当前main包,以此类推。

另外下面这个配置使得我们在save file时既可以格式化代码,又可以自动插入包导入语句(或删除不用的包导入语句)。

 " vim-go settings
let g:go_fmt_command = "goimports"

到这里,我们的Vim Golang开发环境就基本搭建好了。snippet+实时补齐让你Coding如飞!

五、.vimrc文件

下面是截至目前为止全量.vimrc文件的内容:

set nocompatible              " be iMproved, required
filetype off                  " required
colorscheme molokai

" 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 &#39;fatih/vim-go&#39;
Plugin 'Valloric/YouCompleteMe'

Plugin &#39;SirVer/ultisnips&#39;

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

" set mapleader
let mapleader = ","

" vim-go custom mappings
au FileType go nmap s (go-implements)
au FileType go nmap i (go-info)
au FileType go nmap gd (go-doc)
au FileType go nmap gv (go-doc-vertical)
au FileType go nmap r (go-run)
au FileType go nmap b (go-build)
au FileType go nmap t (go-test)
au FileType go nmap c (go-coverage)
au FileType go nmap ds (go-def-split)
au FileType go nmap dv (go-def-vertical)
au FileType go nmap dt (go-def-tab)
au FileType go nmap e (go-rename)

" vim-go settings
let g:go_fmt_command = "goimports"

" YCM settings
let g:ycm_key_list_select_completion = ['', '']
let g:ycm_key_list_previous_completion = ['', '']
let g:ycm_key_invoke_completion = ''

" UltiSnips settings
let g:UltiSnipsExpandTrigger=""
let g:UltiSnipsJumpForwardTrigger=""
let g:UltiSnipsJumpBackwardTrigger=""

更多golang知识请关注golang教程栏目。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer