" This file is inspired by spf13's vimrc " set t_Co=256 set mouse=a " Cd to current file's directory command! Cwd :execute 'cd %:p:h' command! Reload :execute "bufdo execute 'checktime . bufnr('%')'" " set timeout timeoutlen=1000 ttimeoutlen=100 " My settings { filetype on " required! set clipboard=unnamedplus set history=1000 " Store a ton of history (default is 20) set spell " Spell checking on set hidden " Allow buffer switching without saving " No need to specify swap directory as it is the default filetype plugin indent on " Automatically detect file types. let NERDSpaceDelims=1 set listchars=tab:»\ ,eol:¶,trail:·,precedes:…,extends:… set noswapfile set title set path=., set foldlevel=99 let javaScript_fold=0 " JavaScript let perl_fold=1 " Perl " let php_folding=1 " PHP let r_syntax_folding=1 " R let ruby_fold=1 " Ruby let sh_fold_enabled=1 " sh let vimsyn_folding='af' " Vim script " let xml_syntax_folding=1 " XML set foldmethod=indent autocmd FileType java set foldmethod=indent autocmd FileType html set foldmethod=indent autocmd FileType javascript set foldmethod=indent autocmd FileType xml set foldmethod=indent " } " for formating { " set nowrap " Wrap long lines set autoindent " Indent at the same level of the previous line set shiftwidth=2 " Use indents of 4 spaces set expandtab " Tabs are spaces, not tabs set tabstop=2 " An indentation every four columns set softtabstop=2 " Let backspace delete indent " for java { autocmd BufRead *.java set include=^#\s*import autocmd BufRead *.java set includeexpr=substitute(v:fname,'\\.','/','g') autocmd BufRead *.java set suffixesadd=.java,.xml autocmd BufRead *.ect set suffixesadd=.ect ft=html.ect autocmd BufEnter *.gradle set ft=groovy " } " for UI { set showmode " Display the current mode if has('statusline') set laststatus=2 " Broken down into easily includeable segments set statusline=%w%h%m%r " Options " set statusline+=%{fugitive#statusline()} " Git Hotness " set statusline+=\ [%{&ff}/%Y] " Filetype set statusline+=\ [%n] " Filetype " set statusline+=\ [%{winnr()}] " Filetype set statusline+=%<%f\ " Filename " set statusline+=\ [%{getcwd()}] " Current dir set statusline+=%=%-14.(%l,%c%V%)\ %p%% " Right aligned file nav info endif set backspace=indent,eol,start " Backspace for dummies set linespace=0 " No extra spaces between rows set nu " Line numbers on set showmatch " Show matching brackets/parenthesis set hlsearch " Highlight search terms set noincsearch set winminheight=0 " Windows can be 0 line high set ignorecase " Case insensitive search set smartcase " Case sensitive when uc present set wildmenu " Show list instead of just completing set wildmode=list:longest,full " Command completion, list matches, then longest common part, then all. set whichwrap=b,s,h,l,<,>,[,] " Backspace and cursor keys wrap too set scrolljump=5 " Lines to scroll when cursor leaves screen set scrolloff=3 " Minimum lines to keep above and below cursor set list " } "for Ctrl-P{ let g:ctrlp_user_command = {} let g:ctrlp_working_path_mode = 0 let g:ctrlp_show_hidden = 1 " custom file/folder ignores let g:ctrlp_custom_ignore = { \ 'dir': '\v[\/](\.git|\.hg|\.svn|\.ve|node_modules|bower_components)$', \ 'file': '\v\.(o|pyc|class)$', \ 'link': '', \ } "}" " for JS { let g:html_indent_inctags = "html,body,head,tbody" let g:html_indent_script1 = "inc" let g:html_indent_style1 = "inc" let b:javascript_fold = 0 " let g:tern_set_omni_function = 0 " } " For JSX { let g:jsx_ext_required = 0 "} " AutoCloseTag { " Make it so AutoCloseTag works for xml and xhtml files as well au FileType xhtml,xml ru ftplugin/html/autoclosetag.vim " } let NERDTreeShowBookmarks=1 let NERDTreeIgnore=['\.pyc', '\~$', '\.swo$', '\.swp$', '\.git', '\.hg', '\.svn', '\.bzr'] let NERDTreeChDirMode=0 let NERDTreeQuitOnOpen=1 let NERDTreeMouseMode=2 let NERDTreeShowHidden=1 let NERDTreeKeepTreeInNewTab=1 let g:nerdtree_tabs_open_on_gui_startup=0 " } " Session List { set sessionoptions=blank,buffers,curdir,tabpages,winsize,resize,winpos " nmap c :JavaCorrect " nmap pt :ProjectsTree " } " for JavaScript syntax checking { let g:syntastic_javascript_checkers = ['eslint'] let g:syntastic_always_populate_loc_list = 1 " let g:syntastic_javascript_checkers = ['jslint'] " } " gides { " let g:indent_guides_start_level = 2 let g:indent_guides_guide_size = 1 let g:indent_guides_enable_on_vim_startup = 1 " } set wrap " dont set cursorline for performance imporoovements set cursorline " Highlight current line set listchars=tab:›\ ,trail:•,extends:#,nbsp:. " Highlight problematic whitespace " let Gtags_Auto_Map = 1 let Gtags_VerticalWindow = 1 let Gtags_Auto_Update = 1 let GtagsCscope_Auto_Load = 1 " set lazyredraw let g:sparkupNextMapping = '' " for taggatron. " let g:tagcommands = { " \ "php" : { " \ "tagfile" : ".php.tags", " \ "args" : "-R --langmap=PHP:+.mod" " \ } " \} "for Plug { set nocompatible " be iMproved " " Use deoplete. let g:deoplete#enable_at_startup = 1 let g:fzf_action = { \ 'ctrl-t': 'tab split', \ 'ctrl-x': 'split', \ 'ctrl-v': 'vsplit' } " : close popup and save indent. " inoremap =my_cr_function() let s:ss=0 let g:ss="" function! s:my_cr_function() if pumvisible() let g:ss .= synIDattr( synID( line(".") , col("."), 1), "name") . ' - ' " let g:ss .= col(".") . ' ' . virtcol(".") .' - ' if s:ss == 1 let s:ss = 0 return "\" else let s:ss = 1 return "\" endif else return "\" endif endfunction let nvim_conf_root='~/.config/nvim/' call plug#begin( ) " My Plugs here: " " original repos on github Plug 'tpope/vim-fugitive' Plug 'Lokaltog/vim-easymotion' " Plug 'Lokaltog/vim-distinguished' " Plug 'junegunn/seoul256.vim' " Plug 'whatyouhide/vim-gotham' Plug 'rstacruz/sparkup' " Plug 'L9' " Plug 'FuzzyFinder' " Plug 'git://git.wincent.com/command-t.git' " Plug 'git://github.com/vim-scripts/YankRing.vim.git' Plug 'git://github.com/maxbrunsfeld/vim-yankstack.git' " Plug 'vim-scripts/Auto-Pairs' Plug 'vim-scripts/DoxygenToolkit.vim' " Plug 'Raimondi/delimitMate.git' " Plug 'bkad/CamelCaseMotion' " Plug 'vim-scripts/boxdraw' " Plug 'vim-scripts/Vim-JDE' " Plug 'maksimr/vim-jsbeautify' Plug 'scrooloose/syntastic' Plug 'pangloss/vim-javascript' Plug 'mxw/vim-jsx' " Plug 'othree/yajs.vim' Plug 'harish2704/tern_for_vim' , { 'for': 'javascript' } Plug 'scrooloose/nerdcommenter' Plug 'garbas/vim-snipmate' " Plug 'amiorin/vim-project' Plug 'MarcWeber/vim-addon-mw-utils' Plug 'tomtom/tlib_vim' Plug 'nathanaelkane/vim-indent-guides' " Plug 'flazz/vim-colorschemes' Plug 'vim-scripts/sessionman.vim' " Plug 'kien/ctrlp.vim' " Plug 'leshill/vim-json' Plug 'godlygeek/tabular' Plug 'majutsushi/tagbar' " Plug 'amirh/HTML-AutoCloseTag' Plug 'tpope/vim-surround' function! DoRemote(arg) UpdateRemotePlugins endfunction Plug 'Shougo/deoplete.nvim', { 'do': function('DoRemote') } " Plug 'vim-scripts/AutoComplPop' " Plug 'Shougo/neocomplcache' " Plug 'Valloric/YouCompleteMe' " Plug 'Shougo/eocomplcache' Plug 'spf13/vim-autoclose' Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeFind' } Plug 'git@github.com:harish2704/harish2704-vim' Plug 'kchmck/vim-coffee-script', { 'for': 'coffee' } Plug 'digitaltoad/vim-jade', { 'for': 'jade' } Plug 'AndrewRadev/vim-eco', { 'for': [ 'ect', 'eco' ] } " Plug 'mustache/vim-mode' Plug 'mustache/vim-mustache-handlebars', { 'for': 'handlebars' } Plug 'chrisbra/NrrwRgn' Plug 'heavenshell/vim-jsdoc', { 'for': 'javascript' } " Plug 'vim-scripts/JavaScript-Indent' " Plug 'spf13/PIV' " Plug 'joonty/vim-taggatron' " Plug 'git://github.com/vim-scripts/autoload_cscope.vim.git' " Plug 'int3/vim-taglist-plus' " Plug 'vim-scripts/EasyGrep' Plug 'briancollins/vim-jst', { 'for': 'jst' } Plug 'vim-scripts/matchit.zip' Plug 'git@github.com:harish2704/vim-snippets.git' " Plug 'vim-scripts/SyntaxRange' Plug 'harish2704/gtags.vim' " Plug 'vim-scripts/guicolorscheme.vim' " Plug 'vim-scripts/CSApprox' " Plug 'vim-scripts/adt.vim' " Plug 'tpope/eclim' Plug 'tomasr/molokai' Plug 'joonty/vdebug' Plug 'junegunn/fzf', { 'dir': '~/.local/Apps/fzf' } Plug 'junegunn/fzf.vim' Plug 'vim-scripts/SyntaxComplete' Plug 'justinj/vim-react-snippets' Plug 'othree/javascript-libraries-syntax.vim' Plug 'Glench/Vim-Jinja2-Syntax' Plug 'kannokanno/previm' Plug 'tyru/open-browser.vim' call plug#end() " Source support_function.vim to support vim-snippets. if filereadable(expand( g:nvim_conf_root ."bundle/vim-snippets/snippets/support_functions.vim")) source g:nvim_conf_root . 'bundle/vim-snippets/snippets/support_functions.vim' endif " } let $FZF_DEFAULT_COMMAND='ag -g ""' nmap :Files nmap :Buffers " Neovim specific settings syntax on " if has('neovim') " let s:python_host_init = 'python -c "import neovim; neovim.start_host()"' " let &initpython = s:python_host_init " let &initclipboard = s:python_host_init " set unnamedclip " Automatically use clipboard as storage for the unnamed register " endif" " colorscheme colorful256 " colorscheme mrkn256 " colorscheme desert256 " colorscheme 256-grayvim " colorscheme jellybeans " colorscheme devbox-dark-256 " colorscheme lodestone " colorscheme distinguished colorscheme molokai " set foldmethod=syntax " let javascriptfold=1 " let g:indent_guides_auto_colors = 0 " hi IndentGuidesEven ctermbg=235 " hi IndentGuidesOdd ctermbg=240 " hi StatusLine ctermbg=202 " hi StatusLineNC ctermbg=246 ctermfg=0 " autocmd ColorScheme * hi IndentGuidesEven ctermbg=235 | hi IndentGuidesOdd ctermbg=240 set listchars=tab:›\ ,trail:•,extends:#,nbsp:. " Highlight problematic whitespace " hi SpellBad ctermbg=9 ctermfg=20 " Switch tabs using Alt-1..9 map ± 1gt map ² 2gt map ³ 3gt map ´ 4gt map µ 5gt map ¶ 6gt map · 7gt map ¸ 8gt " Ctrl-l -> Go to end of line imap " Replace grep with silver-searcher set grepprg=ag\ --nogroup\ --nocolor " Ctrl-Enter on normal mode -> Jump to definition using Tern autocmd BufEnter *.js nmap :TernDefSplit " Ctrl-/ on normal mode -> Grep word under cursor ( Recursive ) nmap  :grep! -r nmap :grep! -r " Open the version of current file using fugitive, where is the string in clipboard. nmap go :Gvsplit +:% nmap co :copen nmap cc :cclose nmap lo :lopen nmap lc :lclose " Ctrl-Shift-T -> Open new tab nmap :tabedit " Ctrl-S to save file { nmap :w vmap gv imap " } " Alt-q Delete current buffer ( Close file ) nmap :bd " map :TagbarToggle nmap :waexe "mksession! " . v:this_session " \\es Open vimrc in a new tab execute( 'nmap es :tabedit '. g:nvim_conf_root .'nvimrc ' ) " \\en Open current file's snippets file in a new tab nmap en :execute 'OpenSnippets' " for moving tab { " Ctrl-Shift + Page-Up/Down to rearrange tab { nmap :execute 'tabmove ' . (tabpagenr()-2 ) nmap :execute 'tabmove ' . ( tabpagenr()+1 ) nmap :execute 'tabmove ' . (tabpagenr()-2 ) nmap :execute 'tabmove ' . ( tabpagenr()+1 ) " } " Ctrl-Shift + j/k to move current window in to another tab{ nmap :execute 'Mt' . (tabpagenr() -1) nmap :execute 'Mt' . (tabpagenr() +1) nmap :execute 'Mt' . (tabpagenr() -1) nmap :execute 'Mt' . (tabpagenr() +1) " } " \tt Toggle tab and spaces nmap tt :let &expandtab=!&expandtab " \tj Incraese additional two spaces width for tab nmap tj :let &shiftwidth=&shiftwidth-2\|let &tabstop=&tabstop-2\|let &softtabstop=&softtabstop-2\|echo 'tabstop=' &tabstop " \tj Decreases two spaces width for tab nmap tk :let &shiftwidth=&shiftwidth+2\|let &tabstop=&tabstop+2\|let &softtabstop=&softtabstop+2\|echo 'tabstop=' &tabstop " } " Session handling { " List saved sessions nmap sl :SessionList " Save and close current session nmap sc :SessionClose " } " Ctrl-Enter in insert mode will append ';' to the line and insert a new line imap A; " Ctrl-Enter in normal mode will jump to tag definition using cscope " nmap :vert scs f g " Ctrl-? in normal mode will jump to tag references using cscope " nmap :vert scs f t " Alt + Arrows to Moving cursor to different windows { nmap k nmap j nmap l nmap h " } " For terminal mode{ tmap k tmap j tmap l tmap h " } "for easy quote/unquote { " \\ + a[add] / d[delete] + q[single quote] / Q [Double quote] " \\dQ remove double quote nmap dQ ds" " \\dQ add double quote nmap aQ ysiw" " \\dQ remove single quote nmap dq ds' " \\dQ remove double quote nmap aq ysiw' " In insert mode, will quote current word imap maysiw"`aa " In insert mode, will quote current word with double quotes imap maysiw'`ai " } " format JSON { nmap jt :%!python -m json.tool:set filetype=json " } " Alt + [1-8] to Switch tabs { map 1gt map 2gt map 3gt map 4gt map 5gt map 6gt map 7gt map 8gt " } " For Terminal mode Alt + [1-8] to Switch tabs { tmap 1gt tmap 2gt tmap 3gt tmap 4gt tmap 5gt tmap 6gt tmap 7gt tmap 8gt " } " NerdTree { nmap ac ToggleAutoCloseMappings map :NERDTreeToggle:NERDTreeMirror map e :NERDTreeFind nmap nt :NERDTreeFind " } " Tabularize { nmap a& :Tabularize /& vmap a& :Tabularize /& nmap a= :Tabularize /= vmap a= :Tabularize /= nmap a: :Tabularize /: vmap a: :Tabularize /: nmap a:: :Tabularize /:\zs vmap a:: :Tabularize /:\zs nmap a, :Tabularize /, vmap a, :Tabularize /, vmap a// :Tabularize /\/\/ nmap a :Tabularize / vmap a :Tabularize / " } " For terminal mode{ tmap " } " -> Reload current file nmap :e!