Initial Neovim setup
This commit is contained in:
parent
3950978337
commit
2515d68124
|
@ -60,8 +60,23 @@
|
|||
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
plugins = [
|
||||
pkgs.vimPlugins.packer-nvim
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
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;
|
||||
xdg.configFile."git/config".source = ./git/config;
|
||||
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.".LESS_TERMCAP".source = ./LESS_TERMCAP;
|
||||
services.syncthing.enable = true;
|
||||
|
|
|
@ -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'}]
|
||||
]])
|
|
@ -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
|
||||
|
|
@ -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, {})
|
Loading…
Reference in New Issue