-
-
Save caio2k/776ccc5e704a2b7f021bde21e402ae75 to your computer and use it in GitHub Desktop.
NeoVim
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apt install python3-flake8 pylint mypy |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
---- compatible with nvim 0.10.4 (deb13) | |
-- Install packer | |
local install_path = vim.fn.stdpath 'data' .. '/site/pack/packer/start/packer.nvim' | |
local is_bootstrap = false | |
if vim.fn.empty(vim.fn.glob(install_path)) > 0 then | |
is_bootstrap = true | |
vim.fn.execute('!git clone https://github.com/wbthomason/packer.nvim ' .. install_path) | |
vim.cmd [[packadd packer.nvim]] | |
end | |
-- stylua: ignore start | |
require('packer').startup(function(use) | |
use 'wbthomason/packer.nvim' -- Package manager | |
use 'ryanoasis/vim-devicons' | |
use 'christoomey/vim-tmux-navigator' | |
use 'tpope/vim-fugitive' -- Git commands in nvim | |
use { 'lewis6991/gitsigns.nvim', requires = { 'nvim-lua/plenary.nvim' } } -- Add git related info in the signs columns and popups | |
use 'airblade/vim-gitgutter' -- Git gutter | |
use 'numToStr/Comment.nvim' -- "gc" to comment visual regions/lines | |
use 'nvim-treesitter/nvim-treesitter' -- Highlight, edit, and navigate code | |
use 'nvim-treesitter/nvim-treesitter-textobjects' -- Additional textobjects for treesitter | |
use 'neovim/nvim-lspconfig' -- Collection of configurations for built-in LSP client | |
use 'williamboman/nvim-lsp-installer' -- Automatically install language servers to stdpath | |
use { 'hrsh7th/nvim-cmp', requires = { 'hrsh7th/cmp-nvim-lsp' } } -- Autocompletion | |
use { 'L3MON4D3/LuaSnip', requires = { 'saadparwaiz1/cmp_luasnip' } } -- Snippet Engine and Snippet Expansion | |
use 'vim-airline/vim-airline' | |
use 'vim-airline/vim-airline-themes' | |
use { 'lukas-reineke/indent-blankline.nvim', main ="ibl" } -- add indentation guides even on blank lines | |
use 'tpope/vim-sleuth' -- detect tabstop and shiftwidth automatically | |
use { 'nvim-telescope/telescope.nvim', requires = { 'nvim-lua/plenary.nvim' } } -- Fuzzy Finder (files, lsp, etc) | |
use { "catppuccin/nvim", as = "catppuccin" } -- catppuccin | |
-- Fuzzy Finder Algorithm which requires local dependencies to be built. Only load if `make` is available | |
use { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make', cond = vim.fn.executable "make" == 1 } | |
if is_bootstrap then | |
require('packer').sync() | |
end | |
end) | |
-- stylua: ignore end | |
-- When we are bootstrapping a configuration, it doesn't | |
-- make sense to execute the rest of the init.lua. | |
-- | |
-- You'll need to restart nvim, and then it will work. | |
if is_bootstrap then | |
print '==================================' | |
print ' Plugins are being installed' | |
print ' Wait until Packer completes,' | |
print ' then restart nvim' | |
print '==================================' | |
return | |
end | |
-- Automatically source and re-compile packer whenever you save this init.lua | |
local packer_group = vim.api.nvim_create_augroup('Packer', { clear = true }) | |
vim.api.nvim_create_autocmd('BufWritePost', { | |
command = 'source <afile> | PackerCompile', | |
group = packer_group, | |
pattern = vim.fn.expand '$MYVIMRC', | |
}) | |
-- [[ Setting options ]] | |
-- See `:help vim.o` | |
-- Set highlight on search | |
vim.o.hlsearch = false | |
-- Make line numbers default | |
vim.wo.number = true | |
-- Enable mouse mode | |
vim.o.mouse = 'a' | |
-- Enable clipboard | |
vim.opt.clipboard = "unnamedplus" | |
-- Enable break indent | |
vim.o.breakindent = true | |
-- Save undo history | |
vim.o.undofile = true | |
-- Case insensitive searching UNLESS /C or capital in search | |
vim.o.ignorecase = true | |
vim.o.smartcase = true | |
-- Decrease update time | |
vim.o.updatetime = 250 | |
vim.wo.signcolumn = 'yes' | |
-- Set colorscheme | |
vim.o.termguicolors = true | |
vim.cmd [[colorscheme catppuccin]] | |
-- Set completeopt to have a better completion experience | |
vim.o.completeopt = 'menuone,noselect' | |
-- [[ Basic Keymaps ]] | |
-- Set <space> as the leader key | |
-- See `:help mapleader` | |
-- NOTE: Must happen before plugins are required (otherwise wrong leader will be used) | |
vim.g.mapleader = ' ' | |
vim.g.maplocalleader = ' ' | |
-- Keymaps for better default experience | |
-- See `:help vim.keymap.set()` | |
vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true }) | |
-- Remap for dealing with word wrap | |
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) | |
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) | |
-- [[ Highlight on yank ]] | |
-- See `:help vim.highlight.on_yank()` | |
local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) | |
vim.api.nvim_create_autocmd('TextYankPost', { | |
callback = function() | |
vim.highlight.on_yank() | |
end, | |
group = highlight_group, | |
pattern = '*', | |
}) | |
-- Enable Comment.nvim | |
require('Comment').setup() | |
-- Gitsigns | |
-- See `:help gitsigns.txt` | |
require('gitsigns').setup { | |
signs = { | |
add = { text = '+' }, | |
change = { text = '~' }, | |
delete = { text = '_' }, | |
topdelete = { text = '‾' }, | |
changedelete = { text = '~' }, | |
}, | |
} | |
-- [[ Configure Telescope ]] | |
-- See `:help telescope` and `:help telescope.setup()` | |
require('telescope').setup { | |
defaults = { | |
mappings = { | |
i = { | |
['<C-u>'] = false, | |
['<C-d>'] = false, | |
}, | |
}, | |
}, | |
} | |
-- Enable telescope fzf native, if installed | |
pcall(require('telescope').load_extension, 'fzf') | |
-- See `:help telescope.builtin` | |
vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) | |
vim.keymap.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' }) | |
vim.keymap.set('n', '<leader>/', function() | |
-- You can pass additional configuration to telescope to change theme, layout, etc. | |
require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { | |
winblend = 10, | |
previewer = false, | |
}) | |
end, { desc = '[/] Fuzzily search in current buffer]' }) | |
vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) | |
vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' }) | |
vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' }) | |
vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) | |
vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) | |
-- [[ Configure Treesitter ]] | |
-- See `:help nvim-treesitter` | |
require('nvim-treesitter.configs').setup { | |
-- Add languages to be installed here that you want installed for treesitter | |
ensure_installed = { 'lua', 'typescript', 'rust', 'go', 'python' }, | |
highlight = { enable = true }, | |
indent = { enable = true }, | |
incremental_selection = { | |
enable = true, | |
keymaps = { | |
init_selection = '<c-space>', | |
node_incremental = '<c-space>', | |
-- TODO: I'm not sure for this one. | |
scope_incremental = '<c-s>', | |
node_decremental = '<c-backspace>', | |
}, | |
}, | |
textobjects = { | |
select = { | |
enable = true, | |
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim | |
keymaps = { | |
-- You can use the capture groups defined in textobjects.scm | |
['af'] = '@function.outer', | |
['if'] = '@function.inner', | |
['ac'] = '@class.outer', | |
['ic'] = '@class.inner', | |
}, | |
}, | |
move = { | |
enable = true, | |
set_jumps = true, -- whether to set jumps in the jumplist | |
goto_next_start = { | |
[']m'] = '@function.outer', | |
[']]'] = '@class.outer', | |
}, | |
goto_next_end = { | |
[']M'] = '@function.outer', | |
[']['] = '@class.outer', | |
}, | |
goto_previous_start = { | |
['[m'] = '@function.outer', | |
['[['] = '@class.outer', | |
}, | |
goto_previous_end = { | |
['[M'] = '@function.outer', | |
['[]'] = '@class.outer', | |
}, | |
}, | |
swap = { | |
enable = true, | |
swap_next = { | |
['<leader>a'] = '@parameter.inner', | |
}, | |
swap_previous = { | |
['<leader>A'] = '@parameter.inner', | |
}, | |
}, | |
}, | |
} | |
-- Enable `lukas-reineke/indent-blankline.nvim` | |
-- See `:help indent_blankline.txt` | |
-- require('ibl').setup( | |
-- ibl.config.indent.char == '┊', | |
-- show_trailing_blankline_indent = false | |
-- ) | |
local highlight = { | |
"RainbowRed", | |
"RainbowYellow", | |
"RainbowBlue", | |
"RainbowOrange", | |
"RainbowGreen", | |
"RainbowViolet", | |
"RainbowCyan", | |
} | |
local hooks = require "ibl.hooks" | |
hooks.register(hooks.type.HIGHLIGHT_SETUP, function() | |
vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#E06C75" }) | |
vim.api.nvim_set_hl(0, "RainbowYellow", { fg = "#E5C07B" }) | |
vim.api.nvim_set_hl(0, "RainbowBlue", { fg = "#61AFEF" }) | |
vim.api.nvim_set_hl(0, "RainbowOrange", { fg = "#D19A66" }) | |
vim.api.nvim_set_hl(0, "RainbowGreen", { fg = "#98C379" }) | |
vim.api.nvim_set_hl(0, "RainbowViolet", { fg = "#C678DD" }) | |
vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#56B6C2" }) | |
end) | |
require("ibl").setup { indent = { highlight = highlight } } | |
-- Diagnostic keymaps | |
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) | |
vim.keymap.set('n', ']d', vim.diagnostic.goto_next) | |
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float) | |
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist) | |
-- LSP settings. | |
-- This function gets run when an LSP connects to a particular buffer. | |
local on_attach = function(_, bufnr) | |
-- NOTE: Remember that lua is a real programming language, and as such it is possible | |
-- to define small helper and utility functions so you don't have to repeat yourself | |
-- many times. | |
-- | |
-- In this case, we create a function that lets us more easily define mappings specific | |
-- for LSP related items. It sets the mode, buffer and description for us each time. | |
local nmap = function(keys, func, desc) | |
if desc then | |
desc = 'LSP: ' .. desc | |
end | |
vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) | |
end | |
nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame') | |
nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction') | |
nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition') | |
nmap('gi', vim.lsp.buf.implementation, '[G]oto [I]mplementation') | |
nmap('gr', require('telescope.builtin').lsp_references) | |
nmap('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') | |
nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') | |
-- See `:help K` for why this keymap | |
nmap('K', vim.lsp.buf.hover, 'Hover Documentation') | |
nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation') | |
-- Lesser used LSP functionality | |
nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') | |
nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition') | |
nmap('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') | |
nmap('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') | |
nmap('<leader>wl', function() | |
print(vim.inspect(vim.lsp.buf.list_workspace_folders())) | |
end, '[W]orkspace [L]ist Folders') | |
-- Create a command `:Format` local to the LSP buffer | |
vim.api.nvim_buf_create_user_command(bufnr, 'Format', vim.lsp.buf.format or vim.lsp.buf.formatting, { desc = 'Format current buffer with LSP' }) | |
end | |
-- nvim-cmp supports additional completion capabilities | |
--local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) | |
-- Enable the following language servers | |
local servers = { 'pyright', 'tsserver', 'sumneko_lua' } | |
-- Ensure the servers above are installed | |
require('nvim-lsp-installer').setup { | |
ensure_installed = servers, | |
} | |
for _, lsp in ipairs(servers) do | |
require('lspconfig').lua_ls.setup { | |
on_attach = on_attach, | |
capabilities = capabilities, | |
} | |
end | |
-- Example custom configuration for lua | |
-- | |
-- Make runtime files discoverable to the server | |
local runtime_path = vim.split(package.path, ';') | |
table.insert(runtime_path, 'lua/?.lua') | |
table.insert(runtime_path, 'lua/?/init.lua') | |
require('lspconfig').lua_ls.setup { | |
on_attach = on_attach, | |
-- capabilities = capabilities, | |
settings = { | |
Lua = { | |
runtime = { | |
-- Tell the language server which version of Lua you're using (most likely LuaJIT) | |
version = 'LuaJIT', | |
-- Setup your lua path | |
path = runtime_path, | |
}, | |
diagnostics = { | |
globals = { 'vim' }, | |
}, | |
workspace = { library = vim.api.nvim_get_runtime_file('', true) }, | |
-- Do not send telemetry data containing a randomized but unique identifier | |
telemetry = { enable = false, }, | |
}, | |
}, | |
} | |
-- nvim-cmp setup | |
local cmp = require 'cmp' | |
local luasnip = require 'luasnip' | |
cmp.setup { | |
snippet = { | |
expand = function(args) | |
luasnip.lsp_expand(args.body) | |
end, | |
}, | |
mapping = cmp.mapping.preset.insert { | |
['<C-d>'] = cmp.mapping.scroll_docs(-4), | |
['<C-f>'] = cmp.mapping.scroll_docs(4), | |
['<C-Space>'] = cmp.mapping.complete(), | |
['<CR>'] = cmp.mapping.confirm { | |
behavior = cmp.ConfirmBehavior.Replace, | |
select = true, | |
}, | |
['<Tab>'] = cmp.mapping(function(fallback) | |
if cmp.visible() then | |
cmp.select_next_item() | |
elseif luasnip.expand_or_jumpable() then | |
luasnip.expand_or_jump() | |
else | |
fallback() | |
end | |
end, { 'i', 's' }), | |
['<S-Tab>'] = cmp.mapping(function(fallback) | |
if cmp.visible() then | |
cmp.select_prev_item() | |
elseif luasnip.jumpable(-1) then | |
luasnip.jump(-1) | |
else | |
fallback() | |
end | |
end, { 'i', 's' }), | |
}, | |
sources = { | |
{ name = 'nvim_lsp' }, | |
{ name = 'luasnip' }, | |
}, | |
} | |
-- airline | |
vim.g["airline_theme"] = 'catppuccin' | |
vim.g["airline_powerline_fonts"] = 1 | |
vim.g["airline#extensions#tabline#enabled"] = 1 | |
-- gigutter | |
-- vim-gitgutter settings in init.lua | |
vim.g.gitgutter_signs = 0 | |
vim.g.gitgutter_highlight_lines = 1 | |
vim.g.gitgutter_highlight_linenrs = 1 | |
vim.cmd([[highlight GitGutterAddLine guibg=#dff5dd]]) -- default: links to DiffAdd | |
vim.cmd([[highlight GitGutterAddLineNr guibg=#a6e3a1]]) -- default: links to DiffAdd | |
vim.cmd([[highlight GitGutterChangeLine guibg=#f9e2af]]) -- default: links to DiffChange | |
vim.cmd([[highlight GitGutterChangeLineNr guibg=#df8e1d]]) -- default: links to DiffChange | |
vim.cmd([[highlight link GitGutterDeleteLine none]]) | |
vim.cmd([[highlight GitGutterDeleteLineNr guibg=#d20f39]]) | |
vim.cmd([[highlight Normal guibg=NONE ctermbg=NONE]]) | |
vim.api.nvim_set_keymap('n', 'gn', '<Plug>(GitGutterNextHunk)', { noremap = true, silent = true }) | |
vim.api.nvim_set_keymap('n', 'gp', '<Plug>(GitGutterPrevHunk)', { noremap = true, silent = true }) | |
vim.api.nvim_set_keymap('n', 'ga', '<Plug>(GitGutterStageHunk)', { noremap = true, silent = true }) | |
vim.api.nvim_set_keymap('n', 'gu', '<Plug>(GitGutterUndoHunk)', { noremap = true, silent = true }) | |
-- The line beneath this is called `modeline`. See `:help modeline` | |
-- vim: ts=2 sts=2 sw=2 et |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
---- compatible with nvim 0.10.4 (deb13) | |
-- Install packer | |
local install_path = vim.fn.stdpath 'data' .. '/site/pack/packer/start/packer.nvim' | |
local is_bootstrap = false | |
if vim.fn.empty(vim.fn.glob(install_path)) > 0 then | |
is_bootstrap = true | |
vim.fn.execute('!git clone https://github.com/wbthomason/packer.nvim ' .. install_path) | |
vim.cmd [[packadd packer.nvim]] | |
end | |
-- stylua: ignore start | |
require('packer').startup(function(use) | |
use 'wbthomason/packer.nvim' -- Package manager | |
use 'ryanoasis/vim-devicons' | |
use 'christoomey/vim-tmux-navigator' | |
use 'tpope/vim-fugitive' -- Git commands in nvim | |
use 'tpope/vim-rhubarb' -- Fugitive-companion to interact with github | |
use { 'lewis6991/gitsigns.nvim', requires = { 'nvim-lua/plenary.nvim' }, tag = 'v0.6' } -- Add git related info in the signs columns and popups | |
use 'airblade/vim-gitgutter' -- Git Gutter | |
use 'numToStr/Comment.nvim' -- "gc" to comment visual regions/lines | |
use { 'nvim-treesitter/nvim-treesitter', commit = '4cccb6f494eb255b32a290d37c35ca12584c74d0'} -- Highlight, edit, and navigate code | |
-- use 'nvim-treesitter/nvim-treesitter-textobjects' -- Additional textobjects for treesitter | |
-- use 'neovim/nvim-lspconfig' -- Collection of configurations for built-in LSP client | |
-- use 'williamboman/nvim-lsp-installer' -- Automatically install language servers to stdpath | |
-- use { 'hrsh7th/nvim-cmp', requires = { 'hrsh7th/cmp-nvim-lsp' } } -- Autocompletion | |
-- use { 'L3MON4D3/LuaSnip', requires = { 'saadparwaiz1/cmp_luasnip' } } -- Snippet Engine and Snippet Expansion | |
-- use 'nvim-lualine/lualine.nvim' -- Fancier statusline | |
use 'vim-airline/vim-airline' | |
use 'vim-airline/vim-airline-themes' | |
use { 'lukas-reineke/indent-blankline.nvim', tag = 'v2.20.8' } -- Add indentation guides even on blank lines | |
use 'tpope/vim-sleuth' -- Detect tabstop and shiftwidth automatically | |
-- use { 'nvim-telescope/telescope.nvim', requires = { 'nvim-lua/plenary.nvim' } } -- Fuzzy Finder (files, lsp, etc) | |
use { 'catppuccin/nvim', as = 'catppuccin', tag = 'v0.2.7' } -- catppuccin | |
-- Fuzzy Finder Algorithm which requires local dependencies to be built. Only load if `make` is available | |
-- use { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make', cond = vim.fn.executable "make" == 1 } | |
if is_bootstrap then | |
require('packer').sync() | |
end | |
end) | |
-- stylua: ignore end | |
-- When we are bootstrapping a configuration, it doesn't | |
-- make sense to execute the rest of the init.lua. | |
-- | |
-- You'll need to restart nvim, and then it will work. | |
if is_bootstrap then | |
print '==================================' | |
print ' Plugins are being installed' | |
print ' Wait until Packer completes,' | |
print ' then restart nvim' | |
print '==================================' | |
return | |
end | |
-- Automatically source and re-compile packer whenever you save this init.lua | |
local packer_group = vim.api.nvim_create_augroup('Packer', { clear = true }) | |
vim.api.nvim_create_autocmd('BufWritePost', { | |
command = 'source <afile> | PackerCompile', | |
group = packer_group, | |
pattern = vim.fn.expand '$MYVIMRC', | |
}) | |
-- [[ Setting options ]] | |
-- See `:help vim.o` | |
-- Set highlight on search | |
vim.o.hlsearch = false | |
-- Make line numbers default | |
vim.wo.number = true | |
-- Enable mouse mode | |
vim.o.mouse = 'a' | |
-- Enable clipboard | |
vim.opt.clipboard = "unnamedplus" | |
-- Enable break indent | |
vim.o.breakindent = true | |
-- Save undo history | |
vim.o.undofile = true | |
-- Case insensitive searching UNLESS /C or capital in search | |
vim.o.ignorecase = true | |
vim.o.smartcase = true | |
-- Decrease update time | |
vim.o.updatetime = 250 | |
vim.wo.signcolumn = 'yes' | |
-- Set colorscheme | |
vim.o.termguicolors = true | |
vim.cmd [[colorscheme catppuccin-latte]] | |
-- Set completeopt to have a better completion experience | |
vim.o.completeopt = 'menuone,noselect' | |
-- [[ Basic Keymaps ]] | |
-- Set <space> as the leader key | |
-- See `:help mapleader` | |
-- NOTE: Must happen before plugins are required (otherwise wrong leader will be used) | |
vim.g.mapleader = ' ' | |
vim.g.maplocalleader = ' ' | |
-- Keymaps for better default experience | |
-- See `:help vim.keymap.set()` | |
vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true }) | |
-- Remap for dealing with word wrap | |
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) | |
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) | |
-- [[ Highlight on yank ]] | |
-- See `:help vim.highlight.on_yank()` | |
local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) | |
vim.api.nvim_create_autocmd('TextYankPost', { | |
callback = function() | |
vim.highlight.on_yank() | |
end, | |
group = highlight_group, | |
pattern = '*', | |
}) | |
-- Set lualine as statusline | |
-- See `:help lualine.txt` | |
-- require('lualine').setup { | |
-- options = { | |
-- icons_enabled = false, | |
-- theme = 'onedark', | |
-- component_separators = '|', | |
-- section_separators = '', | |
-- }, | |
-- } | |
-- Enable Comment.nvim | |
require('Comment').setup() | |
-- Gitsigns | |
-- See `:help gitsigns.txt` | |
require('gitsigns').setup { | |
signs = { | |
add = { text = '+' }, | |
change = { text = '~' }, | |
delete = { text = '_' }, | |
topdelete = { text = '‾' }, | |
changedelete = { text = '~' }, | |
}, | |
} | |
-- [[ Configure Telescope ]] | |
-- See `:help telescope` and `:help telescope.setup()` | |
-- require('telescope').setup { | |
-- defaults = { | |
-- mappings = { | |
-- i = { | |
-- ['<C-u>'] = false, | |
-- ['<C-d>'] = false, | |
-- }, | |
-- }, | |
-- }, | |
-- } | |
-- | |
-- -- Enable telescope fzf native, if installed | |
-- pcall(require('telescope').load_extension, 'fzf') | |
-- | |
-- -- See `:help telescope.builtin` | |
-- vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) | |
-- vim.keymap.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' }) | |
-- vim.keymap.set('n', '<leader>/', function() | |
-- -- You can pass additional configuration to telescope to change theme, layout, etc. | |
-- require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { | |
-- winblend = 10, | |
-- previewer = false, | |
-- }) | |
-- end, { desc = '[/] Fuzzily search in current buffer]' }) | |
-- | |
-- vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) | |
-- vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' }) | |
-- vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' }) | |
-- vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) | |
-- vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) | |
-- [[ Configure Treesitter ]] | |
-- See `:help nvim-treesitter` | |
require('nvim-treesitter.configs').setup { | |
-- Add languages to be installed here that you want installed for treesitter | |
ensure_installed = { 'lua', 'typescript', 'rust', 'go', 'python' }, | |
highlight = { enable = true }, | |
indent = { enable = true }, | |
incremental_selection = { | |
enable = true, | |
keymaps = { | |
init_selection = '<c-space>', | |
node_incremental = '<c-space>', | |
-- TODO: I'm not sure for this one. | |
scope_incremental = '<c-s>', | |
node_decremental = '<c-backspace>', | |
}, | |
}, | |
textobjects = { | |
select = { | |
enable = true, | |
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim | |
keymaps = { | |
-- You can use the capture groups defined in textobjects.scm | |
['af'] = '@function.outer', | |
['if'] = '@function.inner', | |
['ac'] = '@class.outer', | |
['ic'] = '@class.inner', | |
}, | |
}, | |
move = { | |
enable = true, | |
set_jumps = true, -- whether to set jumps in the jumplist | |
goto_next_start = { | |
[']m'] = '@function.outer', | |
[']]'] = '@class.outer', | |
}, | |
goto_next_end = { | |
[']M'] = '@function.outer', | |
[']['] = '@class.outer', | |
}, | |
goto_previous_start = { | |
['[m'] = '@function.outer', | |
['[['] = '@class.outer', | |
}, | |
goto_previous_end = { | |
['[M'] = '@function.outer', | |
['[]'] = '@class.outer', | |
}, | |
}, | |
swap = { | |
enable = true, | |
swap_next = { | |
['<leader>a'] = '@parameter.inner', | |
}, | |
swap_previous = { | |
['<leader>A'] = '@parameter.inner', | |
}, | |
}, | |
}, | |
} | |
-- Enable `lukas-reineke/indent-blankline.nvim` | |
-- See `:help indent_blankline.txt` | |
require('indent_blankline').setup { | |
char == '┊', | |
show_trailing_blankline_indent = false, | |
} | |
-- Diagnostic keymaps | |
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev) | |
vim.keymap.set('n', ']d', vim.diagnostic.goto_next) | |
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float) | |
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist) | |
-- LSP settings. | |
-- This function gets run when an LSP connects to a particular buffer. | |
local on_attach = function(_, bufnr) | |
-- NOTE: Remember that lua is a real programming language, and as such it is possible | |
-- to define small helper and utility functions so you don't have to repeat yourself | |
-- many times. | |
-- | |
-- In this case, we create a function that lets us more easily define mappings specific | |
-- for LSP related items. It sets the mode, buffer and description for us each time. | |
local nmap = function(keys, func, desc) | |
if desc then | |
desc = 'LSP: ' .. desc | |
end | |
vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc }) | |
end | |
-- nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame') | |
-- nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction') | |
-- | |
-- nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition') | |
-- nmap('gi', vim.lsp.buf.implementation, '[G]oto [I]mplementation') | |
-- nmap('gr', require('telescope.builtin').lsp_references) | |
-- nmap('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') | |
-- nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') | |
-- | |
-- See `:help K` for why this keymap | |
-- nmap('K', vim.lsp.buf.hover, 'Hover Documentation') | |
-- nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation') | |
-- Lesser used LSP functionality | |
-- nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') | |
-- nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition') | |
-- nmap('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder') | |
-- nmap('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder') | |
-- nmap('<leader>wl', function() | |
-- print(vim.inspect(vim.lsp.buf.list_workspace_folders())) | |
-- end, '[W]orkspace [L]ist Folders') | |
-- Create a command `:Format` local to the LSP buffer | |
vim.api.nvim_buf_create_user_command(bufnr, 'Format', vim.lsp.buf.format or vim.lsp.buf.formatting, { desc = 'Format current buffer with LSP' }) | |
end | |
-- nvim-cmp supports additional completion capabilities | |
--local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) | |
-- Enable the following language servers | |
local servers = { 'clangd', 'rust_analyzer', 'pyright', 'tsserver', 'sumneko_lua' } | |
-- Ensure the servers above are installed | |
-- require('nvim-lsp-installer').setup { | |
-- ensure_installed = servers, | |
-- } | |
-- for _, lsp in ipairs(servers) do | |
-- require('lspconfig').lua_ls.setup { | |
-- on_attach = on_attach, | |
-- capabilities = capabilities, | |
-- } | |
-- end | |
-- Example custom configuration for lua | |
-- | |
-- Make runtime files discoverable to the server | |
local runtime_path = vim.split(package.path, ';') | |
table.insert(runtime_path, 'lua/?.lua') | |
table.insert(runtime_path, 'lua/?/init.lua') | |
-- require('lspconfig').lua_ls.setup { | |
-- on_attach = on_attach, | |
-- capabilities = capabilities, | |
-- settings = { | |
-- Lua = { | |
-- runtime = { | |
-- -- Tell the language server which version of Lua you're using (most likely LuaJIT) | |
-- version = 'LuaJIT', | |
-- -- Setup your lua path | |
-- path = runtime_path, | |
-- }, | |
-- diagnostics = { | |
-- globals = { 'vim' }, | |
-- }, | |
-- workspace = { library = vim.api.nvim_get_runtime_file('', true) }, | |
-- -- Do not send telemetry data containing a randomized but unique identifier | |
-- telemetry = { enable = false, }, | |
-- }, | |
-- }, | |
-- } | |
-- | |
-- -- nvim-cmp setup | |
-- local cmp = require 'cmp' | |
-- local luasnip = require 'luasnip' | |
-- | |
-- cmp.setup { | |
-- snippet = { | |
-- expand = function(args) | |
-- luasnip.lsp_expand(args.body) | |
-- end, | |
-- }, | |
-- mapping = cmp.mapping.preset.insert { | |
-- ['<C-d>'] = cmp.mapping.scroll_docs(-4), | |
-- ['<C-f>'] = cmp.mapping.scroll_docs(4), | |
-- ['<C-Space>'] = cmp.mapping.complete(), | |
-- ['<CR>'] = cmp.mapping.confirm { | |
-- behavior = cmp.ConfirmBehavior.Replace, | |
-- select = true, | |
-- }, | |
-- ['<Tab>'] = cmp.mapping(function(fallback) | |
-- if cmp.visible() then | |
-- cmp.select_next_item() | |
-- elseif luasnip.expand_or_jumpable() then | |
-- luasnip.expand_or_jump() | |
-- else | |
-- fallback() | |
-- end | |
-- end, { 'i', 's' }), | |
-- ['<S-Tab>'] = cmp.mapping(function(fallback) | |
-- if cmp.visible() then | |
-- cmp.select_prev_item() | |
-- elseif luasnip.jumpable(-1) then | |
-- luasnip.jump(-1) | |
-- else | |
-- fallback() | |
-- end | |
-- end, { 'i', 's' }), | |
-- }, | |
-- sources = { | |
-- { name = 'nvim_lsp' }, | |
-- { name = 'luasnip' }, | |
-- }, | |
-- } | |
-- airline | |
vim.g["airline_powerline_fonts"] = 1 | |
vim.g["airline#extensions#tabline#enabled"] = 1 | |
-- vim-gitgutter settings in init.lua | |
vim.g.gitgutter_signs = 0 | |
vim.g.gitgutter_highlight_lines = 1 | |
vim.g.gitgutter_highlight_linenrs = 1 | |
vim.cmd([[highlight GitGutterAddLine guibg=#dff5dd]]) -- default: links to DiffAdd | |
vim.cmd([[highlight GitGutterAddLineNr guibg=#a6e3a1]]) -- default: links to DiffAdd | |
vim.cmd([[highlight GitGutterChangeLine guibg=#f9e2af]]) -- default: links to DiffChange | |
vim.cmd([[highlight GitGutterChangeLineNr guibg=#df8e1d]]) -- default: links to DiffChange | |
vim.cmd([[highlight link GitGutterDeleteLine none]]) | |
vim.cmd([[highlight GitGutterDeleteLineNr guibg=#d20f39]]) | |
vim.cmd([[highlight Normal guibg=NONE ctermbg=NONE]]) | |
vim.api.nvim_set_keymap('n', 'gn', '<Plug>(GitGutterNextHunk)', { noremap = true, silent = true }) | |
vim.api.nvim_set_keymap('n', 'gp', '<Plug>(GitGutterPrevHunk)', { noremap = true, silent = true }) | |
vim.api.nvim_set_keymap('n', 'ga', '<Plug>(GitGutterStageHunk)', { noremap = true, silent = true }) | |
vim.api.nvim_set_keymap('n', 'gu', '<Plug>(GitGutterUndoHunk)', { noremap = true, silent = true }) | |
-- The line beneath this is called `modeline`. See `:help modeline` | |
-- vim: ts=2 sts=2 sw=2 et |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" compatible with nvim 0.7.2 (deb12) | |
"" vim-plug """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
call plug#begin() | |
Plug 'tpope/vim-sensible' | |
Plug 'catppuccin/vim', { 'as': 'catppuccin' } | |
"Plug 'catppuccin/nvim', { 'as': 'catppuccin', 'tag': 'v0.2.7' } | |
Plug 'ryanoasis/vim-devicons' | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'ryanoasis/vim-devicons' | |
Plug 'tpope/vim-fugitive' " git support | |
Plug 'miyakogi/conoline.vim' " highlight cursor | |
Plug 'davidhalter/jedi-vim' " autocomplete python | |
Plug 'christoomey/vim-tmux-navigator' | |
Plug 'airblade/vim-gitgutter' | |
Plug 'sheerun/vim-polyglot' "syntax highlight | |
Plug 'dense-analysis/ale' " lint engine | |
"Plug 'lewis6991/gitsigns.nvim', {'tag': 'v0.6'} | |
"plantml | |
Plug 'tyru/open-browser.vim' | |
Plug 'aklt/plantuml-syntax' | |
Plug 'weirongxu/plantuml-previewer.vim' | |
"Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']} | |
Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && npx --yes yarn install' } | |
Plug 'wellle/context.vim' "muito lento | |
" | |
call plug#end() | |
" Global Sets """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
syntax on " Enable syntax highlight | |
set nu " Enable line numbers | |
set tabstop=4 " Show existing tab with 4 spaces width | |
set softtabstop=4 " Show existing tab with 4 spaces width | |
set shiftwidth=4 " When indenting with '>', use 4 spaces width | |
set expandtab " On pressing tab, insert 4 spaces | |
set smarttab " insert tabs on the start of a line according to shiftwidth | |
set smartindent " Automatically inserts one extra level of indentation in some cases | |
set hidden " Hides the current buffer when a new file is openned | |
set incsearch " Incremental search | |
set ignorecase " Ingore case in search | |
set smartcase " Consider case if there is a upper case character | |
set scrolloff=8 " Minimum number of lines to keep above and below the cursor | |
set colorcolumn=100 " Draws a line at the given line to keep aware of the line size | |
set signcolumn=yes " Add a column on the left. Useful for linting | |
"set cmdheight=2 " Give more space for displaying messages | |
set updatetime=100 " Time in miliseconds to consider the changes | |
set encoding=utf-8 " The encoding should be utf-8 to activate the font icons | |
set nobackup " No backup files | |
set nowritebackup " No backup files | |
set splitright " Create the vertical splits to the right | |
set splitbelow " Create the horizontal splits below | |
set autoread " Update vim after file update from outside | |
set mouse=a " Enable mouse support | |
set diffopt+=vertical | |
filetype on " Detect and set the filetype option and trigger the FileType Event | |
filetype plugin on " Load the plugin file for the file type, if any | |
filetype indent on " Load the indent file for the file type, if any | |
" Themes """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
if (has("termguicolors")) | |
"if exists('+termguicolors') | |
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" | |
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" | |
set termguicolors | |
endif | |
if (has("nvim")) "Transparent background. Only for nvim | |
highlight Normal guibg=NONE ctermbg=NONE | |
highlight EndOfBuffer guibg=NONE ctermbg=NONE | |
endif | |
colorscheme catppuccin_latte "catppuccin_latte, catppuccin_frappe, catppuccin_macchiato, catppuccin_mocha | |
" | |
"let g:airline_theme = 'catppuccin_latte' | |
let g:airline_powerline_fonts = 1 | |
let g:airline#extensions#tabline#enabled = 1 | |
set clipboard+=unnamedplus | |
" workaround for conoline | |
autocmd BufReadPost * call conoline#set_hl('light') | |
" shortcuts """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" | |
" Navigate between buffers | |
nmap tt :bn<CR> | |
nmap TT :bp<CR> | |
nnoremap <Tab> :bn<CR> | |
nnoremap <S-Tab> :bp<CR> | |
nnoremap <C-h> <C-w>h | |
nnoremap <C-j> <C-w>j | |
nnoremap <C-k> <C-w>k | |
nnoremap <C-l> <C-w>l | |
inoremap <C-h> <Esc><c-w>h | |
inoremap <C-j> <Esc><c-w>j | |
inoremap <C-k> <Esc><c-w>k | |
inoremap <C-l> <Esc><c-w>l | |
tnoremap <ESC> <C-\><C-n> | |
tnoremap <M-[> <Esc> | |
tnoremap <C-v><Esc> <Esc> | |
tnoremap <C-h> <c-\><c-n><c-w>h | |
tnoremap <C-j> <c-\><c-n><c-w>j | |
tnoremap <C-k> <c-\><c-n><c-w>k | |
tnoremap <C-l> <c-\><c-n><c-w>l | |
" vim-gitgutter | |
let g:gitgutter_signs = 0 | |
let g:gitgutter_highlight_lines = 1 | |
let g:gitgutter_highlight_linenrs = 1 | |
highlight GitGutterAddLine guibg=#dff5dd " default: links to DiffAdd | |
highlight GitGutterAddLineNr guibg=#a6e3a1 " default: links to DiffAdd | |
highlight GitGutterChangeLine guibg=#f9e2af " default: links to DiffChange | |
highlight GitGutterChangeLineNr guibg=#df8e1d " default: links to DiffChange | |
highlight link GitGutterDeleteLine none | |
highlight GitGutterDeleteLineNr guibg=#d20f39 | |
highlight Normal guibg=NONE ctermbg=NONE | |
nmap gn <Plug>(GitGutterNextHunk) | |
nmap gp <Plug>(GitGutterPrevHunk) | |
nmap ga <Plug>(GitGutterStageHunk) | |
nmap gu <Plug>(GitGutterUndoHunk) | |
" context.vim | |
let g:context_add_autocmds = 0 | |
augroup context.vim | |
autocmd! | |
autocmd VimEnter * ContextActivate | |
autocmd BufAdd * call context#update('BufAdd') | |
autocmd BufEnter * call context#update('BufEnter') | |
" autocmd CursorMoved * call context#update('CursorMoved') | |
autocmd VimResized * call context#update('VimResized') | |
autocmd CursorHold * call context#update('CursorHold') | |
autocmd User GitGutter call context#update('GitGutter') | |
autocmd OptionSet number,relativenumber,numberwidth,signcolumn,tabstop,list | |
\ call context#update('OptionSet') | |
" if exists('##WinScrolled') | |
" autocmd WinScrolled * call context#update('WinScrolled') | |
" endif | |
augroup END | |
" Python """""""""""""""""""""""""""""""""""""""""""""" | |
let g:ale_python_flake8_options = '--max-line-length=100 --extend-ignore=E203 --extend-ignore=E741' | |
" apt install flake8 | |
let g:ale_linters = {'python': ['flake8']} | |
" apt install black isort | |
let g:ale_fixers = {'python': ['black', 'isort']} | |
let g:ale_python_black_options = '--line-length 100' | |
let g:ale_python_isort_options = '--profile black -l 100' | |
set redrawtime=10000 | |
" format xml | |
au FileType xml setlocal equalprg=xmllint\ --format\ --recover\ -\ 2>/dev/null |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment