update vim config yet again

This commit is contained in:
Thomas Ruoff
2021-10-30 00:14:06 +02:00
parent eb3137ddf4
commit e055444bf3

View File

@@ -2,13 +2,19 @@
" author: Thomas Ruoff " author: Thomas Ruoff
" Basics {{{ " Basics {{{
set encoding=utf-8 if has('vim_starting')
set encoding=utf-8
scriptencoding utf-8
set clipboard& clipboard^=unnamed,unnamedplus
endif
set hidden set hidden
set ttyfast set ttyfast
set lazyredraw set lazyredraw
set updatetime=300 set updatetime=300
set synmaxcol=512 set synmaxcol=2000
set modeline set modeline
@@ -20,23 +26,13 @@ set mousehide
set wildmode=list:longest,full set wildmode=list:longest,full
set wildignore+=*.swp,*.bak,*.jpg,*.gif,*.png,*.git, set wildignore+=*.swp,*.bak,*.jpg,*.gif,*.png,*.git,
set wildignore+=**/node_modules/**
set splitright set splitright
set splitbelow set splitbelow
" Always show the status line
set laststatus=2
set cmdheight=2
set shortmess+=c set shortmess+=c
" yank delete change and put operations go by default in `"+` register
" so in the systems clipboard accessable by CTRL-V on all OS types
if has('mac')
set clipboard^=unnamed
else
set clipboard^=unnamedplus
endif
" set ignorecase " set ignorecase
set infercase set infercase
@@ -65,139 +61,64 @@ set showmatch
set spellcapcheck= set spellcapcheck=
set complete+=kspell set complete+=kspell
let mapleader=" " if has('vim_starting')
let maplocalleader=" " let g:mapleader="\<Space>"
let g:maplocalleader=";"
nnoremap <Space> <Nop>
xnoremap <Space> <Nop>
nnoremap , <Nop>
xnoremap , <Nop>
nnoremap ; <Nop>
xnoremap ; <Nop>
endif
" netrw " netrw
let g:netrw_fastbrowse = 0
let g:netrw_banner = 0 let g:netrw_banner = 0
let g:netrw_liststyle = 3
let g:netrw_browse_split = 3
" sort is affecting only: directories on the top, files below " sort is affecting only: directories on the top, files below
let g:netrw_sort_sequence = '[\/]$,*' let g:netrw_sort_sequence = '[\/]$,*'
" }}} " }}}
" Plugins {{{ " Plugins {{{
call plug#begin('~/.vim/plugged') call plug#begin(has('nvim') ? stdpath('data') . '/plugged' : '~/.vim/plugged')
Plug 'tpope/vim-sensible' Plug 'tpope/vim-sensible'
Plug 'tpope/vim-unimpaired' Plug 'tpope/vim-unimpaired'
Plug 'tpope/vim-surround' Plug 'tpope/vim-surround'
Plug 'tpope/vim-abolish' Plug 'tpope/vim-abolish'
Plug 'tpope/vim-vinegar'
Plug 'tpope/vim-projectionist'
Plug 'tpope/vim-fugitive' Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-rhubarb'
Plug 'airblade/vim-gitgutter'
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } Plug 'andymass/vim-matchup'
Plug 'junegunn/fzf.vim'
nnoremap <leader>b :Buffers<cr>
nnoremap <leader>f :GFiles<cr>
nnoremap <leader>F :Files<cr>
nnoremap <leader>c :Commits<cr>
nnoremap <leader>w :Windows<cr>
nnoremap <leader>m :Maps<cr>
nnoremap <leader>h :Helptags<cr>
nnoremap <leader>/ :Rg<cr>
nnoremap <leader>* :Rg <C-r><C-a><cr>
nnoremap <leader>C :Commands<cr>
Plug 'junegunn/vim-peekaboo'
Plug 'machakann/vim-highlightedyank' Plug 'machakann/vim-highlightedyank'
Plug 'editorconfig/editorconfig-vim' Plug 'editorconfig/editorconfig-vim'
let g:EditorConfig_exclude_patterns = ['fugitive://.*', 'scp://.*'] let g:EditorConfig_exclude_patterns = ['fugitive://.*', 'scp://.*']
Plug 'tpope/vim-projectionist'
Plug 'mbbill/undotree' Plug 'mbbill/undotree'
nnoremap <leader>u :UndotreeToggle<cr>
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" Remap keys for gotos
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
" Use `[d` and `]d` to navigate diagnostics
nmap <silent> [d <Plug>(coc-diagnostic-prev)
nmap <silent> ]d <Plug>(coc-diagnostic-next)
" Remap for rename current word
nmap <leader>rn <Plug>(coc-rename)
" Remap for do codeAction of current line
nmap <leader>ac <Plug>(coc-codeaction)
" Applying codeAction to the selected region.
" Example: `<leader>aap` for current paragraph
xmap <leader>a <Plug>(coc-codeaction-selected)
nmap <leader>a <Plug>(coc-codeaction-selected)
" Fix autofix problem of current line
nmap <leader>qf <Plug>(coc-fix-current)
" Use <c-space> to trigger completion.
if has('nvim')
inoremap <silent><expr> <c-space> coc#refresh()
else
inoremap <silent><expr> <c-@> coc#refresh()
endif
" Make <CR> auto-select the first completion item and notify coc.nvim to
" format on enter, <cr> could be remapped by other vim plugin
inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm()
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
" Use K to show documentation in preview window.
nnoremap <silent> K :call <SID>show_documentation()<CR>
function! s:show_documentation()
if (index(['vim','help'], &filetype) >= 0)
execute 'h '.expand('<cword>')
elseif (coc#rpc#ready())
call CocActionAsync('doHover')
else
execute '!' . &keywordprg . " " . expand('<cword>')
endif
endfunction
" Formatting selected code.
xmap <leader>cf <Plug>(coc-format-selected)
nmap <leader>cf <Plug>(coc-format-selected)
Plug 'itchyny/lightline.vim'
if filereadable(expand("~/.vim/lightline.vim"))
source ~/.vim/lightline.vim
endif
function! LightlineReload()
call lightline#init()
call lightline#colorscheme()
call lightline#update()
endfunction
Plug 'lifepillar/vim-gruvbox8'
" TODO snippets https://www.lunarvim.org/plugins/02-default-plugins.html#snippets
Plug 'SirVer/ultisnips' Plug 'SirVer/ultisnips'
let g:UltiSnipsExpandTrigger="<S-Tab>"
let g:UltiSnipsJumpForwardTrigger="<c-k>"
let g:UltiSnipsJumpBackwardTrigger="<c-j>"
Plug 'pangloss/vim-javascript' " Plug 'pangloss/vim-javascript'
Plug 'MaxMEllon/vim-jsx-pretty' " Plug 'MaxMEllon/vim-jsx-pretty'
Plug 'sheerun/vim-polyglot' " Plug 'sheerun/vim-polyglot'
let g:polyglot_disabled = ['javascript', 'jsx', 'latex'] " let g:polyglot_disabled = ['javascript', 'jsx', 'latex']
Plug 'lervag/vimtex', { 'for': 'tex' } " Plug 'lervag/vimtex', { 'for': 'tex' }
let g:vimtex_view_method = 'zathura' " let g:vimtex_view_method = 'zathura'
Plug 'wellle/targets.vim' Plug 'wellle/targets.vim'
Plug 'janko-m/vim-test' Plug 'janko-m/vim-test'
nmap <silent> <leader>t :TestNearest<CR>
nmap <silent> <leader>T :TestFile<CR>
let test#strategy = "neovim" let test#strategy = "neovim"
" vim 8 plugins
" if v:version >= 800
" Plug 'ludovicchabant/vim-gutentags' " Plug 'ludovicchabant/vim-gutentags'
" let g:gutentags_cache_dir="~/.tags" " let g:gutentags_cache_dir="~/.tags"
" let g:gutentags_file_list_command = { " let g:gutentags_file_list_command = {
@@ -206,21 +127,105 @@ Plug 'janko-m/vim-test'
" \ '.hg': 'hg files', " \ '.hg': 'hg files',
" \ }, " \ },
" \ } " \ }
" endif
Plug 'preservim/nerdtree'
nmap <silent> <leader>n :NERDTreeToggle<CR>
nmap <silent> <leader>N :NERDTreeFind<CR>
Plug 'ap/vim-css-color' Plug 'ap/vim-css-color'
Plug 'godlygeek/tabular' Plug 'godlygeek/tabular'
Plug 'plasticboy/vim-markdown' Plug 'plasticboy/vim-markdown'
Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && yarn install' }
" Lua Plugins
Plug 'RRethy/nvim-base16'
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
Plug 'neovim/nvim-lspconfig'
Plug 'jose-elias-alvarez/null-ls.nvim'
Plug 'kabouzeid/nvim-lspinstall'
"Plug 'tamago324/nlsp-settings.nvim'
Plug 'folke/trouble.nvim'
Plug 'kyazdani42/nvim-web-devicons' " for file icons
Plug 'kyazdani42/nvim-tree.lua'
Plug 'ahmedkhalf/project.nvim'
Plug 'nvim-lua/plenary.nvim'
Plug 'nvim-telescope/telescope.nvim'
nnoremap <leader>f :Telescope find_files<cr>
Plug 'lewis6991/gitsigns.nvim'
Plug 'windwp/nvim-autopairs'
Plug 'folke/which-key.nvim'
" TODO compnletion https://github.com/hrsh7th/nvim-cmp
Plug 'hoob3rt/lualine.nvim'
" debug " debug
Plug 'tweekmonster/startuptime.vim' " Plug 'tweekmonster/startuptime.vim'
call plug#end() call plug#end()
lua << EOF
require('nvim-treesitter.configs').setup{
hightlight = { enabled = true },
incremental_selection = { enable = false },
ensure_installed = {'javascript'}
}
require("null-ls").config({ })
require("lspconfig")["null-ls"].setup({ })
require('lspinstall').setup{}
local servers = require('lspinstall').installed_servers()
for _, server in pairs(servers) do
require'lspconfig'[server].setup{}
end
require("trouble").setup{}
require'nvim-web-devicons'.setup{}
require('nvim-tree').setup{}
require('project_nvim').setup{}
require('telescope').setup{}
-- require('telescope').load_extension('projects')
require('gitsigns').setup{}
require('nvim-autopairs').setup{}
local wk = require('which-key')
wk.setup()
wk.register({
c = {"<cmd>bd<cr>", "close"},
s = "save",
h = "gitsigns",
f ={
name = "file",
f = { "<cmd>Telescope find_files<cr>", "Find File" },
r = { "<cmd>Telescope oldfiles<cr>", "Open Recent File" },
c = { "<cmd>e $MYVIMRC<cr>", "Open config" },
},
g = {
name = "git",
g = {"<cmd>Git<cr>", "fugitive"}
},
t = {
name = "test",
n = {"<cmd>TestNearest<cr>", "Test Nearest"},
f = {"<cmd>TestFile<cr>", "Test File"},
l = {"<cmd>TestLast<cr>", "Test Last"},
}
}, { prefix = "<leader>"})
require('lualine').setup{ theme = 'gruvbox'}
EOF
" }}} " }}}
" Local .vimrc {{{ " Local .vimrc {{{
@@ -261,7 +266,7 @@ set diffopt+=iwhite
" }}} " }}}
" {{{ Undo " {{{ Undo
set undodir=~/.vim/undos,/tmp set undodir=$VIM_DATA_PATH/undos
set undofile set undofile
set undolevels=1000 set undolevels=1000
set undoreload=10000 set undoreload=10000
@@ -271,50 +276,17 @@ set undoreload=10000
" "
set cursorline set cursorline
set background=dark set background=dark
colorscheme gruvbox8 colorscheme base16-gruvbox-dark-medium
set number set number
" }}}
" GUI Settings {{{
if has("gui_running")
"disable menu, toolsbar, scrollbar
set guioptions -=m
set guioptions -=T
set guioptions -=r
endif
" }}} " }}}
" Key mappings {{{ " Key mappings {{{
"" fast escaping "" fast escaping
inoremap jk <ESC> inoremap jk <ESC>
"" toggle fold
"" delete buffer (and keep split) nnoremap <cr> za
noremap <leader>d :bp\|bd #<cr>
"" indent visual selected code without unselecting and going back to normal mode
vnoremap > >gv
vnoremap < <gv
"" Visually select the text that was last edited/pasted
nnoremap gV `[v`]
"" session management (https://dockyard.com/blog/2018/06/01/simple-vim-session-management-part-1)
let g:sessions_dir = '~/.vim/sessions'
exec 'nnoremap <Leader>ss :mks! ' . g:sessions_dir . '/*.vim<C-D><BS><BS><BS><BS><BS>'
exec 'nnoremap <Leader>sr :so ' . g:sessions_dir. '/*.vim<C-D><BS><BS><BS><BS><BS>'
"" fast editing of config
nnoremap <silent> <leader>ev :e $MYVIMRC<cr>
"" cheatsheet
nnoremap <silent> <leader>ec :e ~/.vim/cheatsheet.md<cr>
" debugging, use leader-DD to start, do a slow action, then leader-DQ to
" finish. Your output will be in profile.log
nnoremap <silent> <leader>DD :exe ":profile start profile.log"<cr>:exe ":profile func *"<cr>:exe ":profile file *"<cr>
nnoremap <silent> <leader>DQ :exe ":profile pause"<cr>:noautocmd qall!<cr>
"" abbreviations "" abbreviations
cnoreabbrev W! w! cnoreabbrev W! w!
@@ -327,56 +299,7 @@ cnoreabbrev WQ wq
cnoreabbrev W w cnoreabbrev W w
cnoreabbrev Q q cnoreabbrev Q q
cnoreabbrev Qall qall cnoreabbrev Qall qall
cnoreabbrev csfr csrf
iab xnow <c-r>=strftime("%Y-%m-%d %H:%M")<cr>
" }}}
" Autocmd Rules {{{
augroup general
autocmd!
"" do syntax highlight syncing from start
autocmd BufEnter * :syntax sync fromstart
augroup END
"" txt, mail, tex
augroup text
autocmd!
autocmd FileType text,markdown,mail,tex set wrap wm=2 nocindent spell textwidth=79
augroup END
augroup markdown
autocmd!
autocmd FileType markdown set wrap wm=2 nocindent spell textwidth=79
augroup END
"" Web
augroup web
autocmd!
autocmd FileType javascript map <leader>r <esc>:TernRename<CR>
autocmd BufRead,BufNewFile *.template set filetype=html.mustache syntax=mustache
autocmd BufRead,BufNewFile *.html set spell
augroup END
"" Help
augroup HelpInTabs
autocmd!
autocmd BufEnter *.txt call HelpInNewTab()
augroup END
"Only apply to help files...
function! HelpInNewTab ()
if &buftype == 'help'
"Convert the help window to a tab...
execute "normal \<C-W>T"
endif
endfunction
" Reloading vim
augroup VimReload
autocmd!
autocmd BufWritePost $MYVIMRC source $MYVIMRC | call LightlineReload()
augroup END
" }}} " }}}