init.lua 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. -- arquivo de configuração do neovim, para isso basta criar o arquivo `~/.config/nvim/init.lua` e adicionar as seguintes linhas:
  2. -- https://github.com/neovim/neovim/tree/master
  3. local vim = vim
  4. -- ====================================================================================
  5. -- ⭐ ESSENCIAL - Configurações obrigatórias para funcionamento correto
  6. -- ====================================================================================
  7. -- Desativa compatibilidade com Vi antigo, permitindo usar recursos modernos do Vim/Neovim
  8. vim.o.compatible = false
  9. -- Detecta o tipo de arquivo e carrega automaticamente plugins e indentação apropriados
  10. -- (Sem equivalente nativo em Lua - essa linha DEVE usar VimScript)
  11. vim.cmd("filetype plugin indent on")
  12. -- Ativa a sintaxe de highlight para deixar o código colorido
  13. -- (Forma nativa: vim.treesitter.start() é mais moderno)
  14. vim.cmd("syntax enable")
  15. -- Carrega configurações de arquivos .vim, .lua, .nvimrc e .exrc na pasta de projeto
  16. vim.o.exrc = true
  17. -- Ativa modo seguro para bloquear comandos preiudosos ao carregar arquivos de terceiros
  18. vim.o.secure = true
  19. -- Define a tecla de espaço como "Leader Key" (tecla modificadora para atalhos customizados)
  20. vim.g.mapleader = " "
  21. -- ====================================================================================
  22. -- 🔧 RECOMENDADO - Melhor usabilidade e comportamento esperado
  23. -- ====================================================================================
  24. -- Exibe os números das linhas no lado esquerdo do editor
  25. vim.opt.number = true
  26. -- Mostra números relativos (distância da linha do cursor), útil para navegação rápida
  27. vim.o.relativenumber = true
  28. vim.o.scrolloff = 4
  29. -- Herda a indentação da linha anterior automaticamente ao criar nova linha
  30. vim.o.autoindent = true
  31. -- Converte caracteres Tab em espaços (importante para compatibilidade entre editores)
  32. vim.o.expandtab = true
  33. -- Define quantos espaços ocupam UMA tabulação visual no arquivo
  34. vim.o.tabstop = 4
  35. -- Define quantos espaços o Neovim coloca ao pressionar Tab (mesmo convertendo em espaços)
  36. -- Por exemplo: ao pressionar Tab, o cursor pula 4 espaços. Ao pressionar Backspace, apaga 4 espaços
  37. -- Diferente de tabstop que é só visual - softtabstop define o "tamanho tático" do Tab
  38. vim.o.softtabstop = 4
  39. -- Controla a quantidade de espaços usados para indentação automática
  40. -- Afeta operações como << (diminuir indentação) e >> (aumentar indentação),
  41. -- bem como indentação automática feita por plugins. Neste caso, cada nível de indentação
  42. vim.o.shiftwidth = 4
  43. -- Ativa suporte a clipboard do sistema (copia/cola com "+y" ou "*y funciona com sistema)
  44. vim.o.clipboard = "unnamedplus"
  45. -- Ativa mouse para clicar, arrastar e selecionar texto no editor em todos os modos
  46. -- "a" = all modes (normal, insert, command-line, visual)
  47. vim.o.mouse = ""
  48. -- ====================================================================================
  49. -- 👀 BUSCA E INTERFACE - Melhor visualização durante edição
  50. -- ====================================================================================
  51. -- Destaca a linha inteira onde o cursor está (linha horizontal)
  52. vim.o.cursorline = true
  53. -- dá para brincar com exibindo só o destaque no numero da liilha, ou então da linhas, ambos
  54. vim.o.cursorlineopt = "line,number"
  55. -- Destaca todos os resultados de uma busca anterior até fazer uma nova busca
  56. vim.o.hlsearch = true
  57. -- Busca incremental: mostra resultados enquanto você digita a busca
  58. vim.o.incsearch = true
  59. -- Mostra uma coluna de referência em 120 e 160 caracteres para manter linhas legíveis
  60. vim.o.colorcolumn = "80,120,140"
  61. -- Destaca automaticamente parênteses/colchetes/chaves correspondentes
  62. vim.o.showmatch = true
  63. -- Mostra qual modo você está (INSERT, VISUAL, COMMAND, etc) na barra inferior
  64. vim.o.showmode = true
  65. -- quando testei essa config, lá na barra de titulo do emulador
  66. -- de terminal aparece o arquivo em questão como titulo
  67. vim.o.title = true
  68. -- quando divide a janela verticalmente, mantem o buffer atual a direita
  69. vim.o.splitright = true
  70. -- quando divide a tela na horizontal
  71. -- mantem o buffer atual em cima
  72. vim.o.splitbelow = true
  73. -- ====================================================================================
  74. -- 📝 DESCOMENTADO - Configurações adicionais disponíveis
  75. -- ====================================================================================
  76. -- ainda não encontrei aonde faça a diferença, dado que o terminal já usa
  77. vim.o.fileencodings = 'uft-8'
  78. -- ainda não encontrei aonde faça a diferença, dado que o terminal já usa
  79. vim.o.encoding = 'utf-8'
  80. -- oferece a opção de salvar quando fecha o buffer
  81. vim.o.confirm = true
  82. vim.o.smartcase = true
  83. vim.o.ignorecase = true
  84. vim.o.signcolumn = 'yes'
  85. vim.o.wrap = true
  86. -- retrobox, habamax, fruit
  87. vim.cmd.colorscheme('habamax')
  88. require('mapping')
  89. require('mini_nvim')
  90. vim.o.wildmode = "longest:list"
  91. vim.o.backspace=indent,eol,start
  92. vim.o.listchars="tab:>-,trail:-,nbsp:+"
  93. vim.o.fillchars="eob:~,lastline:@"
  94. vim.o.hidden = true
  95. -- require('plugs') -- descomente para carregar arquivo de plugins
  96. -- vim.g.NERDTreeShowHidden=1 -- descomente para mostrar arquivos ocultos no NERDTree
  97. -- Telescópio
  98. -- https://github.com/nvim-telescope/telescope.nvim