Uma configuração mínima do Neovim escrita em lua
Índice
Neovim é um sucessor muito legal do Vim, focando na compatibilidade enquanto adiciona funcionalidade de plugin assíncrono e tenta limpar a base de código. Tendo me cansado várias vezes do Sublime Text (2 e 3) e do Atom, e depois de perceber o quanto desenvolvo o SSH, pareceu razoável verificar o uso do vim (ou nvim, neste caso) como meu IDE. As vantagens resumem-se essencialmente a:
Portanto, decidi criar este repositório. Existem diversas versões, confira CHANGELOG.
Esta configuração é um ponto de partida e atende apenas às minhas necessidades. Se quiser personalizá-lo, vá para 6. Personalização.
mv ~ /.config/nvim ~ /.config/nvim.bak
SO | CAMINHO |
---|---|
Linux, Mac OS | $XDG_CONFIG_HOME/nvim , ~/.config/nvim |
Janelas (cmd) | %localappdata%nvim |
Windows (podershell) | $env:LOCALAPPDATAnvim |
NOTA O URL do seu fork será mais ou menos assim:
https://github.com/<your_github_username>/neovim-config.git
NOTA Se seguir a etapa recomendada acima (ou seja, bifurcar o repositório), substitua
ntk148v
por<your_github_username>
nos comandos abaixo
git clone https://github.com/ntk148v/neovim-config.git " ${XDG_CONFIG_HOME :- $HOME / .config} " /nvim
Se você estiver usando cmd.exe
:
git clone https://github.com/ntk148v/neovim-config.git " %localappdata%nvim "
Se você estiver usando powershell.exe
git clone https://github.com/ntk148v/neovim-config.git " ${env : LOCALAPPDATA} nvim "
nvim
git pull
. Os arquivos em configuração serão carregados automaticamente no momento apropriado, então você não precisa solicitar esses arquivos manualmente.
tree ~ /.config/nvim
├── init.lua
├── lazy-lock.json
└── lua
├── autocmds.lua
├── custom.lua
├── mappings.lua
├── options.lua
├── plugins
│ ├── configs
│ │ ├── cmp.lua
│ │ ├── gitsigns.lua
│ │ ├── lspconfig.lua
│ │ ├── lualine.lua
│ │ ├── luasnip.lua
│ │ ├── mason.lua
│ │ ├── null-ls.lua
│ │ ├── telescope.lua
│ │ ├── tree.lua
│ │ └── treesitter.lua
│ └── init.lua
└── sample_custom.lua
Plug-in | Descrição |
---|---|
preguiçoso.nvim | Um gerenciador de plugins moderno para Neovim |
mason.nvim | Gerenciador de pacotes portátil para Neovim que roda em qualquer lugar que o Neovim roda. Instale e gerencie facilmente servidores LSP, servidores DAP, linters e formatadores. |
nvim-lspconfig | Uma coleção de configurações comuns para o cliente de servidor de linguagem integrado do Neovim |
gitsigns | Decorações git super rápidas implementadas puramente em lua/teal |
nvim-treesitter | Configurações do Nvim Treesitter e camada de abstração |
nvim-cmp | Plug-in de preenchimento automático |
LuaSnip | Snippet Engine para Neovim escrito em Lua |
nvim-tree.lua - | Um explorador de arquivos escrito em Lua |
pares automáticos nvim | Um autopairs superpoderoso para Neovim |
nvim-web-devicons | fork Lua de vim-web-devicons para neovim |
lualine.nvim | Um plugin neovim statusline extremamente rápido e fácil de configurar, escrito em lua pura. |
norcalli/nvim-colorizer.lua | O colorizador Neovim mais rápido. |
nvim-telescópio/telescópio.nvim | Encontre, filtre, visualize, escolha. Tudo lua, o tempo todo. |
pinho rosé | Vibrações do Soho para Neovim |
nvimtools/none-ls.nvim | null-ls.nvim reloaded / Use o Neovim como um servidor de linguagem para injetar diagnósticos LSP, ações de código e muito mais via Lua. |
folke/qual-chave.nvim | Crie atalhos de teclado que permaneçam. WhichKey ajuda você a lembrar seus mapas de teclado do Neovim, mostrando os atalhos de teclado disponíveis em um pop-up enquanto você digita. |
Por padrão, os seguintes servidores LSP são instalados e configurados:
Além disso, ele se integra ao nvim-treesitter para fornecer realce de sintaxe rico e outras magias de análise de linguagem.
Se o seu idioma não for compatível, siga o seguinte:
:LspInstall ` <your_language_server> `
:TSInstall ` <language_to_install> `
Você pode adicionar mais servidores LSP e realce de sintaxe de idioma editando o arquivo personalizado.
Estes são os mapas de teclado padrão, nos atalhos a seguir, a tecla <leader>
+` está configurada para o caractere `` (espaço), verifique: keymaps.lua.
Atalho | Modo | Descrição |
---|---|---|
kkkkk | Inserir | Esc com kk |
<leader> + r | Normal | Recarregar arquivo de configuração |
<leader> + s | Normal | Salvar arquivo |
<leader> + q | Normal | Salve (feche todas as janelas) e saia do Neovim |
<leader> + n | Normal | Abra o NvimTree |
<leader> + número | Normal | Atualizar NvimTree |
<leader> + nf | Normal | Encontre o arquivo no NvimTree |
<leader> + ff | Normal | Abra o Telescope para encontrar arquivos |
<leader> + fg | Normal | Abra o telescópio para fazer grep ao vivo |
<leader> + fb | Normal | Abra o Telescope para listar buffers |
<leader> + fh | Normal | Abra o Telescope para mostrar ajuda |
<leader> + fo | Normal | Abra o Telescope para mostrar os arquivos abertos recentemente |
<leader> + cm | Normal | Abra o Telescope para listar commits do git |
<leader> + wh/j/k/l | Normal | Mova-se pelas divisões |
milímetros | Normal | Linha Comentar/Descomentar |
Existem muitos mapas de teclado padrão, você pode verificá-los usando o comando :map
. Existem também outras variantes:
:nmap
para mapeamentos de modo normal:vmap
para mapeamentos de modo visual:imap
para mapeamentos de modo de inserção A lista acima não está completa. Digitar :help map
no Vim fornecerá mais informações.
Você pode personalizar esta configuração criando o módulo custom
. Você pode escolher duas maneiras:
${XDG_CONFIG_HOME:-$HOME/.config}/nvim/lua/custom.lua
.${XDG_CONFIG_HOME:-$HOME/.config}/nvim/lua/custom/
se sua configuração personalizada for muito longa e você quiser separá-la em vários arquivos.Confira o arquivo personalizado de amostra para o ponto de partida. A lógica é retirada do CyberNvim. Existem várias seções definidas na configuração:
M.setup_sources
é usado para adicionar fontes extras para conectar-se ao Null-ls - você pode encontrar uma lista de fontes aqui. O parâmetro b é apenas uma abreviação de null_ls.builtins.M.ensure_installed
é usado para adicionar marcador extra do Treesitter.M.plugins
é onde você adicionará suas próprias definições de plugin.M.configs
é a seção mais importante da sua própria configuração. É aqui que você pode definir qualquer comando automático, exigir qualquer arquivo ou portar completamente sua configuração atual.M.formatting_servers
é usado para configurar regras de formatação automática. Você precisa selecionar o servidor de idioma que fornecerá recursos de formatação automática Sinta-se à vontade para registrar um problema ou abrir uma solicitação pull. De nada!