summaryrefslogtreecommitdiff
path: root/vim/.vimrc
diff options
context:
space:
mode:
Diffstat (limited to 'vim/.vimrc')
-rw-r--r--vim/.vimrc238
1 files changed, 65 insertions, 173 deletions
diff --git a/vim/.vimrc b/vim/.vimrc
index 7d5f9ff..5b0be7f 100644
--- a/vim/.vimrc
+++ b/vim/.vimrc
@@ -15,12 +15,10 @@ Plug 'PotatoesMaster/i3-vim-syntax'
Plug 'SirVer/ultisnips'
Plug 'airblade/vim-gitgutter'
Plug 'AndrewRadev/splitjoin.vim'
-Plug 'easymotion/vim-easymotion'
Plug 'honza/vim-snippets'
Plug 'jamessan/vim-gnupg', { 'branch': 'main' }
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'junegunn/fzf.vim'
-Plug 'junegunn/goyo.vim'
Plug 'junegunn/gv.vim'
Plug 'junegunn/heytmux'
Plug 'junegunn/vim-easy-align'
@@ -31,7 +29,6 @@ Plug 'justinmk/vim-sneak'
Plug 'kshenoy/vim-signature'
Plug 'lervag/vimtex'
Plug 'machakann/vim-highlightedyank'
-Plug 'majutsushi/tagbar'
Plug 'mg979/vim-visual-multi'
Plug 'neomake/neomake'
Plug 'sjl/Gundo.vim', { 'on' : 'GundoToggle' }
@@ -53,34 +50,28 @@ Plug 'tpope/vim-sensible'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-unimpaired'
Plug 'troydm/zoomwintab.vim'
-let g:zoomwintab_hidetabbar=0
Plug 'vim-scripts/ReplaceWithRegister'
Plug 'vim-scripts/gmsh.vim'
Plug 'wellle/targets.vim'
-
if isdirectory($HOME."/dotfiles/plugins")
- " Plug '~/dotfiles/plugins/vim-remembrall'
+ Plug '~/dotfiles/plugins/vim-remembrall'
Plug '~/dotfiles/plugins/vim-tmux-pilot'
Plug '~/dotfiles/plugins/vim-ripple'
Plug '~/dotfiles/plugins/vim-darjeeling'
Plug '~/dotfiles/plugins/vim-macaw'
endif
-if has("nvim")
- Plug '~/dotfiles/plugins/nvim-i3scratchpad'
-endif
-
if has("nvim") && hostname() != "peuplier"
- Plug 'neovim/nvim-lsp'
+ Plug '~/dotfiles/plugins/nvim-i3scratchpad'
Plug 'neovim/nvim-lspconfig'
+ Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
+ Plug 'nvim-treesitter/playground'
endif
" Colors
Plug 'altercation/vim-colors-solarized'
-Plug 'KKPMW/sacredforest-vim'
Plug 'junegunn/seoul256.vim'
Plug 'romainl/Apprentice'
-Plug 'arcticicestudio/nord-vim'
Plug 'JuliaEditorSupport/julia-vim'
" Plug 'axvr/zepl.vim'
call plug#end()
@@ -89,22 +80,16 @@ call plug#end()
" Toggles
nnoremap cpg :GitGutterToggle<cr>
-nnoremap cpn :NERDTreeToggle<cr>
-nnoremap cpt :TagbarToggle<cr>
nnoremap cpu :GundoToggle<cr>
-nnoremap <expr> cp Remembrall('cp')
" Fuzzy finder
-nnoremap <c-p>a :Ag
nnoremap <c-p>b :Buffers<cr>
-nnoremap <c-p>C :Colors<cr>
nnoremap <c-p>f :Files<cr>
nnoremap <c-p>g :GitFiles<cr>
nnoremap <c-p>r :History<cr>
nnoremap <c-p>: :History:<cr>
nnoremap <c-p>/ :History/<cr>
nnoremap <c-p>l :BLines<cr>
-
nnoremap <a-b> :Buffers<cr>
nnoremap <a-f> :Files<cr>
nnoremap <a-g> :GitFiles<cr>
@@ -124,7 +109,6 @@ let g:VM_maps["Select Cursor Up"] = "<M-k>"
function! Call_heytmux(vm)
call feedkeys(":'[,']Heytmux! ")
endfunction
-
nnoremap <silent> gh :set opfunc=Call_heytmux<cr>g@
xnoremap <silent> gh :Heytmux!<cr>
@@ -141,8 +125,8 @@ nnoremap ,pc :PlugClean<cr>
" Remembrall
if &runtimepath =~ 'remembrall'
- let g:remembrall_auto_accept = 0
- nnoremap <buffer> <nowait> <expr> ,p Remembrall(',p')
+ let g:remembrall_auto_accept = 1
+ nnoremap <silent> <buffer> <nowait> <expr> ,p Remembrall(',p')
nnoremap <silent> <expr> ,, Remembrall('')
augroup remembrall
autocmd FileType tex nnoremap <buffer> <silent> <expr> ,l Remembrall(',l')
@@ -187,9 +171,6 @@ let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
let g:UltiSnipsJumpForwardTrigger="<tab>"
let g:UltiSnipsListSnippets="<c-l>"
-" let g:UltiSnipsSnippetDirectories=['UltiSnips']
-" let g:UltiSnipsSnippetsDir="~/.vim/mySnippets"
-" let g:UltiSnipsUsePythonVersion=3
" Vimtex
let g:vimtex_fold_enabled=1 " Makes %s slow!
@@ -225,15 +206,20 @@ let g:pilot_mode='wintab'
"" Vim variables {{{1
let g:netrw_bufsettings='relativenumber'
+
+" Latex configuration
let g:tex_conceal= ''
let g:tex_flavor='latex'
+augroup latex
+ autocmd FileType tex let b:surround_124 = "\\lvert \r \\rvert"
+augroup END
+
"" Vim options {{{1
set backup
set undofile
set backupdir^=~/.vim/backup//
set directory^=~/.vim/swap//
-set undodir^=~/.vim/undo//
" ^= : prepends to list
" // : store absolute path
@@ -287,42 +273,48 @@ nnoremap N Nzz
nnoremap <silent> <Plug>AddWhiteSpaceAfter a <Esc>h:silent call repeat#set("\<Plug>AddWhiteSpaceAfter")<cr>
nnoremap <silent> <Plug>AddWhiteSpaceBefore i <Esc>l:silent call repeat#set("\<Plug>AddWhiteSpaceBefore")<cr>
-
nmap ]w <Plug>AddWhiteSpaceAfter
nmap [w <Plug>AddWhiteSpaceBefore
nnoremap <Leader>w :update<cr>
nnoremap <Leader>q :q<cr>
nnoremap <Leader>d :bd!<cr>
-nnoremap <nowait> <c-d> :q<cr>
+nnoremap <c-d> :q<cr>
nnoremap ,bd :ls<cr>:bd<space>
-nnoremap ,te :tabedit<space>
nnoremap gl :+tabmove<cr>
nnoremap gh :-tabmove<cr>
-nnoremap ,t0 :tabmove 0<cr>
-nnoremap ,t$ :tabmove<cr>
+" Delete cache
nnoremap <Leader>c :call delete($HOME."/.vim/swap/".substitute(expand('%:p'), '/', '%', 'g').".swp")<cr>
+
+" Dispatch
nnoremap <Leader>r :Start %:p<cr>
nnoremap <Leader>R :Start! %:p<cr>
+" Quickfix
nnoremap cqo :copen<cr>
nnoremap cqh :colder<cr>
nnoremap cqc :cclose<cr>
+" Terminal and file manager
nnoremap got :call system('urxvt -cd '.shellescape(getcwd()).' &')<cr>
nnoremap goT :call system('urxvt -cd '.shellescape(expand("%:p:h")).' &')<cr>
nnoremap gof :call system('urxvt -e vifm '.shellescape(getcwd()).' '.shellescape(getcwd()).' &')<cr>
nnoremap goF :call system('urxvt -e vifm '.shellescape(expand("%:p:h")).' '.shellescape(expand("%:p:h")).' &')<cr>
+" Header files
nnoremap \h :e %:p:s,.hpp$,.X123X,:s,.cpp$,.hpp,:s,.X123X$,.cpp,<cr>
+
+" Make Y behave like C, D
nnoremap Y y$
+" Formatting
nnoremap <Leader>fw :%s/\s\+$//<cr>
nnoremap <Leader>ft :%s/^ \+//g<cr>
+" Swap <c-p>/<c-n> and <up>/<down>
cnoremap <c-p> <up>
cnoremap <c-n> <down>
cnoremap <up> <c-p>
@@ -330,10 +322,12 @@ cnoremap <down> <c-n>
" Alternate file
nnoremap <bs> 
+
+" Buffers
nnoremap + :Buffers<cr>
" Align
-nnoremap <F2> vip:EasyAlign * <bar><cr>:w<cr>
+nnoremap yA vip:EasyAlign * <bar><cr>:w<cr>
" Source current file
nnoremap ,s :source %<cr>
@@ -354,13 +348,11 @@ nmap co yo
"" Autocommands {{{1
augroup vimrc
autocmd!
- " autocmd ColorScheme * highlight String ctermfg=192 guifg=#d7ff87
- " autocmd ColorScheme * highlight Folded ctermbg=23 ctermfg=185 guibg=#005f5f guifg=#d7d75f
autocmd BufWritePost *vimrc,*exrc :call feedkeys(":source %\<cr>")
autocmd BufNewFile,Bufread /tmp/mutt-* setlocal tw=72
autocmd BufWritePre *
\ if !isdirectory(expand('<afile>:p:h')) |
- \ call mkdir(expand('<afile>:p:h'), 'p') |
+ \ call mkdir(expand('<afile>:p:h'), 'p') |
\ endif
" Detect filetypes (! 'setf freefem' does not override...)
@@ -392,105 +384,6 @@ nnoremap ,cs :colorscheme seoul256<cr>
set notermguicolors
colo darjeeling
-"" My search {{{1
-
-" http://vim.wikia.com/wiki/Searching_for_files
-function! MySearch(...)
- let l:prevgrepprg=&grepprg
- let l:prevgrepformat=&grepformat
- if a:1 == "Rg"
- set grepprg=rg\ -uu\ --vimgrep
- set grepformat=%f:%l:%c:%m
- elseif a:1 == "Gnufind"
- set grepprg=find\ .\ -name
- set grepformat=%f
- elseif a:1 == "Gitfind"
- set grepprg=git\ ls-files\ -i\ -x
- set grepformat=%f
- endif
- execute 'silent grep!' a:2 | cwindow | redraw!
- let &grepprg=l:prevgrepprg
- let &grepformat=l:prevgrepformat
-endfun
-
-command! -nargs=+ -complete=file_in_path Rg call MySearch("Rg", <q-args>)
-command! -nargs=+ -complete=file_in_path Gnufind call MySearch("Gnufind", <q-args>)
-command! -nargs=+ -complete=file_in_path Gitfind call MySearch("Gitfind", <q-args>)
-command! -nargs=+ -complete=file_in_path GitGrep execute 'silent Ggrep!' <q-args> | cw | redraw!
-command! -nargs=+ -complete=file_in_path VimGrep execute 'silent vimgrep!' <q-args> | cw | redraw!
-
-" Default search and find programs
-function! FillSearch(...)
- if a:0 == 0
- let l:filltext = ""
- else
- let l:is_visual=(a:1 == "v")
- let l:line=getline(l:is_visual ? "'<" : "'[")
- let [line1,col1] = getpos(l:is_visual ? "'<" : "'[")[1:2]
- let [line2,col2] = getpos(l:is_visual ? "'>" : "']")[1:2]
- let l:filltext =l:line[col1 - 1: col2 - 1]
- endif
- call feedkeys(':' . g:my_fillprg . ' "' . l:filltext . '"'."\<Left>")
-endfunction
-
-let g:my_searchprgs = ['Rg', 'GitGrep', 'VimGrep']
-let g:my_findprgs = ['Gnufind', 'Gitfind']
-let g:my_searchprg = 0
-let g:my_findprg = 0
-
-nnoremap <silent> g/ :let g:my_fillprg=g:my_searchprgs[g:my_searchprg]<cr>:set opfunc=FillSearch<cr>g@
-nnoremap <silent> ,g :let g:my_fillprg=g:my_searchprgs[g:my_searchprg]<cr>:call FillSearch()<cr>
-xnoremap <silent> ,g :<c-u>let g:my_fillprg=g:my_searchprgs[g:my_searchprg]<cr>:call FillSearch(visualmode())<cr>
-nnoremap <silent> ,f :let g:my_fillprg=g:my_findprgs[g:my_findprg]<cr>:call FillSearch()<cr>
-
-" Cycle search / find prgs
-nnoremap <silent> cog :let g:my_searchprg=(g:my_searchprg+1)%len(g:my_searchprgs)<cr>:let &ro = &ro<cr>
-nnoremap <silent> cof :let g:my_findprg=(g:my_findprg+1)%len(g:my_findprgs)<cr>:let &ro = &ro<cr>
-
-"" Status line {{{1
-function! Mixed_indent()
- let l:spaces=search('\v(^ +)','n')
- let l:tabs=search('\v(^\t+)','n')
- return (l:spaces * l:tabs > 0)
-endfunction
-
-function! GlobalCwd()
- return getcwd(-1, -1)
-endfunction
-
-function! TabCwd(number)
- if haslocaldir(-1, a:number)
- return getcwd(-1, a:number)
- endif
- return ""
-endfunction
-
-function! WinCwd()
- if haslocaldir(0)
- return getcwd()
- endif
- return ""
-endfunction
-
-set showtabline=2
-let g:tabprefix = ""
-let g:tablabel = "%N%{flagship#tabmodified()} %{TabCwd(v:lnum) != '' ? pathshorten(TabCwd(v:lnum)) : ''}"
-let g:flagship_skip = 'FugitiveStatusline'
-
-augroup myflags
- autocmd!
- autocmd CmdwinEnter,BufEnter,BufRead,BufWritePost * let b:trailing=search('\s\+$','n')
- autocmd CmdwinEnter,BufEnter,BufRead,BufWritePost * let b:mixed=Mixed_indent()
- autocmd User Flags call Hoist("buffer", "%{FugitiveHead('') != '' ? '['.FugitiveHead('').']' : ''}")
- autocmd User Flags call Hoist("buffer", "%{b:trailing?'[tw]':''}")
- autocmd User Flags call Hoist("buffer", "%{b:mixed?'[mixed]':''}")
- autocmd User Flags call Hoist("buffer", "%{&paste?'[paste]':''}")
- autocmd User Flags call Hoist("window", "%{WinCwd() != '' ? '['.WinCwd().']' : ''}")
-
- highlight MyGlobals ctermfg=255 ctermbg=240
- autocmd User Flags call Hoist("global", {"hl": "MyGlobals"}, "[%{pathshorten(GlobalCwd())}, %{g:my_searchprgs[g:my_searchprg]}, %{g:my_findprgs[g:my_findprg]}]")
-augroup END
-
"" Neovim {{{1
if has("nvim")
nnoremap goh :let @a=getcwd() \| lcd %:h \| terminal<cr>:execute 'lcd '.@a<cr>A
@@ -500,45 +393,44 @@ if has("nvim")
nnoremap <Leader>t :b term \| norm A<cr>
endif
+if has("nvim")
+lua <<EOF
+require'nvim-treesitter.configs'.setup {
+highlight = { enable = true },
+incremental_selection = { enable = true },
+textobjects = { enable = true },
+}
+EOF
+endif
+
"" Experimental {{{1
-" if has("nvim") && hostname() != "peuplier"
-" lua require'nvim_lsp'.pyls.setup{}
-" autocmd Filetype python setlocal omnifunc=v:lua.vim.lsp.omnifunc
-" nnoremap <expr> <c-g> Remembrall('<c-g>')
-" nnoremap <silent> <c-g>h <cmd>lua vim.lsp.buf.hover()<cr>
-" nnoremap <silent> <c-g>a <cmd>lua vim.lsp.buf.declaration()<cr>
-" nnoremap <silent> <c-g>d <cmd>lua vim.lsp.buf.definition()<cr>
-" nnoremap <silent> <c-g>i <cmd>lua vim.lsp.buf.implementation()<cr>
-" nnoremap <silent> <c-g>s <cmd>lua vim.lsp.buf.signature_help()<cr>
-" nnoremap <silent> <c-g>t <cmd>lua vim.lsp.buf.type_definition()<cr>
-" nnoremap <silent> <c-g><c-g> <cmd>lua vim.lsp.stop_client(vim.lsp.get_active_clients())<cr>
-" endif
-
-function! s:remove_leading_whitespaces(code)
- " Check if the first line is indented
- let leading_spaces = matchstr(a:code, '^\s\+')
-
- if leading_spaces == ""
- return a:code
- endif
-
- " Calculate indentation
- let indentation = strlen(leading_spaces)
-
- " Remove further indentations
- return substitute(a:code, '\(^\|\r\zs\)\s\{'.indentation.'}', "", "g")
-endfunction
+if has("nvim") && hostname() != "peuplier"
+try
+ " lua require('lspconfig').pyls.setup{}
+ " lua require('lspconfig').julials.setup{}
+ " autocmd Filetype python setlocal omnifunc=v:lua.vim.lsp.omnifunc
+ autocmd Filetype julia setlocal omnifunc=v:lua.vim.lsp.omnifunc
+ nnoremap <silent> <expr> <c-g> Remembrall('<c-g>')
+ nnoremap <silent> <c-g>h <cmd>lua vim.lsp.buf.hover()<cr>
+ nnoremap <silent> <c-g>a <cmd>lua vim.lsp.buf.declaration()<cr>
+ nnoremap <silent> <c-g>d <cmd>lua vim.lsp.buf.definition()<cr>
+ nnoremap <silent> <c-g>i <cmd>lua vim.lsp.buf.implementation()<cr>
+ nnoremap <silent> <c-g>s <cmd>lua vim.lsp.buf.signature_help()<cr>
+ nnoremap <silent> <c-g>t <cmd>lua vim.lsp.buf.type_definition()<cr>
+ nnoremap <silent> <c-g><c-g> <cmd>lua vim.lsp.stop_client(vim.lsp.get_active_clients())<cr>
+catch
+ echom "Error with LPS configuration"
+endtry
+endif
+" Tests {{{1
let g:ripple_repls = {
- \ "python": ["ipython", "\<esc>[200~", "\<esc>[201~", 1, function('s:remove_leading_whitespaces')],
- \ "r": "radian"
- \ }
-
-" let g:ripple_repls = {
-" \ "python": ["ipython", "", "", 1]
-" \ }
-
-
-" let g:ripple_repls = { "python": ["ipython", "\<esc>", "\<esc>\<cr>", 1] }
-
-autocmd FileType tex let b:surround_124 = "\\lvert \r \\rvert"
+ \ "python": {
+ \ "command": "ipython",
+ \ "pre": "\<esc>[200~",
+ \ "post": "\<esc>[201~",
+ \ "addcr": 1,
+ \ "filter": function('ripple#remove_leading_whitespaces'),
+ \ },
+ \ "r": "radian"
+ \ }