dotfiles/dot_vimrc
2020-07-18 18:19:25 +02:00

216 lines
7.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

set nocompatible " be iMproved, required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" Git plugin not hosted on GitHub
Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
" Plugin "file:///$HOME/Code/"
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Install L9 and avoid a Naming conflict if you've already installed a
" different version somewhere else.
Plugin 'ascenator/L9', {'name': 'newL9'}
" Check syntax in Vim asynchronously and fix files, with Language Server Protocol (LSP) support
Plugin 'dense-analysis/ale'
" A Vim plugin for visually displaying indent levels in code
Plugin 'nathanaelkane/vim-indent-guides'
Plugin 'gmarik/vundle'
" Syntastic is a syntax checking plugin
Plugin 'scrooloose/syntastic'
" A vim plugin to access cheat.sh sheets
Plugin 'dbeniamine/cheat.sh-vim'
" basic vim/terraform integration
Plugin 'hashivim/vim-terraform'
" A solid language pack for Vim. support for kotlin, terraform, groovy, ...
Plugin 'sheerun/vim-polyglot'
" A code-completion engine for Vim
Plugin 'Valloric/YouCompleteMe'
" lean & mean status/tabline for vim that's light as air
Plugin 'vim-airline/vim-airline'
" fugitive.vim: A Git wrapper so awesome, it should be illegal
Plugin 'tpope/vim-fugitive'
" A tree explorer plugin for vim.
Plugin 'scrooloose/nerdtree'
" A plugin of NERDTree showing git status
Plugin 'Xuyuanp/nerdtree-git-plugin'
" Vim plugin for intensely nerdy commenting powers
" In order to use it for instance, for commenting a block of text... do as :
" - Select several lines (using <V>)
" - Press <SPACE> then <cs>
Plugin 'preservim/nerdcommenter'
" A Vim plugin which shows a git diff in the gutter (sign column) and stages/undoes hunks and partial hunks.
Plugin 'airblade/vim-gitgutter'
" Jenkinsfile DSL Vim Syntax
Plugin 'martinda/jenkinsfile-vim-syntax'
" integrate Grep search tools with Vim
Plugin 'yegappan/grep'
" The plug-in visualizes undo history and makes it easier to browse and switch between different undo
Plugin 'mbbill/undotree'
" Intelligently reopen files at your last edit position
Plugin 'farmergreg/vim-lastplace'
" Add icons to your plugins
Plugin 'ryanoasis/vim-devicons'
" Prettier to auto format some files
Plugin 'mitermayer/vim-prettier'
" All of your Plugins must be added before the following line
call vundle#end()
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList - lists configured plugins
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line
" nerdtree options
let NERDTreeMinimalUI = 1
let NERDTreeDirArrows = 1
" vim-airline options
let g:airline_powerline_fonts = 1
" vim-gitgutter options
set updatetime=100
" have indent guides enabled by default by vim-indent-guides plugin
let g:indent_guides_enable_on_vim_startup = 1
let g:indent_guides_start_level = 2
let g:indent_guides_guide_size = 1
" vim-terraform options
let g:terraform_fmt_on_save=1
" dense-analysis/ale options
let g:ale_history_log_output = 1
let g:ale_use_global_executables = 1
let g:ale_fix_on_save = 1
let g:ale_completion_enabled = 1
let g:ale_open_list = 1
"\ 'yaml': ['prettier'],
let g:ale_fixers = {
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
\ 'python': ['black'],
\ 'rust': ['rustfmt'],
\ 'Jenkinsfile': ['checkci'],
\ 'sh' : ['shfmt'],
\ 'zsh' : ['shfmt'],
\}
let g:ale_linters = {'zsh': ['shellcheck'], 'text': ['writegood', 'proselint', 'alex']}
" when running at every change you may want to disable quickfix
let g:prettier#quickfix_enabled = 1
let g:prettier#quickfix_auto_focus = 1
let g:prettier#config#print_width = '30'
let g:prettier#exec_cmd_path = "/usr/local/bin/prettier"
let g:prettier#autoformat = 0
let g:prettier#autoformat_require_pragma = 0
"autocmd TextChanged,InsertLeave *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue,*.yaml,*.html PrettierAsync
" Enable syntax highlighting
syntax on
" Enable line numbers
set number
" Enable desert theme
colorscheme desert
" Always show status line
set laststatus=2
" Highlight unwanted spaces :
" 1. highlight trailing whitespace in red
" 2. have this highlighting not appear whilst you are typing in insert mode
" 3. have the highlighting of whitespace apply when you open new buffers
highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()
" Dont create backups when editing files in certain directories
set backupskip=/tmp/*,/private/tmp/*
" Ignore case of searches
set ignorecase
" Highlight current line
set cursorline
" Highlight dynamically as pattern is typed
set incsearch
" Highlight searches
set hlsearch
" Disable error bells
set noerrorbells
" Dont show the intro message when starting Vim
set shortmess=atI
" Show the filename in the window titlebar
set title
" Start scrolling three lines before the horizontal window border
set scrolloff=3
" Enable auto indent
set autoindent
" show existing tab with 4 spaces width
set tabstop=4
" when indenting with '>', use 4 spaces width
set shiftwidth=4
" On pressing tab, insert 4 spaces
set expandtab
" Default colors for highlighting search result
hi Search ctermfg=White
hi Search ctermbg=DarkMagenta
" test cheat.sh integration with VIM
" In any source file, type a query "e.g : how to append ... in python" then
" exit insert mode, and press <SPACE> then <KK>
let mapleader=" "
" map a specific key or shortcut to open NERDTree
map <C-n> :NERDTreeToggle<CR>
let g:netrw_liststyle = 3
" remove the default banner
let g:netrw_banner = 0
" set the width of directory explorer
let g:netrw_winsize = 25
" open files in a new tab
let g:netrw_browse_split = 4
let g:syntastic_javascript_checkers = [ 'jshint' ]
let g:syntastic_ocaml_checkers = ['merlin']
let g:syntastic_python_checkers = ['pylint']
let g:syntastic_shell_checkers = ['shellcheck']
let g:syntastic_yaml_checkers = ['yamllint']
let g:syntastic_vim_checkers = ['vint']
let g:syntastic_zsh_checkers = ['shellcheck']
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
au BufNewFile,BufRead Jenkinsfile setf groovy
au BufRead,BufNewFile *.sh setfiletype sh