Initial Neovim setup

This commit is contained in:
Trevor Vallender 2023-02-24 22:58:57 +00:00
parent 3950978337
commit 2515d68124
4 changed files with 88 additions and 98 deletions

View File

@ -60,8 +60,23 @@
programs.neovim = { programs.neovim = {
enable = true; enable = true;
plugins = [ plugins = with pkgs.vimPlugins; [
pkgs.vimPlugins.packer-nvim telescope-nvim
gruvbox-nvim
nvim-treesitter.withAllGrammars
nvim-web-devicons
nvim-tree-lua
vim-fugitive
git-messenger-vim
nvim-lspconfig
nvim-cmp
cmp-treesitter
cmp-path
cmp-nvim-lsp
cmp-buffer
nvim-dap
nvim-dap-ui
vimwiki
]; ];
}; };
@ -69,6 +84,8 @@
home.file.".tmux.conf".source = ./tmux.conf; home.file.".tmux.conf".source = ./tmux.conf;
xdg.configFile."git/config".source = ./git/config; xdg.configFile."git/config".source = ./git/config;
xdg.configFile."git/config_foxsoft".source = ./git/config_foxsoft; xdg.configFile."git/config_foxsoft".source = ./git/config_foxsoft;
xdg.configFile."nvim/init.lua".source = ./nvim/init.lua;
xdg.configFile."nvim/lua/tsv/remap.lua".source = ./nvim/lua/tsv/remap.lua;
home.file.".ssh/config".source = ./ssh/config; home.file.".ssh/config".source = ./ssh/config;
home.file.".LESS_TERMCAP".source = ./LESS_TERMCAP; home.file.".LESS_TERMCAP".source = ./LESS_TERMCAP;
services.syncthing.enable = true; services.syncthing.enable = true;

49
users/tsv/nvim/init.lua Normal file
View File

@ -0,0 +1,49 @@
require("tsv.remap")
--- Basic stuff
local set = vim.opt
set.autoindent = true
set.tabstop = 2
set.shiftwidth = 2
set.softtabstop = 2
set.expandtab = true
set.number = true
set.relativenumber = true
--- Appearance
set.cursorline = true
vim.o.background = "dark"
require("gruvbox").setup({
transparent_mode = true,
})
vim.cmd([[colorscheme gruvbox]])
-- Nvim-tree
require("nvim-tree").setup({
sort_by = "case_sensitive",
filters = {
dotfiles = true,
},
})
-- Treesitter
require'nvim-treesitter.configs'.setup {
sync_install = false,
auto_install = false,
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
}
-- Completion and LSP
require'cmp'.setup {
sources = {
{ name = 'nvim_lsp' }
}
}
require'lspconfig'.solargraph.setup {}
-- Vimwiki
vim.cmd([[
let g:vimwiki_list = [{'path': '$HOME/notes/', 'syntax': 'markdown', 'ext': '.md'}]
]])

View File

@ -1,96 +0,0 @@
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
endif
" Run PlugInstall if there are missing plugins
autocmd VimEnter * if len(filter(values(g:plugs), '!isdirectory(v:val.dir)'))
\| PlugInstall --sync | source $MYVIMRC
\| endif
call plug#begin()
Plug 'nvim-lua/plenary.nvim'
Plug 'morhetz/gruvbox'
Plug 'preservim/nerdtree'
Plug 'neovim/nvim-lspconfig'
Plug 'hrsh7th/nvim-cmp'
Plug 'nvim-telescope/telescope.nvim'
Plug 'thoughtbot/vim-rspec'
Plug 'tpope/vim-rails'
Plug 'tpope/vim-endwise'
Plug 'ryanoasis/vim-devicons'
call plug#end()
set nocompatible
set showmatch
set ignorecase
set mouse=v
set hlsearch
set incsearch
set tabstop=2
set softtabstop=2
set expandtab
set shiftwidth=2
set autoindent
set number
set relativenumber
set wildmode=longest,list
set cc=80
filetype plugin indent on
set clipboard=unnamedplus
set cursorline
:autocmd ColorScheme * highlight ExtraWhitespace ctermbg=red guibg=red
colorscheme gruvbox
lua << EOF
require'lspconfig'.solargraph.setup{}
local nvim_lsp = require('lspconfig')
-- Use an on_attach function to only map the following keys
-- after the language server attaches to the current buffer
local on_attach = function(client, bufnr)
local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
--Enable completion triggered by <c-x><c-o>
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
-- Mappings.
local opts = { noremap=true, silent=true }
-- See `:help vim.lsp.*` for documentation on any of the below functions
buf_set_keymap('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', opts)
buf_set_keymap('n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts)
buf_set_keymap('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts)
buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
buf_set_keymap('n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
buf_set_keymap('n', '<space>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
buf_set_keymap("n", "<space>f", "<cmd>lua vim.lsp.buf.formatting()<CR>", opts)
end
-- Use a loop to conveniently call 'setup' on multiple servers and
-- map buffer local keybindings when the language server attaches
local servers = { "solargraph" }
for _, lsp in ipairs(servers) do
nvim_lsp[lsp].setup {
on_attach = on_attach,
flags = {
debounce_text_changes = 150,
}
}
end
EOF

View File

@ -0,0 +1,20 @@
vim.g.mapleader = " "
vim.keymap.set("n", "<leader>pv", vim.cmd.Ex)
-- Telescope
local builtin = require('telescope.builtin')
vim.keymap.set('n', '<leader>tf', builtin.find_files, {}) -- Open files
vim.keymap.set('n', '<leader>ts', builtin.live_grep, {}) -- Grep files
vim.keymap.set('n', '<leader>tb', builtin.buffers, {}) -- Neovim buffers
vim.keymap.set('n', '<leader>tr', builtin.resume, {})
-- Git functionality (all start tg)
vim.keymap.set('n', '<leader>tgf', builtin.git_files, {})
vim.keymap.set('n', '<leader>tgc', builtin.git_commits, {})
vim.keymap.set('n', '<leader>tgb', builtin.git_branches, {})
-- Then checkout with CR, track with C-t and rebase with C-r!
-- Fugitive
vim.keymap.set("n", "<leader>gs", vim.cmd.Git);
-- Nvim-tree
vim.keymap.set("n", "<leader>nt", vim.cmd.NvimTreeToggle, {})