My vimrc
Below my configuration for vim which I use for go and python development:
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 | cat <<'EOF' > ~/.vimrc
call plug#begin()
Plug 'vim-airline/vim-airline'
Plug 'govim/govim', { 'for': 'go' }
Plug 'preservim/nerdtree'
Plug 'jistr/vim-nerdtree-tabs'
Plug 'tpope/vim-fugitive'
Plug 'jiangmiao/auto-pairs'
if has('nvim')
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
else
Plug 'Shougo/deoplete.nvim'
Plug 'roxma/nvim-yarp'
Plug 'roxma/vim-hug-neovim-rpc'
endif
Plug 'jnurmine/Zenburn'
Plug 'vim-syntastic/syntastic'
Plug 'nvie/vim-flake8'
Plug 'davidhalter/jedi-vim'
Plug 'ycm-core/YouCompleteMe'
call plug#end()
" For YouCompleteMe, see https://github.com/ycm-core/YouCompleteMe/issues/1751
" https://github.com/ycm-core/YouCompleteMe/tree/master#linux-64-bit
" PlugInstall
" cd ~/.vim/plugged/YouCompleteMe
" python3 install.py --clangd-completer
function! Toggles()
:nnoremap <C-g> :NERDTreeTabsToggle<CR>
" switch to tab right / left
:nnoremap <C-l> :tabn<CR>
:nnoremap <C-h> :tabp<CR>
:nnoremap <C-t> :w!<CR>:!aspell check %<CR>:e! %<CR>
endfunction
function! GenericSetup()
set tabstop=4
set shiftwidth=4
set expandtab
" The vim-go autocomplete popup
" will show up below and with only a single line
set splitbelow
set previewheight=1
" Set VIM's working directory always to the current open file.
" autocmd BufEnter * lcd %:p:h
set listchars=tab:▸\ ,eol:¬
" set invlist
set number
set encoding=utf-8
filetype plugin on
" set autochdir
" color scheme
" colorscheme zenburn
colorscheme morning
set colorcolumn=120
endfunction
function! DeopleteSetup()
let g:deoplete#enable_at_startup = 1
let g:deoplete#complete_method = "omnifunc"
call deoplete#custom#option('omni_patterns', {
\ 'go': '[^. *\t]\.\w*',
\})
endfunction
function! AirlineSetup()
" Set full path for vim-airline
let g:airline_section_c = '%F'
endfunction
function! ConfigureYCM()
let g:ycm_filetype_whitelist = { 'c': 1, 'cpp': 1 }
endfunction
call GenericSetup()
call Toggles()
call AirlineSetup()
call ConfigureYCM()
call DeopleteSetup()
EOF
|
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 | cat <<'EOF' > ~/.vim/ftplugin/go.vim
function! GoVimSetup()
autocmd BufNewFile,BufRead *.go setf go
set nocompatible
set nobackup
set nowritebackup
set noswapfile
filetype plugin on
" set mouse=a
" set ttymouse=sgr
set updatetime=500
set balloondelay=250
set signcolumn=yes
autocmd! BufEnter,BufNewFile *.go,go.mod syntax on
autocmd! BufLeave *.go,go.mod syntax off
autocmd! BufWritePost *go !golangci-lint run --no-config --fast %
set autoindent
set smartindent
filetype indent on
set backspace=2
if has("patch-8.1.1904")
set completeopt+=popup
set completepopup=align:menu,border:off,highlight:Pmenu
endif
:nnoremap <C-j> :call GOVIMHover()<CR>
:nnoremap <C-k> :GOVIMReferences<CR>
:inoremap <C-f> <C-o>:GOVIMFillStruct<CR>
:inoremap <C-j> <C-o>:GOVIMExperimentalSignatureHelp<CR>
set colorcolumn=120
" let $GOVIM_GOPLS_FLAGS="-remote=auto; -remote.listen.timeout=12h"
" mappings:
" gd: godef
" <CTRL>-T - go back
" \h: hover information
" \f: Autofill structs
" \r: references
endfunction
call GoVimSetup()
EOF
|
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 | cat <<'EOF' > ~/.vim/ftplugin/python.vim
function! SetupPython()
" Enable syntax highlighting
syntax on
" Set tab width to 4 spaces
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
" Enable line numbers
set number
" Enable filetype detection
filetype plugin on
" Enable automatic indentation
set autoindent
" Enable file type-specific indentation
set smartindent
" Enable Syntastic for code linting
" set statusline+=%#warningmsg#
" set statusline+=%{SyntasticStatuslineFlag()}
" set statusline+=%*
" let g:syntastic_always_populate_loc_list = 1
" let g:syntastic_auto_loc_list = 1
" let g:syntastic_check_on_open = 1
" let g:syntastic_check_on_wq = 0
" Enable Ale for code linting
let g:airline#extensions#ale#enabled = 1
let g:ale_completion_enabled = 1
let b:ale_fixers = ['add_blank_lines_for_python_control_statements', 'eslint', 'autoflake', 'autoimport', 'autopep8', 'black', 'isort', 'pycln', 'pyflyby', 'remove_trailing_lines', 'trim_whitespace']
" Enable Jedi for code completion
let g:jedi#auto_initialization = 1
let g:jedi#popup_select_first = 1
let g:jedi#popup_on_dot = 1
" Set the Flake8 plugin as the Syntastic Python checker
let g:syntastic_python_checkers = ['flake8']
set colorcolumn=80
let g:jedi#goto_assignments_command = "<C-k>"
let g:jedi#goto_command = "gd"
noremap <C-t> <C-o>
endfunction
call SetupPython()
EOF
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 | cat <<'EOF' > ~/.vim/ftplugin/c.vim
function! SetupC()
" Enable syntax highlighting
syntax on
" Enable line numbers
set number
" Enable filetype detection
filetype plugin on
" Enable automatic indentation
set autoindent
" Enable file type-specific indentation
set smartindent
set colorcolumn=80
:nnoremap gd :YcmCompleter GoTo<return>
endfunction
call SetupC()
EOF
|