I was reading an article about tools to write python using VIM with good formatting. I am not a pro-user of VIM neither a pro-python programmer but I would like to be more efficient and write better formatted python code.
So this is the link I was reading and ended here for the specific details.
At the end, my goal is to use more often inside VIM: splits (:sp), nerdtree (file browsing), autocompletion, git and be sure my code is formatted automatically if I make a mistake.
So I enabled most of the plugins from the article although I made some tweaks for me normal usage (I already had enabled some pluggins for jinja2). This is my .vimrc
:
set nocompatible " be iMproved, required filetype off " required " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim " https://realpython.com/vim-and-python-a-match-made-in-heaven/#syntax-checkinghighlighting set splitbelow set splitright "split navigations nnoremapnnoremap nnoremap nnoremap " Enable folding set foldmethod=indent set foldlevel=99 " Enable folding with the spacebar nnoremap za " Automatic formating for tab, whitespace and max 80 chars per line, etc au BufNewFile,BufRead *.py \ set tabstop=4 | \ set softtabstop=4 | \ set shiftwidth=4 | \ set textwidth=79 | \ set expandtab | \ set autoindent | \ set fileformat=unix highlight BadWhitespace ctermbg=red guibg=darkred au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/ set encoding=utf-8 let python_highlight_all=1 " VUNDLE PLUGINGS 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' " added nerdtree Plugin 'scrooloose/nerdtree' Plugin 'ctrlp.vim' Plugin 'Jinja' Plugin 'tmhedberg/SimpylFold' Plugin 'vim-scripts/indentpython.vim' Plugin 'vim-syntastic/syntastic' Plugin 'nvie/vim-flake8' Plugin 'tpope/vim-fugitive' Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'} " Keep Plugin commands between vundle#begin/end. " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required syntax on nmap :NERDTreeToggle " 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 au BufNewFile,BufRead *.lmx set filetype=xml au BufNewFile,BufRead *.dump set filetype=sql au BufNewFile,BufRead *.j2 set filetype=jinja "for case-insensitve searches" set ignorecase "Override the 'ignorecase' option if the search pattern contains upper" "case characters. Only used when the search pattern is typed and" "'ignorecase' option is on." set smartcase " I want to be able to resize the splits quickly so I want the mouse on set mouse=a " Always show statusline - This makes powerline always on set laststatus=2 " autocmd vimenter * NERDTree
BTW, a quick reference for NerdTree (file browser) here.
Let’s see how I get on with these changes.