Usando Vim para o desenvolvimento de Go

como programador, você gasta muito tempo usando editores de texto, IDEs, etc para o código. Então é importante o que e como você usá-lo. Mudei-me recentemente para a Vim para o Go development e estou a adorar. Inicialmente, eu estava usando VSCode com extensão Go e depois disso, eu usei GoLand por um tempo. O Visual Studio Code e o GoLand são fantásticos, também adorei usá-los. Definitivamente leva algum tempo para aprender usando vim, mas vale a pena o aprendizado. Depende totalmente de ti o que funciona melhor para ti. Não utilize vim apenas porque outros o estão a utilizar. Eu sou muito um novato para vim e coisas que eu vou explicar nisto é o que eu aprendi depois que comecei a usá-lo. Eu ficaria muito feliz se você é um longo tempo Vim Usuário e ter alguns bons conselhos/sugestões. Você pode colocá-los na seção de comentários deste post. Se você é um novato, eu vou colocar alguns bons recursos para aprender vim no fundo deste post.

Nota: Este post foi originalmente publicado em https://jogendra.dev.Porque é que as pessoas usam a Vim?

  • Vim é garantida a existência em todos os sistemas Unix (basicamente, está disponível em todas as principais plataformas). Está em todo o lado, e é o mesmo em todas as plataformas. O Vim suporta todos os formatos de arquivos e linguagens de programação, não há necessidade de baixar diferentes IDEs para diferentes linguagens de programação.
  • Navegação livre do rato. Os seus dedos raramente têm de sair da fila da casa, o que significa que será capaz de editar o texto muito, muito rapidamente. Você pode fazer mapeamento de chaves de acordo com a sua conveniência. Não ter que mudar entre teclado e mouse é definitivamente bom com Vim.
  • Vim é muito leve e rápida. A Vim consegue lidar facilmente com ficheiros grandes, mas o Visual Studio ou outro IDE não os conseguia lidar sem problemas. Tente abrir um arquivo grande (~20MB) com o seu editor de texto não-vim favorito e vim, você definitivamente vai ficar a saber a diferença. Há grande poder na forma como o Vim lida com arquivos (buffers), splits (windows), e layouts (tabs), o poder que você não pode obter em outros editores.
  • Vim e vim como editores de texto (emacs, nano, etc) sentir e parecer tão nativo, sem distração. Não tenho de mudar entre o terminal e o editor/IDE. É simplesmente tudo num só lugar. É muito fácil ser produtivo na vim com pouco esforço.
  • Vim é muito útil quando você tem que fazer configurações rápidas ou outras mudanças na máquina/servidor remoto. Mesmo na sua própria máquina, você não vai abrir um editor de texto pesado para pequenas mudanças.
  • Vim é altamente configurável. Você pode simplesmente usar ~/.vimrc para substituir configurações padrão e personalizar o seu. Plugins Vim fornecer tudo para vim que você precisa em um editor de texto. Completar automaticamente, realce de sintaxe, ou qualquer outra funcionalidade que você o nomeie e esteja disponível, você só precisa do plug-in direito.O uso da vim é divertido. É um pouco desafiador de usar inicialmente, mas torna-se divertido uma vez que você se acostumar com isso.Vamos!

    neste post, vamos explorar a criação da Vim como uma IDE de pleno direito para o desenvolvimento de Go. Plugins que vamos usar São:

    • ‘plugin’ de desenvolvimento do vim-go: Go para o Vim. Tem tudo o que você precisa para ir desenvolvimento.
    • NERDTree-File system explorer for the Vim. Ele permite que você navegue visualmente as hierarquias complexas de diretórios, abra rapidamente arquivos para leitura ou edição, e execute operações básicas do sistema de arquivos.

    🔌 Vim-Go

    Vim-Go é o mais popular e mais usado plugin vim para o desenvolvimento Go. Ele oferece quase todos os recursos que você pode precisar. Alguns deles são:

    • Compile o seu pacote com :GoBuild, instale – o com :GoInstall ou teste-o com :GoTest.
    • execute rapidamente o(s) Seu (s) Arquivo (s) atual (S) com :GoRun.
    • realce de sintaxe e dobragem.
    • suporte à completação automática via gopls.
    • Run gofmt and goimports on save. Significa que você não tem que se preocupar com a importação de pacotes e formatação de código, o vim-go fará isso para você ao salvar o arquivo.
    • Go to symbol / declaration with :GoDef and look up documentation with :GoDoc or :GoDocBrowser.
    • Check code coverage, do code linting etc.

    pode verificar todas as características oferecidas pela vim-go aqui.

    instalar o vim-go

    Vim 8 adicionou suporte nativo para os pacotes, o que significa que você pode carregar plugins apenas clonando o seu conteúdo no seu directório ~/.vim. Para instalar o vim-go, você pode simplesmente executar o comando:

    git clone https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go
    entrar no modo de ecrã completo sair do modo de ecrã completo

    Você também precisará instalar todos os binários necessários. vim-go facilita a instalação de todos eles, fornecendo um comando, :GoInstallBinaries, que irá go get todos os binários necessários.

    ou pode colocar o plugin no seu ~/.vimrc.

    call plug#begin()Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }call plug#end()
    Introduza o modo de tela cheia Sair do modo de tela cheia

    Agora salve o .vimrc e instalar o plugin executando vim +PlugInstall. Ele irá instalar o plugin vim-go com todos os binários necessários.

    aditei, na sequência de directivas relacionadas com a vim, à minha .vimrc, para a tornar mais útil:

    você pode visitar tutoriais oficiais para suas próprias personalizações. Documentação completa vim-go está disponível no seu editor vim, você pode simplesmente executar :help vim-go para verificá-los. É assim que o meu vim procura um programa Go depois de instalar e configurar o vim-go:

    linda?

    Auto-completação

    é realmente difícil codificar sem auto-completação e não ser capaz de ir para a definição. Vim-go pode usar gopls para completar, etc. A completação é activada por omissão através do omnifunc. Enquanto estiver no modo INSERT, pode activar a completação com Ctrl-x Ctrl-p. Se forem encontrados nomes correspondentes, abre-se um menu de contexto que pode ser navegado com as teclas Ctrl-n e Ctrl-p.
    para verificar se o vim-go’s ftplugin/go.vim foi configurado correctamente para completar automaticamente, poderá executar:

    :verbose setlocal omnifunc?
    entrar no modo de ecrã completo sair do modo de ecrã completo

    a mensagem abaixo deve aparecer:

    Se você deseja que o autocompletar prompt aparecer automaticamente sempre que você pressionar o ponto (.), você pode adicionar a seguinte linha ao seu .vimrc:

    au filetype go inoremap <buffer> . .<C-x><C-o>
    Introduza o modo de tela cheia Sair do modo de tela cheia

    Agora, a digitação deve oferecer auto sugestões, junto com a documentação de pré-visualizações. Devia ser parecido com isto.:

    além de vim-go completion, há alguns plugins bons que você pode usar para auto-completação e outras características LSP. Alguns deles são:

    • coc.nvim (Conquer of Completion): Intellisense engine for Vim8 & Neovim, full language server protocol support as VSCode.
    • LanguageClient-neovim: Minimal Language Server Protocol client written in Rust.
    • YouCompleteMe: Code-completion engine. Tem vários motores de acabamento.

    Language Server Protocol (LSP) and gopls

    o Language Server Protocol is used between a tool (the client) and a language smartness provider (the server) to integrate features like auto-complete, go to definition, find all references and alike into the tool. O objetivo do protocolo é permitir que o Suporte de linguagem de programação seja implementado e distribuído independentemente de qualquer editor ou IDE dado. O protocolo Language Server foi originalmente desenvolvido para o código Visual Studio da Microsoft e agora é um padrão aberto. A Microsoft colaborou com a Red Hat e a Codenvy para padronizar a especificação do protocolo.

    antes da LSP, havia diferentes IDEs para diferentes idiomas (ainda existem muitos). Todos os IDEs tinham integração específica da linguagem (realce de sintaxe, auto-completação, ir para a definição, etc Características). A situação é muitas vezes referida como um problema M × N, onde o número de integrações é o produto de M editores e n linguagens. O que o protocolo do servidor de linguagem faz é mudar este problema M × N em um problema M + N. A melhor coisa sobre LSP é que é totalmente independente do IDEs. Como resultado, podemos ver que o Visual Studio trabalha para tantas línguas diferentes através de extensões. Estas extensões fazem uso do LSP.

    pode ler mais sobre a LSP aqui e ela ou ver este vídeo no YouTube para ver como funciona.

    o servidor de línguas oficiais de Golang é gopls (pronunciado:: “go please”). Você pode verificar mais informações sobre o estado do gopls e seus recursos suportados.

    🔌 NERDTree

    Depois de configurar um monte de coisas no seu Vim, uma coisa que você provavelmente ainda falta o mais é “Janela Lateral”, onde você pode procurar seus arquivos de projeto facilmente. O totó apanhou-te. NERDTree é um explorador de Sistema de arquivos completo, que ajuda a navegar visualmente seus arquivos usando uma janela lateral estilo árvore. Com o NERDTree, você pode abrir rapidamente arquivos para leitura ou edição, e executar operações básicas do sistema de arquivos.

    instalação e montagem

    pode instalar NERDTree igual a vim-go e coc.nvim. Basta adicionar Plug 'preservim/nerdtree' a .vimrc e executar :PlugInstall ou executar vim +PlugInstall a partir da linha de comando.

    além disso, você pode checar FAQs wiki para Configurações. Minhas configurações para NERDTree é semelhante ao:

    Você pode abrir um diretório em vim usando vim . (semelhante a code . para VSCode). Você pode alternar entre NERDTree e seu código usando CTRL+ww ou CTRL+w+ArrowKey. A NERDTree tem documentação incorporada, você pode verificá-las carregando em ? quando você estiver na janela NERDTree.

    Esta é a forma como a minha Vim instalação parecido com NERDTree:

    Você pode dar uma olhada no meu .vimrc e vim scripts no GitHub em jogendra/dotfiles/vim.

    Aqui estão alguns links que irão ajudá-lo a começar com Vim:

    • Openvim-Interactive Vim Tutorials
    • Best Vim Tips by Fandom
    • Why, oh WHY, do those nutheads use vi?
    • colecção de artigos de viagem por thoughtbot
    • spf13-vim-a última distribuição Vim
    • Vim Cheatsheet
    • Vim Tab Madness. Buffers vs Tabs

    pode simplesmente executar vimtutor na sua linha de comando executando vimtutor comando. Ele vai abrir tutoriais Vim e ajudá-lo a começar com ele.

    linhas de fundo

    usando vim é divertido. Inicialmente, você pode enfrentar algum problema usando-o e você pode ter que aprender a usá-lo, mas definitivamente vale a pena aprender. Pelo menos você pode continuar a aprender vim ao lado de usar uma IDE. Comece com o mínimo e construa um pouco nele todos os dias. Há um monte de plugins disponíveis para tudo que você precisa com Vim. Usar o vim para o desenvolvimento do Golang é super agradável com o plugin vim-go. Não é bom ter tudo num só lugar e ser mais produtivo?Obrigado pela leitura. Compartilhe com seus colegas / amigos. Podes contactar – me no Twitter.



+