dotfiles/dot_vimrc

220 lines
7.3 KiB
Plaintext
Raw Normal View History

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.
2019-11-09 11:31:50 +00:00
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'
2019-11-09 12:34:55 +00:00
" basic vim/terraform integration
Plugin 'hashivim/vim-terraform'
2019-11-09 12:46:10 +00:00
" A solid language pack for Vim. support for kotlin, terraform, groovy, ...
Plugin 'sheerun/vim-polyglot'
2019-11-09 13:25:50 +00:00
" A code-completion engine for Vim
2019-11-09 13:12:28 +00:00
Plugin 'Valloric/YouCompleteMe'
2019-11-09 13:25:50 +00:00
" 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'
2019-11-09 13:50:53 +00:00
" A tree explorer plugin for vim.
2019-11-09 13:25:50 +00:00
Plugin 'scrooloose/nerdtree'
2019-11-09 13:55:51 +00:00
" 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'
" Enable OpenAI based text completion
Plugin 'jessfraz/openai.vim'
" TabNine for code completion
Plugin 'zxqfl/tabnine-vim'
2019-11-09 13:12:28 +00:00
" All of your Plugins must be added before the following line
2019-11-09 11:31:50 +00:00
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
2019-11-09 14:31:38 +00:00
" nerdtree options
let NERDTreeMinimalUI = 1
let NERDTreeDirArrows = 1
" vim-airline options
let g:airline_powerline_fonts = 1
2019-11-09 13:50:53 +00:00
" vim-gitgutter options
set updatetime=100
2019-11-09 11:31:50 +00:00
" 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
2019-11-09 12:34:55 +00:00
" vim-terraform options
let g:terraform_fmt_on_save=1
2019-11-09 12:22:05 +00:00
" dense-analysis/ale options
let g:ale_history_log_output = 1
let g:ale_use_global_executables = 1
2019-12-01 11:01:19 +00:00
let g:ale_fix_on_save = 1
let g:ale_completion_enabled = 1
let g:ale_open_list = 1
"\ 'yaml': ['prettier'],
2019-11-09 12:22:05 +00:00
let g:ale_fixers = {
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
\ 'python': ['black'],
2019-12-01 11:01:19 +00:00
\ 'rust': ['rustfmt'],
\ 'Jenkinsfile': ['checkci'],
\ 'sh' : ['shfmt'],
\ 'zsh' : ['shfmt'],
2019-11-09 12:22:05 +00:00
\}
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
2019-03-01 10:14:29 +00:00
syntax on
" Enable line numbers
2019-03-01 21:17:53 +00:00
set number
" Enable desert theme
2019-03-01 21:17:53 +00:00
colorscheme desert
" Always show status line
2019-03-01 21:17:53 +00:00
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
2019-10-13 11:31:52 +00:00
" Enable auto indent
2019-10-13 11:26:46 +00:00
set autoindent
2019-09-23 07:54:20 +00:00
" 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=" "
2019-11-09 13:25:50 +00:00
" 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