summaryrefslogtreecommitdiff
path: root/.vimrc
diff options
context:
space:
mode:
authorMarc Vertes <mvertes@free.fr>2025-01-21 08:31:56 +0100
committerMarc Vertes <mvertes@free.fr>2025-01-21 08:31:56 +0100
commitbac7296bb38bb46b51e4fd70c5fe234f2a58d553 (patch)
tree84cf6cb71eb8a483f31483761a5ba2cf54e14296 /.vimrc
parent351a23a8b81766d7aba3bfb469f049348d13d2ec (diff)
fix for multiple platform
Diffstat (limited to '.vimrc')
-rw-r--r--.vimrc146
1 files changed, 111 insertions, 35 deletions
diff --git a/.vimrc b/.vimrc
index f8fce87..6f6f664 100644
--- a/.vimrc
+++ b/.vimrc
@@ -1,55 +1,62 @@
+" General vim defaults
" set background=
-set t_te= t_ti= laststatus=2
-
+" 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
+"set mouse=a
syntax off
filetype on
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
-let g:vimki_lower = "a-zàçéèêếëîïñôöùûü"
autocmd filetype vimki syntax on
autocmd filetype vimki set autowrite
-autocmd filetype vimki setlocal spell spelllang=fr
+" autocmd filetype vimki setlocal spell spelllang=fr
autocmd filetype vimki nmap <leader>z :FZF ~/Wiki<CR>
+" autocmd filetype markdown,text,vimki setlocal textwidth=72
-autocmd filetype vimki nnoremap <leader>= YpVr=
-autocmd filetype vimki nnoremap <leader>- YpVr-
-
-" 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 = "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
let g:netrw_browsex_viewer = "open"
let g:netrw_gx = "<cWORD>"
let g:netrw_banner = 0
-autocmd filetype javascript,html,json,yaml set ts=2 sts=2 sw=2 et
+" python and yaml formatting:
+" autocmd filetype python,yaml set ts=2 sts=2 sw=2 et
-" :set wm=2 linebreak
-" :set term=ansi
-":set modeline
-":set modelines=5
-set autoindent
-"set breakindent
-" :set ts=2 sw=2 sts=2 et
:set wrap
:set linebreak
:set nolist
@@ -59,13 +66,15 @@ set autoindent
" 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
"
@@ -79,3 +88,70 @@ noremap <leader>n :bn<cr>
noremap <leader><leader> :bd<cr>
noremap <leader>o :!open <cWORD>&<cr><cr>
noremap <C-g> :tag <c-r><c-w><cr>
+noremap <C-p> :Files<cr>
+
+" 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
+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
+
+" 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>