" Source vimrc on vim startup autocmd! VimEnter * source ~/.vimrc " Load rename plugin so ~/.vim/Rename.vim " Autoindent html " autocmd BufWritePre *.html :normal gg=G " Remove spaces at end of lines autocmd BufWritePre * %s/\s\+$//e " Fold all with leader + f nnoremap f :call ToggleFold() " Set relative line number and number to see current line number " set rnu set number " Show commands as being written set showcmd " Set syntastic settings set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* " Disables syntastic popup window with messages " Set both to 1 to turn it on let g:syntastic_always_populate_loc_list = 0 let g:syntastic_auto_loc_list = 0 " Set xptemplate trigger key to tab let g:xptemplate_key = '' " Autocomplete with Tab "inoremap "inoremap " Python main method snippet "let g:xptemplate_brace_complete = '([{<' let g:xptemplate_minimal_prefix = 1 let g:xptemplate_vars="$author=viktor.barzin" let g:xptemplate_vars="$email=viktor.barzin@samitor.com" " Swap lines nnoremap k :-1,-1m+0k nnoremap j :+0,+0m+1 " Enable folding with spacebar nnoremap za " Toggle NEDRTree plugin noremap :NERDTreeToggle " Make surrounding with various characters easier nmap ' ysiW' nmap " ysiW" nmap 0 ysiW) " Go to normal mode by tapping jk or kj inoremap kj inoremap jk " Easier buffer closing nnoremap q :bd " Swap to previous buffer nnoremap :b# " Map backspace to delete nnoremap h vnoremap d " Save with s noremap s :update " Open NERDTree by default "autocmd VimEnter * NERDTree "autocmd VimEnter * wincmd p " Writes to all buffers when switching to another buffer set autowrite " Enable virtualenv let g:airline#extensions#virtualenv#enabled = 1 " Enable tabs plugin let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#left_sep = ' ' let g:airline#extensions#tabline#left_alt_sep = '|' " Enable wildmenu which is an enhanced command completion set wildmenu " 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= set clipboard=unnamed " Mouse and backspace set mouse=a " on OSX press ALT and click set bs=2 " make backspace behave like normal again " Remember the cursor last position if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif endif " Set comment string for commentary.vim for python set commentstring=#%s " Rebind 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 = "," " I no longer use that because emmet.vim does all I need ""Auto complete HTLM tags "function! s:CompleteTags() " inoremap > >:startinsert!? " inoremap > > " inoremap > >:startinsert!?$ "endfunction "autocmd BufRead,BufNewFile *.html,*.js,*.xml call s:CompleteTags() " Sources $MYVIMRC on changes augroup reload_vimrc " { autocmd! autocmd BufWritePost $MYVIMRC source $MYVIMRC augroup END " } " Set VIMHOME if has('win32') || has ('win64') let $VIMHOME = $VIM."/vimfiles" else let $VIMHOME = $HOME."/.vim" endif " Bind nohl " Removes highlight of your last search " ```` stands for ``CTRL`` and therefore ```` stands for ``CTRL+n`` noremap :nohl vnoremap :nohl inoremap :nohl " Tab switching noremap :b# vnoremap :b# "inoremap :b# " Quicksave command noremap :update vnoremap :update inoremap :update " Execute current file with python noremap e :!python % " Quick quit command noremap E :qa! " Quit all windows " bind Ctrl+ keys to move around the windows, instead of using " Ctrl+w + " Every unnecessary keystroke that can be saved is good for your health :) map j map k map l map h " easier moving between tabs map m :bn map n :bp " Create empty buffer and open it map t :enew " map sort function to a key vnoremap s :sort " 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 " 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=13400 set t_Co=256 color wombat256mod " Enable syntax highlighting " You need to reload this file for the change to apply filetype off filetype plugin indent on syntax on " Ignore flake8 E501 for lines longer than 80 characters " E128 - visual continuation " W391 - blank line at end of file let g:syntastic_python_flake8_args='--ignore=W391, E501' let g:syntastic_python_flake8_show_quickfix=0 " Make quickfix screen smaller let g:syntastic_loc_list_height=1 " In visual mode searches for the selected word vnoremap // y/" " Showing line numbers and length set tw=79 " width of document (used by gd) set nowrap " don't automatically wrap on load set fo-=t " don't automatically wrap text when typing set colorcolumn=120 highlight ColorColumn ctermbg=233 " easier formatting of paragraphs vmap Q gq nmap Q gqap " Useful settings set history=700 set undolevels=700 " Real programmers don't use TABs but spaces set tabstop=4 set softtabstop=4 set shiftwidth=4 set shiftround set expandtab " Make search case insensitive set hlsearch set incsearch set ignorecase set smartcase " Disable stupid backup and swap files - they trigger too many events " for file system watchers "set nobackup "set nowritebackup "set noswapfile " Backup files are great so lets keep them in 1 place " Make sure you have ~/vimtmp/ folder. In the future will " move /vimtmp/ in $VIMHOME set backupdir=~/vimtmp//,. set directory=~/vimtmp//,. set dir=~/vimtmp//,. set undodir=~/vimtmp/undo// " Setup Pathogen to manage your plugins " mkdir -p ~/.vim/autoload ~/.vim/bundle " curl -so ~/.vim/autoload/pathogen.vim " https://raw.githubusercontent.com/tpope/vim-pathogen/master/autoload/pathogen.vim " Now you can install any plugin into a .vim/bundle/plugin-name/ folder call pathogen#infect() " "============================================================================ " Python IDE Setup " "============================================================================ " Settings for vim-powerline " cd ~/.vim/bundle " git clone git://github.com/Lokaltog/vim-powerline.git set laststatus=2 " Settings for ctrlp " cd ~/.vim/bundle " git clone https://github.com/kien/ctrlp.vim.git let g:ctrlp_max_height = 30 let g:ctrlp_working_path_mode = 'ar' set wildignore+=*.pyc set wildignore+=*_build/* set wildignore+=*/coverage/* " Settings for python-mode " Note: I'm no longer using this. Leave this commented out " and uncomment the part about jedi-vim instead " cd ~/.vim/bundle " git clone https://github.com/klen/python-mode "" map g :call RopeGotoDefinition() "" let ropevim_enable_shortcuts = 1 "" let g:pymode_rope_goto_def_newwin = "vnew" "" let g:pymode_rope_extended_complete = 1 "" let g:pymode_breakpoint = 0 "" let g:pymode_syntax = 1 "" let g:pymode_syntax_builtin_objs = 0 "" let g:pymode_syntax_builtin_funcs = 0 "" map b Oimport ipdb; ipdb.set_trace() # BREAKPOINT let g:SuperTabDefaultCompletionType = "" " Settings for jedi-vim " cd ~/.vim/bundle " git clone git://github.com/davidhalter/jedi-vim.git let g:jedi#usages_command = "z" let g:jedi#popup_on_dot = 0 let g:jedi#popup_select_first = 0 let g:jedi#force_py_version = 3 " let g:jedi#completions_command = '.' map b Oimport ipdb; ipdb.set_trace() # BREAKPOINT " Map C-a to select entire file nnoremap ggVG " Real vimmers dont use those noremap noremap noremap noremap " Do splits with C-right and C-up nnoremap :vsp nnoremap :sp let NERDTreeIgnore = ['\.pyc$', '__pycache__'] " Better navigating through omnicomplete option list " See "http://stackoverflow.com/questions/2170023/how-to-map-keys-for-popup-menu-in-vim set completeopt=longest,menuone function! OmniPopup(action) if pumvisible() if a:action == 'j' return "\" elseif a:action == 'k' return "\" endif endif return a:action endfunction "inoremap =OmniPopup('j') "inoremap =OmniPopup('k') set omnifunc=jedi#completions :"py3 import sys; sys.path[2]='/root/.virtualenvs/django/bin/python' "set omnifunc=syntaxcomplete#Complete " Python folding " mkdir -p ~/.vim/ftplugin " wget -O ~/.vim/ftplugin/python_editing.vim "http://www.vim.org/scripts/download_script.php?src_id=5492 set foldenable " Auto activate virtual enviorment let g:virtualenv_auto_activate = 1 " Keep undo history even after closing file set undofile " Setups template files (more on this - https://shapeshed.com/vim-templates/) if has("autocmd") augroup templates autocmd BufNewFile *.py 0r ~/.vim/templates/skeleton.py autocmd BufNewFile *.sh 0r ~/.vim/templates/skeleton.sh augroup END endif " comment out highlighted lines according to file type " put a line like the following in your ~/.vim/filetype.vim file " and remember to turn on filetype detection: filetype on " au! BufRead,BufNewFile *.sh,*.tcl,*.php,*.pl let Comment="#" " if the comment character for a given filetype happens to be @ " then use let Comment="\@" to avoid problems... function! CommentLines() "let Comment="#" " shell, tcl, php, perl exe ":s@^@".g:Comment."@g" exe ":s@$@".g:EndComment."@g" endfunction " map visual mode keycombo 'co' to this function vmap co :call CommentLines() " Encryption algo (vim -x file) set cm=blowfish2