[TOC]
You can use modeline in python source file to change Vim's setting. Vim will read top and bottom 3 lines comments and use the comment start with vim: as modeline setting. By do this, opener can use same setting to edit this file. This can avoid mixing of space and tab char in source code.
Add the following line to the top or bottom of your python source file.
#vim: ai ts=4 sts=4 et sw=4 ft=python
I am using following settings in my ~/.vimrc
for python
" Automatic reloading of .vimrcautocmd! bufwritepost .vimrc source %" Better copy & paste" When you want to paste large blocks of code into vim, press F2 before you" paste. At the bottom you should see ``-- INSERT (paste) --``."" set pastetoggle=<F2>"" set clipboard=unnamed" Mouse and backspace"set mouse=a " on OSX press ALT and clickset bs=2 " make backspace behave like normal again" Rebind <Leader> key" I like to have it here becuase it is easier to reach than the default and" it is next to ``m`` and ``n`` which I use for navigating between tabs.let mapleader = ","" Bind nohl" Removes highlight of your last search" ``<C>`` stands for ``CTRL`` and therefore ``<C-n>`` stands for ``CTRL+n``noremap <C-n> :nohl<CR>vnoremap <C-n> :nohl<CR>inoremap <C-n> :nohl<CR>" Quicksave command"" noremap <C-Z> :update<CR>"" vnoremap <C-Z> <C-C>:update<CR>"" inoremap <C-Z> <C-O>:update<CR>" Quick quit command"" noremap <Leader>e :quit<CR> " Quit current window"" noremap <Leader>E :qa!<CR> " Quit all windows" bind Ctrl+<movement> keys to move around the windows, instead of using Ctrl+w + <movement>" Every unnecessary keystroke that can be saved is good for your health :)map <c-j> <c-w>jmap <c-k> <c-w>kmap <c-l> <c-w>lmap <c-h> <c-w>h" easier moving between tabsmap <Leader>n <esc>:tabprevious<CR>map <Leader>m <esc>:tabnext<CR>" map sort function to a keyvnoremap <Leader>s :sort<CR>" easier moving of code blocks" Try to go into visual mode (v), thenselect several lines of code here and" then press ``>`` several times."" vnoremap < <gv " better indentation"" vnoremap > >gv " better indentation" Show whitespace" MUST be inserted BEFORE the colorscheme command"" autocmd ColorScheme * highlight ExtraWhitespace ctermbg=red guibg=red"" au InsertLeave * match ExtraWhitespace /\s\+$/" Color scheme" mkdir -p ~/.vim/colors && cd ~/.vim/colors" wget -O wombat256mod.vim http://www.vim.org/scripts/download_script.php?src_id=13400set t_Co=256color wombat256mod" Enable syntax highlighting" You need to reload this file for the change to applyfiletype offfiletype plugin indent onsyntax on" Showing line numbers and lengthset number " show line numbersset tw=79 " width of document (used by gd)set nowrap " don't automatically wrap on loadset fo-=t " don't automatically wrap text when typingif version > 703set colorcolumn=80endifhighlight ColorColumn ctermbg=233" easier formatting of paragraphsvmap Q gqnmap Q gqap" Useful settingsset history=700set undolevels=700" Real programmers don't use TABs but spacesset tabstop=4set softtabstop=4set shiftwidth=4set shiftroundset expandtab" Make search case insensitiveset hlsearchset incsearchset ignorecaseset smartcase" Disable stupid backup and swap files - they trigger too many events" for file system watchersset nobackupset nowritebackupset noswapfile" Setup Pathogen to manage your plugins" mkdir -p ~/.vim/autoload ~/.vim/bundle" curl -so ~/.vim/autoload/pathogen.vim https://raw.github.com/tpope/vim-pathogen/HEAD/autoload/pathogen.vim" Now you can install any plugin into a .vim/bundle/plugin-name/ foldercall pathogen#infect()" ============================================================================" Python IDE Setup" ============================================================================" Settings for vim-powerline" cd ~/.vim/bundle" git clone git://github.com/Lokaltog/vim-powerline.gitset laststatus=2" Settings for ctrlp" cd ~/.vim/bundle" git clone https://github.com/kien/ctrlp.vim.gitlet g:ctrlp_max_height = 30set wildignore+=*.pycset wildignore+=*_build/*set wildignore+=*/coverage/*" Settings for jedi-vim" sudo easy_install jedi" cd ~/.vim/bundle" git clone git://github.com/davidhalter/jedi-vim.gitlet g:jedi#related_names_command = "<leader>z"let g:jedi#popup_on_dot = 0let g:jedi#popup_select_first = 0map <Leader>b Oimport ipdb; ipdb.set_trace() # BREAKPOINT<C-c>" Better navigating through omnicomplete option list" See http://stackoverflow.com/questions/2170023/how-to-map-keys-for-popup-menu-in-vimset completeopt=longest,menuonefunction! OmniPopup(action)if pumvisible()if a:action == 'j'return "\<C-N>"elseif a:action == 'k'return "\<C-P>"endifendifreturn a:actionendfunctioninoremap <silent><C-j> <C-R>=OmniPopup('j')<CR>inoremap <silent><C-k> <C-R>=OmniPopup('k')<CR>" Python folding" mkdir -p ~/.vim/ftplugin" wget -O ~/.vim/ftplugin/python_editing.vim http://www.vim.org/scripts/download_script.php?src_id=5492set nofoldenable