Neovim (Português)
O Neovim é um fork do Vim com o objetivo de melhorar o código-fonte, facilitando a implementação de APIs, a experiência do usuário e o desenvolvimento de plugins. Neovim inspirou editores como Helix.
Instalação
Instale o pacote neovim, ou neovim-gitAUR que traz a última versão em desenvolvimento, que fortemente encoraja o uso de Lua como sua principal linguagem para configuração. Para fazer o clipboard do sistema funcionar com o Neovim, talvez seja necessário instalar xclip (X11) ou wl-clipboard (Wayland).
:help provider-clipboard do Neovim.Também é possível instalar uma das muitas GUIs e outros projetos relacionados (EN) (a maioria deles está no repositório oficial ou no AUR).
- FVim — Front-end multiplataforma do Neovim, construído com F# e Avalonia.
- Neoray — Interface gráfica em Go, usando bindings do GLFW e OpenGL.
- Neovide — Uma interface gráfica simples escrita em Rust para o Neovim.
- neovim-gtk — Uma interface GTK UI para o Neovim escrita em Rust usando gtk-rs bindings.
- Neovim Qt — Uma interface gráfica leve e multiplataforma para o Neovim escrita em C++ com Qt.
- Uivonim — Um fork inativo do Veonim, "uma IDE modal simples escrita em extensões do Neovim e VSCode", escrita em Electron com renderização WebGL de GPU e multithreading".
Configuração
O Nvim armazena suas configurações, dados e logs em seus caminhos padrões de acordo com a especificação definida em XDG Base Directory (Português). O uso de plugins é incentivado, mas não é obrigatório para seguir essa convenção.
O arquivo de configuração específico do usuário é chamado init.lua ou init.vim. Apenas um deve ser utilizado e deve estar localizado em $XDG_CONFIG_HOME/nvim/. Veja o Lua guide para uma introdução do uso da linguagem Lua no Neovim.
O arquivo de configuração global é carregado a partir do $XDG_CONFIG_DIRS/nvim/sysinit.vim (por padrão /etc/xdg/nvim/sysinit.vim) se existir, ou se não existir, o /usr/share/nvim/sysinit.vim que não deve ser editado pelo usuário. [1] Por padrão, o antigo arquivo de configuração global não existe. Se você criar, poderá desejar que ele carregue o último se ainda desejar a funcionalidade que ele fornece, o que permite que os pacotes vim instalados pelo pacman funcionem com o Nvim.
O Nvim é compatível com a maioria das opções do Vim, no entanto, existem opções específicas para o Nvim. Para obter uma lista completa das opções do Nvim, consulte a documentação do Neovim, seja online (EN) ou rodando :help options no Nvim.
O diretório de dados do Nvim está localizado em ~/.local/share/nvim/ e contém swap para arquivos abertos, o arquivo ShaDa (Shared Data), e o diretório do site para plugins.
Migrando do Vim
Se você deseja migrar sua configuração existente do Vim para o Nvim, basta copiar o seu ~/.vimrc para ~/.config/nvim/init.vim. Se aplicável, copie o conteúdo do ~/.vim/autoload/ para o ~/.local/share/nvim/site/autoload/.
Configuração compartilhada entre Vim e Nvim
O Neovim usa $XDG_CONFIG_HOME/nvim ao invés de ~/.vim como seu principal diretório de configuração e $XDG_CONFIG_HOME/nvim/init.vim ao invés de ~/.vimrc como seu principal arquivo de configuração.
Se você deseja continuar usando o Vim e deseja aproveitar sua configuração existente do Vim no Nvim, consulte o nvim-from-vim ou o comando do neovim :help nvim-from-vim.
Carregando Plugins do Vim
Plugins do Vim e Neovim instalados de official repositories (Português) ou AUR (Português) são carregados automaticamente em /etc/xdg/nvim/sysinit.vim, então não é necessário nenhum passo adicional. Uma vasta quantidade de plugins pode ser encontrada nessas fontes, mas o modo mais recomendado é utilizar um plugin manager. Os mais utilizados são vim-plugAUR (que funciona no Vim e Neovim) e lazy.nvim (funciona apenas no Neovim, escrito em Lua). Ambos permitem configurações extensas, desde a branch do GitHub até mesmo comandos em runtime.
A maioria dos plugins escritos para Vim funcionam sem problemas no Neovim, mas nem todo plugin do Neovim funciona no Vim. Se sua intenção é garantir uma configuração compatível com ambos, use os tradicionais init.vim ou .vimrc.
Dicas e truques
Substituindo Vi e Vim por Neovim
As variáveis $VISUAL e $EDITOR variáveis de ambiente devem ser o suficiente na maioria dos casos.
Alguns aplicativos podem ter vi ou vim como editor padrão, para usar neovim em seu lugar, instale neovim-symlinksAUR.
Ligando o init.vim para .vimrc
Como o neovim é compatível principalmente com o vim padrão, você pode vincular o nvim/init.vim para o seu antigo .vimrc para manter as opções de configuração antigas:
$ ln -s ~/.vimrc ~/.config/nvim/init.vim
Se você deseja que algumas linhas sejam específicas para cada versão, você pode usar um if no seu arquivo .vimrc:
if has('nvim')
" Neovim specific commands
else
" Standard vim specific commands
endif
Adicionando suporte de cores verdadeiras ao neovim
Os READMEs desse projeto (EN) explicam como adicionar o suporte "True Color" de 24 bits ao realce da sintaxe e como usar um seletor de cores para ver como fica em tempo real. Vem com o destaque da sintaxe do autor (se instalado) para C++.
Suporte ao salvamento do último estado do cursor
Se você quer manter a última posição do cursor salva, o lastplace.lua é bem útil. Para funcionar, apenas precisa ser adicionado no diretório local ~/.config/nvim/plugin/ ou o diretório do sistema /usr/share/nvim/runtime/plugin/.
Language Server Protocol (LSP)
O Neovim possui um cliente de Language Server Protocol nativo e o plugin nvim-lspconfig providencia as configurações necessárias.
Veja Language Server Protocol (EN) para uma lista de pacotes Arch de LSP.
Usando Neovim como pager
É possível usar o comando :Man para abrir páginas de manual (man). Para abrir todas as páginas de manual com o Neovim, mude a variável de ambiente MANPAGER para nvim +Man!.
Para suporte, também é possível instalar o pacote nvimpagerAUR ou nvimpager-gitAUR e alterar a variável de ambiente PAGER para nvimpager.
Você também pode tentar o page, empacotado em page-gitAUR.
Múltiplas configurações isoladas do Neovim
Diversas configurações do Neovim podem ser instaladas lado a lado usando a variável de ambiente NVIM_APPNAME. Crie um diretório em XDG_CONFIG_HOME, por exemplo ~/.config/foo, e coloque sua nova configuração lá.
Para rodar nvim usando uma configuração específica:
- Mude a variável
NVIM_APPNAMEdiretamente em seu shell ou arquivo de configuração comexport NVIM_APPNAME=foo. Agora, o comandonvimvai utilizar automaticamente a configuração foo. Para restaurar o comportamento padrão, desfaça a variável de ambiente comunset NVIM_APPNAME. - Defina um alias, por exemplo
alias v=' NVIM_APPNAME=foo nvim'
Instalar o LazyVim além da configuração nativa do Neovim
Se você quiser instalar o popular LazyVim além da sua configuração nativa do nvim, siga as instruções de instalação. Mas tenha em mente que você não precisa deletar ou mover os seguintes diretórios da sua configuração do Neovim atual: ~/.config/nvim, ~/.local/share/nvim, ~/.local/state/nvim e ~/.cache/nvim.
Por isso, clone o repositório inicial para um diretório da sua escolha no caminho .config. Os comandos abaixo estão usando nvimLazyvim como diretório:
$ git clone https://github.com/LazyVim/starter ~/.config/nvimLazyvim
Não se esqueça de remover o diretório .git:
$ rm -rf ~/.config/nvimLazyvim/.git
Para usar a nova configuração, use o comando abaixo:
$ NVIM_APPNAME=nvimLazyvim nvim
Um alias para encurtar o comando pode ser feito em seu arquivo de configuração adicionando a seguinte linha:
alias v=' NVIM_APPNAME=nvimLazyvim nvim'
Solução de problemas
O cursor não é restaurado para o estado anterior após a saída
Se, depois de sair do Neovim, o cursor ainda estiver piscando, veja a solução em FAQ neovim (EN).
Erro no parser do Tree-sitter depois de atualizar o sistema
Depois de atualizar o sistema, é recomendado sincronizar os pacotes do Neovim, por exemplo :Lazy sync, então force o update dos parsers manualmente com :TSUpdate. Remover os arquivos de cache do Neovim em ~/.local/share/nvim pode resolver o problema.
Executável do Tree-sitter não encontrado
O pacote tree-sitter providencia apenas a biblioteca. Se o executável tree-sitter for necessário, instale tree-sitter-cli.