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 ) " - Press then 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' " read man pages from vim, e.g : SuperMan ls. inspired by https://catonmat.net/read-man-pages-with-vim Plugin 'jez/vim-superman' " 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 = 0 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\+\%#\@', use 4 spaces width set shiftwidth=4 " On pressing tab, insert 4 spaces set expandtab " Enable spell checking set spell " 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 then let mapleader=" " " map a specific key or shortcut to open NERDTree map :NERDTreeToggle 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