dotfiles/.config/nvim/init.lua
2026-01-05 15:00:16 -03:00

142 lines
4.1 KiB
Lua

-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
vim.g.mapleader = " "
vim.g.netrw_fastbrowse = 0 -- close netrw on open
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.cursorline = true
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.autoindent = true
vim.opt.ignorecase = true
vim.opt.foldmethod = "expr"
vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()"
local n_keymap = function(lhs, rhs)
vim.api.nvim_set_keymap('n', lhs, rhs, { noremap = true, silent = true })
end
vim.api.nvim_set_keymap('i', 'jk', '<esc>l', { noremap = true, silent = true })
vim.api.nvim_set_keymap('i', 'Jk', '<esc>l', { noremap = true, silent = true })
n_keymap('j', 'gj')
n_keymap('k', 'gk')
vim.keymap.set('v', '<C-c>', '"+y')
zzkeys = {'u', 'n', 'N', '}', '{', ']]', '[[', '][', '[]', '<C-]>', '<C-t>', '<C-o>', '<C-i>', '<C-r>'}
for i,k in pairs(zzkeys) do
n_keymap(k, k..'zz')
end
n_keymap('<leader>w', ':w!<CR>')
n_keymap('<leader>q', ':keepalt bd!<CR>')
n_keymap('<leader>i', ':set list! number relativenumber signcolumn=auto<CR>')
n_keymap('<leader>n', ':set nonumber norelativenumber signcolumn=no<CR>')
n_keymap('<leader><space>', ':let @/ = ""<BAR>cclose<CR>:echo @%<CR>')
n_keymap('<leader><tab>', '<C-^>')
n_keymap('<leader>ebi', ':e ~/.bin<cr>')
n_keymap('<leader>ecc', ':e ~/.config<cr>')
n_keymap('<leader>ecc', ':e ~/.ssh<cr>')
n_keymap('<leader>ecf', ':e ~/.config/fish<cr>')
n_keymap('<leader>ecg', ':e ~/.config/git<cr>')
n_keymap('<leader>eck', ':e ~/.kube/config<cr>')
n_keymap('<leader>eco', ':e ~/.config/opencode<cr>')
n_keymap('<leader>ecv', ':e ~/.config/nvim<cr>')
n_keymap('<leader>f', "<cmd>Telescope find_files hidden=true<cr>")
n_keymap('<leader>b', '<cmd>Telescope buffers<cr>')
n_keymap(';', '<cmd>Telescope live_grep hidden=true<cr>')
-- Setup lazy.nvim
require("lazy").setup({
spec = {
'neovim/nvim-lspconfig',
'github/copilot.vim',
'tpope/vim-fugitive',
'tpope/vim-rhubarb',
{
"kylechui/nvim-surround",
version = "*",
event = "VeryLazy",
},
'tpope/vim-endwise',
'tpope/vim-eunuch',
'tpope/vim-surround',
'tpope/vim-obsession',
{
"folke/ts-comments.nvim",
opts = {},
event = "VeryLazy",
enabled = vim.fn.has("nvim-0.10.0") == 1,
},
{'nvim-telescope/telescope.nvim', tag = '0.1.8'},
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
},
},
-- Configure any other settings here. See the documentation for more details.
-- colorscheme that will be used when installing plugins.
install = { colorscheme = { "habamax" } },
-- automatically check for plugin updates
checker = { enabled = true },
})
require('telescope').setup {
pickers = {
live_grep = {
file_ignore_patterns = { 'node_modules', '.git', '.venv' },
additional_args = function(_)
return { "--hidden" }
end
},
},
extensions = {
"fzf"
},
}
require('nvim-treesitter.configs').setup {
ensure_installed = { "bash", "css", "dockerfile", "fish", "gitignore", "html", "javascript", "json", "lua", "markdown", "python", "query", "svelte", "terraform", "typescript", "vim", "yaml", },
highlight = { enable = true, },
}
-- Terraform Language Server
vim.lsp.enable('terraformls')
vim.api.nvim_create_autocmd({"BufWritePre"}, {
pattern = {"*.tf", "*.tfvars"},
callback = function()
vim.lsp.buf.format({ async = true })
end,
})
-- Create an event handler for the FileType autocommand
-- vim.api.nvim_create_autocmd('FileType', {
-- -- This handler will fire when the buffer's 'filetype' is "zig"
-- pattern = 'zig',
-- callback = function(args)
-- vim.lsp.start({
-- name = 'zls',
-- cmd = {'zls'},
-- root_dir = vim.fs.root(args.buf, {'build.zig'}),
-- })
-- end,
-- })
--