summaryrefslogtreecommitdiff
path: root/.vimrc
blob: fc1332ddf8b3f63557ff070383f2ecac497b1083 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
" 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 = ","

" 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

set guifont=6x13:h13

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_gopls_enabled = 1
let g:go_def_mode = "gopls"
let g:go_info_mode = "gopls"
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"
let g:go_list_type = "quickfix"

"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>l <Plug>(go-meta-lint)
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

" python and yaml formatting:
autocmd filetype python,yaml set ts=2 sts=2 sw=2 et

:set wrap
:set linebreak
:set nolist
:set formatoptions-=t
" noremap <M-v> :!cscope -1 <cword>

" noremap <M-a> :!cscope -0 <cword>

" noremap <M-f> :!cscope -7 <cfile>


" Paragraph format / unformat
" 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,^#,,
"hi MatchParen term=reverse ctermbg=magenta ctermfg=none
" hi MatchParen cterm=reverse term=reverse ctermfg=white
"

" Fix spell highlighting
hi clear SpellBad
hi SpellBad cterm=underline
hi SpellBad gui=undercurl

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>

""""""""""""" 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

noremap <leader>s :cs find s <C-R>=expand("<cword>")<CR><CR><tab>
noremap <leader>g :cs find g <C-R>=expand("<cword>")<CR><CR><tab>
noremap <leader>c :cs find c <C-R>=expand("<cword>")<CR><CR><tab>
noremap <leader>t :cs find t <C-R>=expand("<cword>")<CR><CR><tab>
noremap <leader>e :cs find e <C-R>=expand("<cword>")<CR><CR><tab>
noremap <leader>i :cs find i <C-R>=expand("<cfile>")<CR><CR><tab>
" noremap <leader>f :cs find f <C-R>=expand("<cfile>")<CR><CR><tab>
noremap <leader>d :cs find d <C-R>=expand("<cword>")<CR><CR><tab>

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>

" NERDTree settings
let g:NERDTreeNodeDelimiter = "\u00a0"
" autocmd BufWinEnter * if getcmdwintype() == '' | silent NERDTreeMirror | endif
nnoremap <leader>n :NERDTreeFocus<CR>
" nnoremap <C-r> :NERDTreeFind<CR>
nnoremap <C-n> :NERDTreeMirror<CR>:NERDTreeFocus<CR>