summaryrefslogtreecommitdiff
path: root/.vimrc
diff options
context:
space:
mode:
Diffstat (limited to '.vimrc')
-rw-r--r--.vimrc157
1 files changed, 100 insertions, 57 deletions
diff --git a/.vimrc b/.vimrc
index cf4a9e4..dc87c60 100644
--- a/.vimrc
+++ b/.vimrc
@@ -1,8 +1,10 @@
" General vim defaults
" set background=
-"set t_te= t_ti=
+" set t_te= t_ti=
set ls=1 ruler
set ai ts=4 sw=4 noet
+" Not a good idea to activate mouse, as it disables cut & paste in MacOS
+>>>>>>> 6d506e0b30569c547f41f6d6334a1b5133774da4
"set mouse=a
syntax off
filetype on
@@ -10,37 +12,44 @@ filetype plugin on
filetype plugin indent on
let mapleader = ","
+" Save all files at the same place
+set backupdir=~/.vim/backup//
+set directory=~/.vim/backup//
+set undodir=~/.vim/backup//
+set undofile
+set backup
+
+" set autochdir
+
+" ignore case when searching, except mixing upper and lower
+set ignorecase
+set smartcase
+
+" No bell
+set belloff=all
+
+" For MacVim
+set guifont=6x13:h13
+
+" fzf plugin
"set rtp+=/opt/homebrew/opt/fzf
let g:fzf_preview = 'cat {}'
+" set grepprg=rg\ --vimgrep\ --smart-case\ --hidden\ --follow
+
+" nnoremap \ :Rg<CR>
+" nnoremap <C-T> :Files<cr>
+nnoremap <Leader>b :Buffers<cr>
+nnoremap <Leader>s :Blines<cr>
+
" vimki plugin
autocmd filetype vimki syntax on
autocmd filetype vimki set autowrite
" autocmd filetype vimki setlocal spell spelllang=fr
autocmd filetype vimki nmap <leader>z :FZF ~/Wiki<CR>
+" autocmd filetype markdown,text,vimki setlocal textwidth=72
-" vim-go plugin
-"let g:go_def_mode = "gopls"
-"let g:go_info_mode = "gopls"
-"let g:go_list_type = "quickfix"
-"let g:go_fmt_command = "gopls"
-"let g:go_gopls_gofumpt = 1
-
-let g:go_gopls_enabled = 0
-let g:go_def_mode = "godef"
-let g:go_fmt_command = "goimports"
-let g:go_metalinter_command = "golangci-lint"
-"autocmd FileType go syntax on
-autocmd FileType go nmap <leader>b <Plug>(go-build)
-autocmd FileType go nmap <leader>i <Plug>(go-info)
-autocmd FileType go nmap <leader>r <Plug>(go-run)
-autocmd FileType go nmap <leader>t <Plug>(go-test)
-autocmd FileType go nmap <leader>f <Plug>(go-test-func)
-autocmd FileType go nmap <leader>v <Plug>(go-referrers)
-autocmd FileType go nmap <leader>n :cnext<CR>
-autocmd FileType go nmap <leader>p :cprevious<CR>
-autocmd FileType go nmap <leader>a :cclose<CR>
-" autocmd BufNewFile,BufRead *.go setlocal noexpandtab tabstop=4 shiftwidth=4
+autocmd BufNewFile,BufRead *.go setlocal noexpandtab tabstop=4 shiftwidth=4
let g:netrw_browsex_viewer = "xdg-open"
let g:netrw_gx = "<cWORD>"
@@ -58,13 +67,15 @@ autocmd filetype python,yaml set ts=2 sts=2 sw=2 et
" noremap <M-f> :!cscope -7 <cfile>
" Paragraph format / unformat
-noremap <leader>f !}fmt
-noremap <leader>F !}fmt -c -w 2048
+" An alternate way is to use "gqip" to format.
+" noremap <leader>f !}fmt -72 -s -p
+" noremap <leader>F !}fmt -c -w 2048
+noremap <leader>f gqip
" noremap <buffer> K :s,^,//,
" noremap <buffer> <C-K> :s,^//,,
-noremap <buffer> # :s,^,#,
-noremap <buffer> @ :s,^#,,
+" noremap <buffer> # :s,^,#,
+" noremap <buffer> @ :s,^#,,
"hi MatchParen term=reverse ctermbg=magenta ctermfg=none
" hi MatchParen cterm=reverse term=reverse ctermfg=white
"
@@ -80,36 +91,68 @@ noremap <leader>o :!xdg-open <cWORD>&<cr><cr>
noremap <C-g> :tag <c-r><c-w><cr>
noremap <C-p> :Files<cr>
-""""""""""""" My cscope/vim key mappings
- "
- " The following maps all invoke one of the following cscope search types:
- "
- " 's' symbol: find all references to the token under cursor
- " 'g' global: find global definition(s) of the token under cursor
- " 'c' calls: find all calls to the function name under cursor
- " 't' text: find all instances of the text under cursor
- " 'e' egrep: egrep search for the word under cursor
- " 'f' file: open the filename under cursor
- " 'i' includes: find files that include the filename under cursor
- " 'd' called: find functions that function under cursor calls
-
-if has("cscope")
- set csto=0
- set cst
- set nocsverb
- if filereadable("cscope.out")
- cs add cscope.out
- elseif $CSCOPE_DB
- cs add $CSCOPE_DB
+" MacOS: Open QuickLook on current file (for markdown preview mainly)
+noremap <leader>w :!ql %<CR><CR>
+
+function! CloseOnLast()
+let cnt = 0
+for i in range(0, bufnr("$"))
+if buflisted(i)
+ let cnt += 1
endif
- set csverb
+endfor
+ if cnt <= 1
+ q
+else
+ bd
endif
+endfunction
+
+noremap <leader><leader> :call CloseOnLast()<cr>
+
+" vim-lsp settings
+let g:lsp_diagnostics_enabled = 0
+let g:lsp_document_code_action_signs_enabled = 0
+let g:lsp_document_highlight_enabled = 0
+
+if executable('gopls')
+ au User lsp_setup call lsp#register_server({
+ \ 'name': 'gopls',
+ \ 'cmd': {server_info->['gopls', '-remote=auto']},
+ \ 'allowlist': ['go', 'gomod', 'gohtmltmpl', 'gotexttmpl'],
+ \ })
+ autocmd BufWritePre *.go
+ \ call execute('LspDocumentFormatSync') |
+ \ call execute('LspCodeActionSync source.organizeImports')
+endif
+
+if executable('clangd')
+ au User lsp_setup call lsp#register_server({
+ \ 'name': 'clangd',
+ \ 'cmd': {server_info->['clangd', '-background-index']},
+ \ 'whitelist': ['c', 'cpp', 'objc', 'objcpp'],
+ \ })
+endif
+
+function! s:on_lsp_buffer_enabled() abort
+ setlocal omnifunc=lsp#complete
+ if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif
+ nmap <buffer> gd <plug>(lsp-definition)
+ nmap <buffer> gs <plug>(lsp-document-symbol-search)
+ nmap <buffer> gS <plug>(lsp-workspace-symbol-search)
+ nmap <buffer> gr <plug>(lsp-references)
+ nmap <buffer> gi <plug>(lsp-implementation)
+ nmap <buffer> gt <plug>(lsp-type-definition)
+ nmap <buffer> <leader>rn <plug>(lsp-rename)
+ nmap <buffer> [g <plug>(lsp-previous-diagnostic)
+ nmap <buffer> ]g <plug>(lsp-next-diagnostic)
+ nmap <buffer> K <plug>(lsp-hover)
+endfunction
+
+augroup lsp_install
+ au!
+ autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
+augroup END
-nmap <leader>cs :cs find s <C-R>=expand("<cword>")<CR><CR>
-nmap <leader>cg :cs find g <C-R>=expand("<cword>")<CR><CR>
-nmap <leader>cc :cs find c <C-R>=expand("<cword>")<CR><CR>
-nmap <leader>ct :cs find t <C-R>=expand("<cword>")<CR><CR>
-nmap <leader>ce :cs find e <C-R>=expand("<cword>")<CR><CR>
-nmap <leader>ci :cs find i <C-R>=expand("<cfile>")<CR><CR>
-nmap <leader>cf :cs find f <C-R>=expand("<cfile>")<CR><CR>
-nmap <leader>cd :cs find d <C-R>=expand("<cword>")<CR><CR>
+" Git blame
+command! Blame normal!:let @a=expand('%')<CR>:let @b=line('.')<CR>:new<CR>:set bt=nofile<CR>:%!git blame -wM --date=short <C-R>a<CR>:<C-R>b<CR>