.vimrc 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. """""""""""""""""""""""""""""""""""""
  2. " Capella .vimrc
  3. """""""""""""""""""""""""""""""""""""
  4. set nocompatible
  5. filetype off
  6. " Install vim-plug if not present
  7. if empty(glob('~/.vim/autoload/plug.vim'))
  8. silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
  9. \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  10. endif
  11. call plug#begin('~/.vim/plugged')
  12. " ------Plugins-------
  13. Plug 'vim-airline/vim-airline'
  14. Plug 'vim-airline/vim-airline-themes'
  15. Plug 'scrooloose/nerdtree'
  16. Plug 'tpope/vim-fugitive'
  17. Plug 'kristijanhusak/vim-multiple-cursors'
  18. Plug 'tpope/vim-surround'
  19. Plug 'jistr/vim-nerdtree-tabs'
  20. Plug 'iwonbigbro/vim-hybrid'
  21. Plug 'dense-analysis/ale'
  22. Plug 'junegunn/fzf'
  23. Plug 'junegunn/fzf.vim'
  24. Plug 'sheerun/vim-polyglot'
  25. Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
  26. Plug 'tpope/vim-commentary'
  27. call plug#end()
  28. filetype plugin indent on
  29. if has('syntax') && !exists('g:syntax_on')
  30. syntax enable
  31. endif
  32. """""""""""""""""""""""""""""""""""""
  33. " Configuration Section
  34. """""""""""""""""""""""""""""""""""""
  35. set laststatus=2
  36. set ruler
  37. set showcmd
  38. set wildmenu
  39. set autoread
  40. set backspace=indent,eol,start
  41. " Show line numbers
  42. set number
  43. set relativenumber
  44. set noruler
  45. set cursorline
  46. set scrolloff=8
  47. set hidden
  48. set noerrorbells
  49. set signcolumn=yes
  50. set updatetime=100
  51. " Encoding
  52. set encoding=utf-8
  53. " Set Proper Tabs
  54. set tabstop=4
  55. set shiftwidth=4
  56. set smarttab
  57. set expandtab
  58. set listchars=tab:▒░,trail:▓
  59. set list
  60. " Search
  61. set hlsearch
  62. set incsearch
  63. set ignorecase
  64. set smartcase
  65. nnoremap <silent> <Esc><Esc> :let @/=""<CR>
  66. " Clipboard
  67. set clipboard=unnamedplus
  68. " Theme and Styling
  69. set t_Co=256
  70. set background=dark
  71. " Vim-Airline Configuration
  72. let g:airline#extensions#tabline#enabled = 1
  73. let g:airline_theme='badwolf'
  74. let g:airline_powerline_fonts = 1
  75. set guifont=Source\ Code\ Pro\ for\ Powerline
  76. set t_Co=256
  77. let g:NERDTreeDirArrowExpandable = '▸'
  78. let g:NERDTreeDirArrowCollapsible = '▾'
  79. """""""""""""""""""""""""""""""""""""
  80. " Colors
  81. """""""""""""""""""""""""""""""""""""
  82. colorscheme hybrid
  83. hi MatchParen cterm=bold ctermbg=none ctermfg=yellow
  84. hi ColorColumn ctermbg=232 guibg=#2c2d27
  85. autocmd FileType nerdtree setlocal colorcolumn&
  86. let &colorcolumn="".join(range(81,999),",")
  87. set splitright
  88. let g:NERDTreeDirArrows=0
  89. """""""""""""""""""""""""""""""""""""
  90. " Golang
  91. """""""""""""""""""""""""""""""""""""
  92. " Optional: Auto-detect templates within generic .html files
  93. function! DetectGoHtmlTmpl()
  94. if expand('%:e') == "html" && search("{{") != 0
  95. setfiletype gohtmltmpl
  96. endif
  97. endfunction
  98. augroup filetypedetect
  99. au BufRead,BufNewFile *.html call DetectGoHtmlTmpl()
  100. augroup END
  101. autocmd Filetype go command! -bang A call go#alternate#Switch(<bang>0, 'edit')
  102. autocmd Filetype go command! -bang AV call go#alternate#Switch(<bang>0, 'vsplit')
  103. autocmd Filetype go command! -bang AS call go#alternate#Switch(<bang>0, 'split')
  104. autocmd Filetype go command! -bang AT call go#alternate#Switch(<bang>0, 'tabe')
  105. map <C-l> :cnext<CR>
  106. map <C-k> :cprevious<CR>
  107. map gd :ALEGoToDefinition<CR>
  108. nnoremap <leader>a :cclose<CR>
  109. autocmd FileType go nmap <leader>b <Plug>(go-build)
  110. autocmd FileType go nmap <leader>r <Plug>(go-run)
  111. " Persistent undo
  112. set undofile
  113. set undodir=~/.vim/undodir
  114. set spell spelllang=en_gb
  115. hi SpellBad cterm=underline ctermfg=NONE ctermbg=NONE gui=undercurl guisp=red
  116. let g:ale_fix_on_save = 1
  117. let g:ale_completion_enabled = 1
  118. let g:ale_echo_msg_format = '[%linter%]% [code]% %s'
  119. let g:ale_sign_error = '✗'
  120. let g:ale_sign_warning = '⚠️'
  121. let g:ale_sign_column_always = 1
  122. let g:ale_fixers = {
  123. \ 'go': ['gofmt', 'gofumpt', 'goimports', 'golines', 'trim_whitespace'],
  124. \ 'html': ['prettier', 'trim_whitespace'],
  125. \ 'gohtmltmpl': ['prettier'],
  126. \ 'python': [
  127. \ 'autoflake',
  128. \ 'ruff',
  129. \ 'ruff_format',
  130. \ 'add_blank_lines_for_python_control_statements'
  131. \ ]
  132. \}
  133. let g:ale_linters= {
  134. \ 'go': ['gopls', 'golangci-lint'],
  135. \ 'python': ['pyright','ruff']
  136. \}
  137. let g:ale_python_auto_pipenv = 1
  138. call ale#linter#Define('mycc', {
  139. \ 'name': 'mycc',
  140. \ 'lsp': 'stdio',
  141. \ 'executable': '/home/capella/repos/gitlab.com/capella/mycc/final/mycc-lsp',
  142. \ 'command': '%e',
  143. \ 'project_root': '/home/capella/repos/gitlab.com/capella/mycc/programs',
  144. \})