Dotfiles for different machines on different branches.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

302 lines
8.1 KiB

  1. let mapleader =","
  2. " unmap unwanted commands
  3. nnoremap <F1> <NOP>
  4. nnoremap <F9> <NOP>
  5. nnoremap <F10> <NOP>
  6. nnoremap <F11> <NOP>
  7. nnoremap <F12> <NOP>
  8. inoremap <F2> <NOP>
  9. inoremap <F3> <NOP>
  10. inoremap <F4> <NOP>
  11. inoremap <F5> <NOP>
  12. inoremap <F6> <NOP>
  13. inoremap <F7> <NOP>
  14. inoremap <F8> <NOP>
  15. inoremap <F9> <NOP>
  16. inoremap <F10> <NOP>
  17. inoremap <F11> <NOP>
  18. inoremap <F12> <NOP>
  19. set go=a
  20. " enable mouse for all modes
  21. set mouse=a
  22. set clipboard+=unnamedplus
  23. " enable command completion
  24. set wildmode=longest,list,full
  25. " setting Tab-length
  26. set expandtab
  27. set softtabstop=4
  28. set shiftwidth=4
  29. " splits open at the bottom and right, which is non-retarded, unlike vim defaults.
  30. set splitbelow splitright
  31. " disable case sensitive matching
  32. set ignorecase
  33. " enable nocompatible mode
  34. set nocompatible
  35. " enable Plugins
  36. filetype plugin on
  37. " enable syntax highlighting
  38. syntax on
  39. " enable true colors
  40. set termguicolors
  41. " set utf-8 encoding
  42. set encoding=utf-8
  43. " show relative numbers on left side
  44. set number relativenumber
  45. " speedup vim with long lines
  46. set ttyfast
  47. set lazyredraw
  48. " textEdit might fail without hidden
  49. set hidden
  50. " disable Backupfiles for Lsp
  51. set nobackup
  52. set nowritebackup
  53. " dont pass messages to ins-completion-menu
  54. set shortmess+=c
  55. " always show the signcolumn, otherwise it would shift the text each time
  56. " diagnostics appear/become resolved.
  57. if has("patch-8.1.1564")
  58. " Recently vim can merge signcolumn and number column into one
  59. set signcolumn=number
  60. else
  61. set signcolumn=yes
  62. endif
  63. " enable persistent undo
  64. if has('persistent_undo')
  65. set undofile
  66. set undodir=$XDG_CACHE_HOME/vim/undo
  67. endif
  68. " delete trailing whitespaces on save
  69. fun! TrimWhitespace()
  70. let l:save = winsaveview()
  71. keeppatterns %s/\s\+$//e
  72. call winrestview(l:save)
  73. endfun
  74. autocmd BufWritePre * :call TrimWhitespace()
  75. " disables automatic commenting on newline:
  76. autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
  77. " mapping Dictionaries
  78. nmap <F6> :setlocal spell! spelllang=de_de<CR>
  79. nmap <F7> :set spelllang=en_us<CR>
  80. " compiler for languages
  81. map <leader>c :w! \| !compiler <c-r>%<CR>
  82. " open corresponding file (pdf/html/...)
  83. map <leader>p :!opout <c-r>%<CR><CR>
  84. " shortcut for split navigation
  85. map <C-h> <C-w>h
  86. map <C-j> <C-w>j
  87. map <C-k> <C-w>k
  88. map <C-l> <C-w>l
  89. " copy selected text to system clipboard (requires gvim/nvim/vim-x11 installed):
  90. map <C-p> "+P
  91. vnoremap <C-c> "+y
  92. " save file as sudo on files that require root permission
  93. cnoremap w!! execute 'silent! write !sudo tee % >/dev/null' <bar> edit!
  94. " alias for replacing
  95. nnoremap <leader>ss :%s//gI<Left><Left><Left>
  96. " read files correctly
  97. autocmd BufRead,BufNewFile *.tex set filetype=tex
  98. autocmd BufRead,BufNewFile *.h set filetype=c
  99. " formatting
  100. au FileType c setlocal formatprg=astyle\ --mode=c
  101. au FileType java setlocal formatprg=astyle\ --indent=spaces=2\ --style=google
  102. au FileType java setlocal shiftwidth=2 softtabstop=2
  103. au FileType markdown noremap <F8> :silent %!prettier --stdin-filepath % <CR>
  104. au FileType python setlocal formatprg=autopep8\ -
  105. au FileType tex,latex setlocal formatprg=latexindent\ -
  106. au FileType c,java,python,tex,latex noremap <F8> gggqG
  107. " cleanup certain files after leaving the editor
  108. autocmd VimLeave *.tex !texclear %
  109. autocmd VimLeave *.c !cclear
  110. """ Begin Plugin section
  111. if ! filereadable(expand('~/.config/nvim/autoload/plug.vim'))
  112. echo "Downloading junegunn/vim-plug to manage plugins..."
  113. silent !mkdir -p ~/.config/nvim/autoload/
  114. silent !curl "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > ~/.config/nvim/autoload/plug.vim
  115. autocmd VimEnter * PlugInstall
  116. endif
  117. call plug#begin('~/.local/share/nvim/plugged')
  118. Plug 'airblade/vim-gitgutter' " git upgrades
  119. Plug 'alvan/vim-closetag' " auto close HTML tags
  120. Plug 'donRaphaco/neotex' , {'for': 'tex'} " asynchronous pdf rendering
  121. Plug 'frazrepo/vim-rainbow' " colorized matching brackets
  122. Plug 'junegunn/fzf.vim' " quickly jump files using fzf
  123. Plug 'lervag/vimtex' , {'for' : 'tex'} " tex library for autocompletion
  124. Plug 'majutsushi/tagbar', {'on': 'TagbarToggle'} " show tags
  125. Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'} " autocompletion
  126. Plug 'qpkorr/vim-renamer' " bulk renamer
  127. Plug 'raimondi/delimitmate' " automatic closing of brackets
  128. Plug 'rrethy/vim-hexokinase' , {'do': 'make hexokinase'} " color Preview
  129. Plug 'ryanoasis/vim-devicons' " enable icons for vim
  130. Plug 'scrooloose/nerdtree', {'on': 'NERDTreeToggle'} " filetree
  131. Plug 'sirver/ultisnips' " snippets
  132. Plug 'tomasiser/vim-code-dark' " adding colorscheme
  133. Plug 'tpope/vim-fugitive' " git wrapper
  134. Plug 'tpope/vim-surround' " help for quotes/parantheses
  135. Plug 'uiiaoo/java-syntax.vim' , {'for': 'java'} " better syntax highlight for java than default
  136. Plug 'whonore/coqtail' , {'for': 'v'} " coq interactive proof
  137. call plug#end()
  138. " alvan/vim-closetag
  139. let g:closetag_filenames = '*.html,*.xhtml,*.phtml'
  140. let g:closetag_xhtml_filenames = '*.xhtml,*.jsx'
  141. let g:closetag_filetypes = 'html,xhtml,phtml'
  142. let g:closetag_xhtml_filetypes = 'xhtml,jsx'
  143. let g:closetag_emptyTags_caseSensitive = 1
  144. let g:closetag_regions = {
  145. \ 'typescript.tsx': 'jsxRegion,tsxRegion',
  146. \ 'javascript.jsx': 'jsxRegion',
  147. \ }
  148. let g:closetag_shortcut = '>'
  149. let g:closetag_close_shortcut = '<leader>>'
  150. " donRaphaco/neotex
  151. let g:neotex_enabled = 2
  152. " frazrepo/vim-rainbow
  153. au FileType,BufNewFile,BufRead java,c,cpp,py,h call rainbow#load()
  154. " junegunn/fzf.vim
  155. let $FZF_DEFAULT_COMMAND = 'find . ~ -type f'
  156. nmap <F4> :FZF<CR>
  157. " majutsushi/tagbar
  158. map <F3> :TagbarToggle<CR>
  159. " neoclide/coc.nvim
  160. inoremap <silent><expr> <TAB>
  161. \ pumvisible() ? "\<C-n>" :
  162. \ <SID>check_back_space() ? "\<TAB>" :
  163. \ coc#refresh()
  164. inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
  165. function! s:check_back_space() abort
  166. let col = col('.') - 1
  167. return !col || getline('.')[col - 1] =~# '\s'
  168. endfunction
  169. let g:coc_global_extensions = [
  170. \ 'coc-java',
  171. \ 'coc-markdownlint',
  172. \ 'coc-python',
  173. \ 'coc-sh',
  174. \ 'coc-vimtex',
  175. \ ]
  176. if has('nvim')
  177. inoremap <silent><expr> <c-space> coc#refresh()
  178. else
  179. inoremap <silent><expr> <c-@> coc#refresh()
  180. endif
  181. inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm()
  182. \: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
  183. nmap <silent> gd <Plug>(coc-definition)
  184. nmap <silent> gy <Plug>(coc-type-definition)
  185. nmap <silent> gi <Plug>(coc-implementation)
  186. nmap <silent> gr <Plug>(coc-references)
  187. nnoremap <silent> K :call <SID>show_documentation()<CR>
  188. function! s:show_documentation()
  189. if (index(['vim','help'], &filetype) >= 0)
  190. execute 'h '.expand('<cword>')
  191. elseif (coc#rpc#ready())
  192. call CocActionAsync('doHover')
  193. else
  194. execute '!' . &keywordprg . " " . expand('<cword>')
  195. endif
  196. endfunction
  197. autocmd CursorHold * silent call CocActionAsync('highlight')
  198. nmap <F5> <Plug>(coc-rename)
  199. xmap <leader>f <Plug>(coc-format-selected)
  200. nmap <leader>f <Plug>(coc-format-selected)
  201. augroup mygroup
  202. autocmd!
  203. autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
  204. autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
  205. augroup end
  206. " rrethy/vim-hexokinase
  207. let g:Hexokinase_refreshEvents = ['InsertLeave']
  208. let g:Hexokinase_optInPatterns = [
  209. \ 'full_hex',
  210. \ 'triple_hex',
  211. \ 'rgb',
  212. \ 'rgba',
  213. \ 'hsl',
  214. \ 'hsla',
  215. \ 'color_names'
  216. \]
  217. let g:Hexokinase_highlighters = ['backgroundfull']
  218. autocmd VimEnter * HexokinaseTurnOn
  219. " scrooloose/nerdtree
  220. map <F2> :NERDTreeToggle<CR>
  221. autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
  222. let g:NERDTreeWinPos = "left"
  223. " sirver/ultisnips
  224. let g:UltiSnipsExpandTrigger="<alt-j>"
  225. " tpope/vim-fugitive
  226. nnoremap <leader>ga :Git add %:p<CR><CR>
  227. nnoremap <leader>gd :Git diff<CR>
  228. nnoremap <leader>gc :Gcommit<CR>
  229. nnoremap <leader>go :Git checkout<Space>
  230. nnoremap <leader>gh :diffget //3<CR>
  231. nnoremap <leader>gr :Gread<CR>
  232. nnoremap <leader>gu :diffget //2<CR>
  233. nnoremap <leader>gs :G<CR>
  234. " tomasiser/vim-code-dark
  235. colorscheme codedark
  236. " whonore/coqtail
  237. function g:CoqtailHighlight()
  238. hi def CoqtailChecked ctermfg=2
  239. hi def CoqtailSent ctermfg=2
  240. endfunction
  241. """ end plugin section