" General vim defaults " set background= " 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 = "," set autochdir " Save all files at the same place set backupdir=~/.vim/backup// set directory=~/.vim/backup// set undodir=~/.vim/backup// set undofile set backup " ignore case when searching, except mixing upper and lower set ignorecase set smartcase " No bell set belloff=all " For MacVim augroup tune_colors | au! au ColorScheme * hi Cursor guibg=red guifg=white augroup END set guifont=6x13:h13 set guicursor=a:block-Cursor/lCursor-blinkon0 " Activate man pages display in vim with hyperlink navigation. ru ftplugin/man.vim set keywordprg=:Man nmap q :q " fzf plugin set rtp+=/opt/homebrew/opt/fzf let g:fzf_preview = 'cat {}' set grepprg=rg\ --vimgrep\ --smart-case\ --hidden\ --follow " nnoremap \ :Rg " nnoremap :Files nnoremap b :Buffers nnoremap s :Blines " vimki plugin autocmd filetype vimki syntax on autocmd filetype vimki set autowrite " autocmd filetype vimki setlocal spell spelllang=fr autocmd filetype vimki nmap z :FZF ~/Wiki " autocmd filetype markdown,text,vimki setlocal textwidth=72 " autocmd BufNewFile,BufRead *.md setlocal textwidth=0 wrapmargin=0 wrap linebreak autocmd BufNewFile,BufRead *.go setlocal noexpandtab tabstop=4 shiftwidth=4 autocmd BufNewFile,BufRead *.gno setlocal noexpandtab tabstop=4 shiftwidth=4 autocmd BufNewFile,BufRead *.gno set filetype=gno autocmd Filetype go set mp=go\ build autocmd Filetype sh compiler shellcheck let g:netrw_browsex_viewer = "open" let g:netrw_gx = "" let g:netrw_banner = 0 " python and yaml formatting: autocmd filetype python,yaml setlocal ts=2 sts=2 sw=2 et :set wrap :set linebreak :set nolist :set formatoptions-=t " noremap :!cscope -1 " noremap :!cscope -0 " noremap :!cscope -7 " Paragraph format noremap f gqip " Fix spell highlighting hi clear SpellBad hi SpellBad cterm=underline hi SpellBad gui=undercurl noremap n :bn noremap :bd noremap o :!open & noremap :tag noremap :Files noremap e :cn " go to quickfix next error noremap E :cp " go to quickfix previous error noremap m :make " make " Quickfix window opens automatically if not empty autocmd QuickFixCmdPost [^l]* nested cwindow autocmd QuickFixCmdPost l* nested lwindow " MacOS: Open QuickLook on current file (for markdown preview mainly) noremap w :!ql % 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 :call CloseOnLast() " vim-go settings " let g:go_gopls_enabled = 0 let g:go_gopls_enabled = 1 " let g:go_def_mode = 'godef' " let g:go_referrers_mode = 'godef' " let g:go_fmt_command = 'goimports' " let g:go_imports_mode = 'goimports' " let g:go_rename_command = 'gorename' " " 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 " "let g:lsp_log_verbose = 1 " "let g:lsp_log_file = expand('~/vim-lsp.log') " " 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('gnopls') " au User lsp_setup call lsp#register_server({ " \ 'name': 'gnopls', " \ 'cmd': {server_info->['gnopls']}, " \ 'allowlist': ['gno'], " \ }) " autocmd BufWritePre *.gno " \ 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 gd (lsp-definition) " nmap gs (lsp-document-symbol-search) " nmap gS (lsp-workspace-symbol-search) " nmap gr (lsp-references) " nmap gi (lsp-implementation) " nmap gy (lsp-type-definition) " nmap rn (lsp-rename) " nmap [g (lsp-previous-diagnostic) " nmap ]g (lsp-next-diagnostic) " nmap K (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('%'):let @b=line('.'):new:set bt=nofile:%!git blame -wM --date=short a:b " edit current word as file noremap ge :e " create a tag entry for current filename " noremap gt :!echo "% % 1" >> tags; LC_ALL=C sort -o tags -u tags noremap t :!echo "% % 1" >> tags; LC_ALL=C sort -o tags -u tags noremap  noremap ,,  autocmd BufNewFile,BufRead ~/src/notes/* set autowrite