nvim conf
This commit is contained in:
parent
553fb15efa
commit
d51a0936ab
|
|
@ -19,7 +19,7 @@
|
|||
networking.networkmanager.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
neovim
|
||||
(neovim.override { withRuby = false; })
|
||||
wget
|
||||
tree
|
||||
tmux
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ in {
|
|||
imports = [
|
||||
./kde
|
||||
./tmux
|
||||
./nvim
|
||||
];
|
||||
|
||||
fonts.fontconfig.enable = false;
|
||||
|
|
|
|||
32
user/config/nvim/default.nix
Normal file
32
user/config/nvim/default.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
vim-tmux-navigator
|
||||
which-key-nvim
|
||||
telescope-nvim
|
||||
nvim-treesitter.withAllGrammars
|
||||
nvim-lspconfig
|
||||
fidget-nvim
|
||||
nvim-cmp
|
||||
luasnip
|
||||
cmp_luasnip
|
||||
cmp-nvim-lsp
|
||||
mini-nvim
|
||||
vim-sleuth
|
||||
catppuccin-nvim
|
||||
tokyonight-nvim
|
||||
];
|
||||
extraPackages = with pkgs; [
|
||||
basedpyright
|
||||
clang-tools
|
||||
];
|
||||
withRuby = false;
|
||||
};
|
||||
xdg.configFile."nvim/init.lua".text = "require('init')";
|
||||
xdg.configFile."nvim/lua".source = config.u.lib.lnn "user/config/nvim/lua";
|
||||
}
|
||||
4
user/config/nvim/lua/init.lua
Normal file
4
user/config/nvim/lua/init.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
require('u.bindings')
|
||||
require('u.options')
|
||||
require('u.lsp')
|
||||
require('u.cmp')
|
||||
4
user/config/nvim/lua/u/bindings.lua
Normal file
4
user/config/nvim/lua/u/bindings.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
|
||||
|
||||
require('mini.move').setup()
|
||||
require('mini.ai').setup()
|
||||
39
user/config/nvim/lua/u/cmp.lua
Normal file
39
user/config/nvim/lua/u/cmp.lua
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
local cmp = require('cmp')
|
||||
local luasnip = require('luasnip')
|
||||
luasnip.config.setup()
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert {
|
||||
['<C-n>'] = cmp.mapping.select_next_item(),
|
||||
['<C-p>'] = cmp.mapping.select_prev_item(),
|
||||
|
||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
|
||||
['<C-y>'] = cmp.mapping.confirm { select = true },
|
||||
|
||||
['<C-Space>'] = cmp.mapping.complete {},
|
||||
|
||||
['<C-l>'] = cmp.mapping(function()
|
||||
if luasnip.expand_or_locally_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
end
|
||||
end, { 'i', 's' }),
|
||||
['<C-h>'] = cmp.mapping(function()
|
||||
if luasnip.locally_jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
end
|
||||
end, { 'i', 's' }),
|
||||
},
|
||||
completion = { completeopt = 'menu,menuone,noinsert' },
|
||||
sources = {
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'luasnip' },
|
||||
{ name = 'path' },
|
||||
},
|
||||
})
|
||||
16
user/config/nvim/lua/u/lsp.lua
Normal file
16
user/config/nvim/lua/u/lsp.lua
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
local lspconfig = require('lspconfig')
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_capabilities())
|
||||
|
||||
lspconfig.clangd.setup({
|
||||
cmd = {
|
||||
"clangd",
|
||||
"--background-index",
|
||||
"--clang-tidy",
|
||||
"--completion-style=bundled",
|
||||
"--cross-file-rename",
|
||||
"--header-insertion=iwyu",
|
||||
},
|
||||
capabilities=capabilities
|
||||
})
|
||||
lspconfig.basedpyright.setup{}
|
||||
59
user/config/nvim/lua/u/options.lua
Normal file
59
user/config/nvim/lua/u/options.lua
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
vim.g.mapleader = ' '
|
||||
vim.g.maplocalleader = ' '
|
||||
|
||||
vim.g.have_nerd_font = true
|
||||
|
||||
vim.opt.number = true
|
||||
|
||||
vim.opt.mouse = 'a'
|
||||
|
||||
vim.opt.showmode = false
|
||||
|
||||
vim.schedule(function()
|
||||
vim.opt.clipboard = 'unnamedplus'
|
||||
end)
|
||||
|
||||
vim.opt.shiftwidth = 2
|
||||
vim.opt.tabstop = 2
|
||||
vim.opt.smartindent = true
|
||||
vim.opt.expandtab = true
|
||||
|
||||
vim.opt.breakindent = true
|
||||
|
||||
vim.opt.undofile = true
|
||||
|
||||
vim.opt.ignorecase = true
|
||||
vim.opt.smartcase = true
|
||||
|
||||
vim.opt.signcolumn = 'yes'
|
||||
|
||||
vim.opt.updatetime = 250
|
||||
|
||||
vim.opt.timeoutlen = 300
|
||||
|
||||
vim.opt.splitright = true
|
||||
vim.opt.splitbelow = true
|
||||
|
||||
vim.opt.list = true
|
||||
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' }
|
||||
|
||||
vim.opt.inccommand = 'split'
|
||||
|
||||
vim.opt.cursorline = true
|
||||
|
||||
vim.opt.scrolloff = 8
|
||||
|
||||
vim.api.nvim_create_autocmd('TextYankPost', {
|
||||
desc = 'Highlight when yanking (copying) text',
|
||||
group = vim.api.nvim_create_augroup('highlight-yank', { clear = true }),
|
||||
callback = function()
|
||||
vim.highlight.on_yank()
|
||||
end,
|
||||
})
|
||||
|
||||
local statusline = require('mini.statusline')
|
||||
statusline.setup()
|
||||
statusline.section_location = function()
|
||||
return '%2l:%-2v'
|
||||
end
|
||||
vim.cmd.colorscheme 'tokyonight-storm'
|
||||
Loading…
Reference in a new issue