let g:loaded_netrw = 1 let g:loaded_netrwPlugin = 1 if filereadable('/etc/hostname') let hostname=join(readfile('/etc/hostname')) else let hostname='unknown' endif let g:vsnip_snippet_dir = "~/.config/nvim/snippets" let g:vsnip_snippet_dirs = ["~/.config/nvim/local/snippets"] call plug#begin() if filereadable(printf('%s/.config/nvim/local-plug.vim', $HOME)) exec "source " . printf('%s/.config/nvim/local-plug.vim', $HOME) endif Plug 'dylnmc/synstack.vim' Plug 'folke/trouble.nvim' Plug 'google/vim-codefmt' Plug 'google/vim-glaive' Plug 'google/vim-maktaba' Plug 'hrsh7th/cmp-buffer' Plug 'hrsh7th/cmp-nvim-lsp' Plug 'hrsh7th/cmp-nvim-lua' Plug 'hrsh7th/cmp-path' Plug 'hrsh7th/cmp-vsnip' Plug 'hrsh7th/nvim-cmp' Plug 'hrsh7th/vim-vsnip' Plug 'kyazdani42/nvim-web-devicons' Plug 'neovim/nvim-lspconfig' Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} Plug 'nvim-treesitter/playground' Plug 'onsails/lspkind.nvim' Plug 'nvim-tree/nvim-tree.lua' Plug 'vim-airline/vim-airline' Plug 'nvim-lua/plenary.nvim' Plug 'nvim-telescope/telescope.nvim' Plug 'nvim-treesitter/nvim-treesitter-textobjects' Plug 'stevearc/aerial.nvim' Plug 'tpope/vim-surround' Plug 'lukas-reineke/indent-blankline.nvim' Plug 'git://git.josher.dev/fieldmarshal.vim.git' if has('rneovim') Plug 'git://git.josher.dev/rneovim-userregs.git' endif Plug 'git@git.josher.dev:config.vim.git', \ { 'dir': g:plug_home . '/config.vim', \ 'do': ':UpdateInitVimHook' } call plug#end() command! UpdateInitVimHook source ~/.config/nvim/init.vim PlugInstall set termguicolors set shiftwidth=2 set tabstop=2 set expandtab set nowrap set splitright set splitbelow set wildmode=longest,list,full set scrolloff=8 set number set relativenumber let mapleader=" " " Make splitting more congruent with how Tmux does it. noremap % v noremap " s " Open a terminal in a split below the current file. noremap sterm " Opens a terminal in the directory the current file is in. noremap sTERM " Fix the yank behavior. noremap Y y$ " Format code. This is noremap ú FormatCode " Synstack to help profile syntax highlighting issues. noremap p (SynStack) " Way to find files. noremap ff Telescope find_files inoremap (vsnip-expand) " When navigating to the beginning of a line, I want to always reset the screen " to the leftmost position. noremap ^ ^zH noremap t TroubleToggle augroup InitVim au! autocmd BufRead *.java,*.c,*.cpp,*.cxx,*.hs TSBufEnable highlight " Automatically start insert mode when opening a new terminal. autocmd TermOpen * startinsert " When entering a terminal, automatically start "insert" and feed the escape " key. This ensures the ZSH line-reader is in "normal" mode. I have " integration with zsh to navigate vim panes from the zsh line editor. autocmd BufEnter term://* startinsert | call feedkeys("\x1b") autocmd TextYankPost * \ lua require'vim.highlight'.on_yank( \ { higroup = "IncSearch", timeout = 100 }); augroup END " Local configuration that can be set by hostname or just a local configuration. " Local files are ignored by .gitignore so they won't be added to the repo, " allowing local (*cough* work) configuration to be separate from general " configuration. if isdirectory(printf('%s/.config/nvim/%s', $HOME, hostname)) exec "set rtp+=" . printf('%s/.config/nvim/%s', $HOME, hostname) endif if isdirectory(printf('%s/.config/nvim/local', $HOME)) exec "set rtp+=" . printf('%s/.config/nvim/local', $HOME) endif if filereadable(printf('%s/.config/nvim/%s.vim', $HOME, hostname)) exec "source " . printf('%s/.config/nvim/%s.vim', $HOME, hostname) endif if filereadable(printf('%s/.config/nvim/local.vim', $HOME)) exec "source " . printf('%s/.config/nvim/local.vim', $HOME) endif if isdirectory(printf('%s/.config/nvim/after', $HOME)) exec "set rtp+=" . printf('%s/.config/nvim/after', $HOME) endif noremap nt NvimTreeToggle noremap :e =expand('%:h')/ noremap . lua require('windownav').goto_terminal() noremap I lua require('windownav').goto_initvim() noremap ' lua require('windownav').goto_lastwin() set textwidth=80 set colorcolumn=+1 if has('rneovim') function! HighlightColorColumns() abort hi MyColorColumn guifg=#3a3a3a guibg=none gui=None hi MyRedColorColumn guifg=#5a1a1a guibg=none gui=None endfunction call HighlightColorColumns() " This is my patched version of neovim. if has('fancycolorcol') set colorcolumn=+1/│/MyColorColumn/b,+20/│/MyRedColorColumn/ else hi! link ColorColumn MyColorColumn set fillchars+=colorcol:│ endif augroup InitVim au ColorScheme * call HighlightColorColumns() augroup END endif " Opens a terminal in the directory of the current file. command! TERM exec "term sh -c 'cd " . expand('%:p:h') . " && exec $SHELL'" " W = w. I often click when typing :w command! W w let g:indentLine_char = '┆' lua << EOF function remove_package(str) for k, v in pairs(package.loaded) do if string.match(k, "^" .. str) then package.loaded[k] = nil end end end -- CiderLSP vim.opt.completeopt = { "menu", "menuone", "noselect" } require("lsp") require("lspconfig") -- Diagnostics require("diagnostics") require("nvim-tree").setup() require("treesitter-textobjects-setup") require('telescope').setup({ defaults = { layout_strategy = "center", results_title = false, sorting_strategy = "ascending", layout_config = { center = { width = 0.5, height = 0.5, }, -- other layout configuration here }, -- other defaults configuration here }, -- other configuration values here }) require("indent_blankline").setup { -- for example, context is off by default, use this to turn it on show_current_context = true, show_current_context_start = faels, char_highlight_list = { "MyColorColumn" } } require('aerial').setup({ -- optionally use on_attach to set keymaps when aerial has attached to a buffer on_attach = function(bufnr) -- Jump forwards/backwards with '{' and '}' vim.keymap.set('n', '{', 'AerialPrev', {buffer = bufnr}) vim.keymap.set('n', '}', 'AerialNext', {buffer = bufnr}) end }) -- You probably also want to set a keymap to toggle aerial vim.keymap.set('n', 'a', 'AerialToggle!') EOF