Created
January 26, 2018 03:05
-
-
Save surajitbasak109/e698b81f7b013660b59fd3d90581e409 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"-------------------- | |
" Use Vundle to manage bundles | |
"-------------------- | |
set nocompatible " be iMproved | |
filetype off " required! | |
set rtp+=~/.vim/bundle/vundle | |
call vundle#rc() | |
Bundle 'gmarik/vundle' | |
source ~/.vim/vimrc.vundle | |
Bundle "mattn/emmet-vim" | |
Bundle "jelera/vim-javascript-syntax" | |
Bundle "craigemery/vim-autotag" | |
Bundle "pangloss/vim-javascript" | |
Bundle "Raimondi/delimitMate" | |
Bundle "Valloric/YouCompleteMe" | |
Bundle "tomtom/checksyntax_vim" | |
filetype plugin indent on | |
" Indentation guide is awesome | |
set listchars=tab:\|\ | |
set list | |
" Press <ctrl>j to make line break | |
" Very useful for your regular code writing | |
:nnoremap <c-j> i<CR><ESC> | |
"-------------------- | |
" General Settings | |
"-------------------- | |
"-------------------------- | |
" Buffer Configuration | |
"@doc http://vim.wikia.com/wiki/Easier_buffer_switching | |
function! BufSel(pattern) | |
let bufcount = bufnr("$") | |
let currbufnr = 1 | |
let nummatches = 0 | |
let firstmatchingbufnr = 0 | |
while currbufnr <= bufcount | |
if(bufexists(currbufnr)) | |
let currbufname = bufname(currbufnr) | |
if(match(currbufname, a:pattern) > -1) | |
echo currbufnr . ": ". bufname(currbufnr) | |
let nummatches += 1 | |
let firstmatchingbufnr = currbufnr | |
endif | |
endif | |
let currbufnr = currbufnr + 1 | |
endwhile | |
if(nummatches == 1) | |
execute ":buffer ". firstmatchingbufnr | |
elseif(nummatches > 1) | |
let desiredbufnr = input("Enter buffer number: ") | |
if(strlen(desiredbufnr) != 0) | |
execute ":buffer ". desiredbufnr | |
endif | |
else | |
echo "No matching buffers" | |
endif | |
endfunction | |
" ctags configuration | |
"-------------------- | |
set tags=./tags,tags; | |
"------------------------------ | |
" Switching tabs configuration | |
"------------------------------ | |
" This is for opening new tabs or | |
" switching between tabs { | |
nnoremap <A-&> 1gt | |
nnoremap <A-é> 2gt | |
nnoremap <A-"> 3gt | |
nnoremap <A-'> 4gt | |
nnoremap <A-(> 5gt | |
nnoremap <A-§> 6gt | |
nnoremap <A-è> 7gt | |
nnoremap <A-!> 8gt | |
nnoremap <A-ç> 9gt | |
nnoremap <A-à> 10gt | |
"} | |
" ctrl-I to switch between vertical or | |
" horizontal splitted windows { | |
map <C-I> <C-W><C-W> | |
"} | |
" vim explorer { | |
map <F4> :!ls<CR>:e | |
"} | |
"Bind the BufSel() function to a user-command | |
command! -nargs=1 Bs :call BufSel("<args>") | |
set bs=indent,eol,start " allow backspacing over everything in insert mode | |
set history=100 " keep 100 lines of command line history | |
set ruler " show the cursor position all the time | |
set ar " auto read when file is changed from outside | |
set nu " show line numbers | |
filetype on " Enable filetype detection | |
filetype indent on " Enable filetype-specific indenting | |
filetype plugin on " Enable filetype-specific plugins | |
"Want to get rid off <Esc> button? | |
imap jk <Esc> | |
" auto reload vimrc when editing it | |
autocmd! bufwritepost .vimrc source ~/.vimrc | |
syntax on " syntax highlight | |
set hlsearch " search highlighting | |
" terminal color settings | |
if has("gui_running") " GUI color and font settings | |
set guifont=FiraCode:h11 | |
set background=dark | |
set t_Co=256 " 256 color mode | |
set cursorline " highlight current line | |
highlight CursorLine guibg=#003853 ctermbg=24 gui=none cterm=none | |
colors moria | |
else | |
colors evening | |
endif | |
set clipboard=unnamed " yank to the system register (*) by default | |
set showmatch " Cursor shows matching ) and } | |
set showmode " Show current mode | |
set wildchar=<TAB> " start wild expansion in the command line using <TAB> | |
set wildmenu " wild char completion menu | |
" ignore these files while expanding wild chars | |
set wildignore+=.svn,CVS,.git | |
set wildignore+=*.o,*.a,*.class,*.mo,*.la,*.so,*.lo,*.la,*.obj,*.pyc | |
set wildignore+=*.exe,*.zip,*.jpg,*.png,*.gif,*.jpeg | |
set autoindent " auto indentation | |
set incsearch " incremental search | |
set backup " save backup files | |
set backupdir=~/.vim/bak " where to put backup file | |
set dir=~/.vim/tmp " tell vim where to put swap files | |
set copyindent " copy the previous indentation on autoindenting | |
set ignorecase " ignore case when searching | |
set smartcase " ignore case if search pattern is all lowercase,case-sensitive otherwise | |
set nosmarttab " insert tabs on the start of a line according to context | |
" disable sound on errors | |
set noerrorbells visualbell t_vb= | |
set tm=500 | |
" TAB setting | |
set noexpandtab "DO-NOT replace <TAB> with spaces | |
set tabstop=4 | |
set softtabstop=4 | |
set shiftwidth=4 | |
autocmd FileType yaml set expandtab | |
" FOLDING | |
set foldenable | |
set foldmethod=marker | |
set foldlevel=0 | |
set foldcolumn=0 | |
" status line | |
set laststatus=2 | |
set statusline=\ %{HasPaste()}%<%-15.25(%f%)%m%r%h\ %w\ \ | |
set statusline+=\ \ \ [%{&ff}/%Y] | |
set statusline+=\ \ \ %<%20.30(%{hostname()}:%{CurDir()}%)\ | |
set statusline+=%=%-10.(%l,%c%V%)\ %p%%/%L | |
fun! CurDir() | |
let curdir = substitute(getcwd(), $HOME, "~", "") | |
return curdir | |
endfun | |
fun! HasPaste() | |
if &paste | |
return '[PASTE]' | |
else | |
return '' | |
endif | |
endfun | |
" C/C++ specific settings | |
autocmd FileType c,cpp,cc set cindent " comments=sr:/*,mb:*,el:*/,:// cino=>s,e0,n0,f0,{0,}0,^-1s,:0,=s,g0,h1s,p2,t0,+2,(2,)20,*30 | |
"Restore cursor to file position in previous editing session | |
set viminfo='10,\"100,:20,%,n~/.viminfo | |
autocmd BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif | |
"--------------------------------------------------------------------------- | |
" Tip #382: Search for <cword> and replace with input() in all open buffers | |
"--------------------------------------------------------------------------- | |
fun! Replace() | |
let s:word = input("Replace " . expand('<cword>') . " with:") | |
:exe 'bufdo! %s/\<' . expand('<cword>') . '\>/' . s:word . '/ge' | |
:unlet! s:word | |
endfun | |
"Emmet Support | |
let g:user_emmet_mode='a' "enable all function in all mode. | |
"--------------------------------------------------------------------------- | |
" USEFUL SHORTCUTS | |
"--------------------------------------------------------------------------- | |
" set leader to ; | |
let mapleader=";" | |
let g:mapleader=";" | |
" quick alias to leave vim | |
nmap <leader>w :x<CR> | |
nmap <leader>q :q!<CR> | |
nmap <leader>s :update<CR> | |
"replace the current word in all opened buffers | |
map <leader>r :call Replace()<CR> | |
" open the error console | |
map <leader>er :bo cope<CR> | |
" move to next error | |
map <leader>] :cn<CR> | |
" move to the prev error | |
map <leader>[ :cp<CR> | |
" --- move around splits | |
" move to and maximize the below split | |
map <C-J> <C-W>j<C-W>_ | |
" move to and maximize the above split | |
map <C-K> <C-W>k<C-W>_ | |
" move to and maximize the left split | |
nmap <c-h> <c-w>h<c-w><bar> | |
" move to and maximize the right split | |
nmap <c-l> <c-w>l<c-w><bar> | |
set wmw=0 " set the min width of a window to 0 so we can maximize others | |
set wmh=0 " set the min height of a window to 0 so we can maximize others | |
" --- move to splitted windok | |
map <leader>h :wincmd h<CR> | |
map <leader>j :wincmd j<CR> | |
map <leader>k :wincmd k<CR> | |
map <leader>l :wincmd l<CR> | |
" Quickly resize windows use +/- | |
map - <C-W>- | |
map + <C-W>+ | |
map > <C-W>> | |
map < <C-W>< | |
" Allows all window commands in insert mode | |
imap <C-w> <C-o><C-w> | |
" Loop to switch windows | |
nmap <S-w> :wincmd w<CR> | |
" new tab | |
map <C-t><C-t> :tabnew .<CR> | |
" close tab | |
map <C-t><C-w> :tabclose<CR> | |
" ;/ turn off search highlighting | |
nmap <leader>/ :set hls!<CR> | |
nnoremap <silent><leader>s :nohlsearch<CR> | |
" Bash like keys for the command line | |
cnoremap <C-A> <Home> | |
cnoremap <C-E> <End> | |
cnoremap <C-K> <C-U> | |
" ,p toggles paste mode | |
nmap <leader>p :set paste!<BAR>set paste?<CR> | |
" allow multiple indentation/deindentation in visual mode | |
vnoremap < <gv | |
vnoremap > >gv | |
vnoremap = =gv | |
" :cd. change working directory to that of the current file | |
cmap cd. lcd %:p:h | |
"--------------------------------------------------------------------------- | |
" PROGRAMMING SHORTCUTS | |
"--------------------------------------------------------------------------- | |
" Ctrl-[ jump out of the tag stack (undo Ctrl-]) | |
map <C-[> <ESC>:po<CR> | |
map <leader>g :call IncludeGuard()<CR> | |
fun! IncludeGuard() | |
let basename = substitute(bufname(""), '.*/', '', '') | |
let guard = '_' . substitute(toupper(basename), '\.', '_', "H") . '_' | |
call append(0, "#ifndef " . guard) | |
call append(1, "#define " . guard) | |
call append(line("$"), "#endif /* " . guard . " */") | |
endfun | |
"--------------------------------------------- | |
" Enable omni completion. (Ctrl-X Ctrl-O) | |
"--------------------------------------------- | |
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags | |
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS | |
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete | |
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags | |
autocmd FileType c set omnifunc=ccomplete#Complete | |
autocmd FileType java set omnifunc=javacomplete#Complete | |
autocmd FileType php set omnifunc=phpcomplete#CompletePHP | |
autocmd FileType css set omnifunc=csscomplete#CompleteCSS | |
"autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete | |
" use syntax complete if nothing else available | |
if has("autocmd") && exists("+omnifunc") | |
autocmd Filetype * | |
\ if &omnifunc == "" | | |
\ setlocal omnifunc=syntaxcomplete#Complete | | |
\ endif | |
endif | |
set cot-=preview "disable doc preview in omnicomplete | |
"--------------------------------------------- | |
" for PHP programming | |
"--------------------------------------------- | |
autocmd FileType php set makeprg=php\ -l\ % | |
autocmd FileType php set errorformat=%m\ in\ %f\ on\ line\ %l | |
"--------------------------------------------- | |
" for edit CSS | |
"--------------------------------------------- | |
autocmd FileType css setlocal expandtab shiftwidth=4 tabstop=4 softtabstop=4 | |
" make CSS omnicompletion work for SASS and SCSS | |
autocmd BufNewFile,BufRead *.scss set ft=scss.css | |
autocmd BufNewFile,BufRead *.sass set ft=sass.css | |
"--------------------------------------------- | |
" for edit HTML | |
"--------------------------------------------- | |
autocmd FileType html,xhtml setlocal expandtab shiftwidth=2 tabstop=2 softtabstop=2 | |
"--------------------------------------------- | |
" file type detection | |
"--------------------------------------------- | |
" highlight action script and mxml syntax | |
au BufNewFile,BufRead *.mxml set filetype=mxml | |
au BufNewFile,BufRead *.as set filetype=actionscript | |
au BufNewFile,BufRead *.less set filetype=less | |
"--------------------------------------------- | |
" use w!! to write protected files | |
"--------------------------------------------- | |
cmap w!! %!sudo tee > /dev/null % | |
"--------------------------------------------- | |
" copy to system buffer | |
"--------------------------------------------- | |
vnoremap <C-S-C> "+y<CR> | |
map <C-S-c> "+y<CR> | |
map <C-S-v> "+p<CR> | |
"--------------------------------------------------------------------------- | |
" ENCODING SETTINGS | |
"--------------------------------------------------------------------------- | |
set encoding=utf-8 | |
set termencoding=utf-8 | |
set fileencoding=utf-8 | |
set fileencodings=ucs-bom,utf-8,gbk,big5,latin1 | |
"--------------------------------------------------------------------------- | |
" COLOR SCHEME OVERRIDE | |
"--------------------------------------------------------------------------- | |
hi StatusLine ctermfg=gray ctermbg=black | |
hi StatusLineNC ctermfg=darkblue ctermbg=gray | |
"--------------------------------------------------------------------------- | |
" PLUGIN SETTINGS | |
"--------------------------------------------------------------------------- | |
" --- AutoClose - Inserts matching bracket, paren, brace or quote | |
" fixed the arrow key problems caused by AutoClose | |
if !has("gui_running") | |
set term=linux | |
syntax on | |
map OA k | |
map OB j | |
map OC l | |
map OD h | |
imap OA <ESC>ki | |
imap OB <ESC>ji | |
imap OC <ESC>li | |
imap OD <ESC>hi | |
endif | |
" --- BufExplorer | |
let g:bufExplorerDetailedHelp = 0 " Do not show detailed help. | |
noremap <leader>b :BufExplorer<CR> | |
" --- TagBar | |
" toggle TagBar with F7 ;tb | |
nnoremap <silent><F7> :TagbarToggle<CR> | |
nnoremap <leader>t :TagbarToggle<CR> | |
" set focus to TagBar when opening it | |
let g:tagbar_autofocus = 1 | |
" set default width of the Tagbar window | |
let g:tagbar_width = 30 | |
" markdown support | |
let g:tagbar_type_markdown = { | |
\ 'ctagstype': 'markdown', | |
\ 'kinds': [ 'h:Heading_L1', 'i:Heading_L2', 'k:Heading_L3' ] | |
\ } | |
" --- NERDTree | |
nnoremap <silent> <F3> :NERDTreeToggle<CR> | |
nnoremap <leader>n :NERDTreeToggle<CR> | |
" Close vim if the only window left open is the NERDTree | |
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif | |
" --- Syntastic | |
nnoremap <silent> <F6> :SyntasticCheck<CR> | |
nnoremap <leader>sy :SyntasticCheck<CR> | |
let g:syntastic_auto_loc_list = 1 | |
let g:syntastic_auto_jump = 1 | |
" --- YankRing.vim | |
let g:yankring_history_dir = '~/.vim/tmp' | |
nnoremap <silent> <F2> :YRShow<CR> | |
nnoremap <leader>y :YRShow<CR> | |
" --- EasyMotion | |
let g:EasyMotion_leader_key = '<Leader><Leader>' " default is <Leader>w | |
hi link EasyMotionTarget ErrorMsg | |
hi link EasyMotionShade Comment | |
" --- neocomplcache | |
" Disable AutoComplPop. | |
let g:acp_enableAtStartup = 0 | |
" Use neocomplcache. | |
let g:neocomplcache_enable_at_startup = 1 | |
" Use smartcase. | |
let g:neocomplcache_enable_smart_case = 1 | |
" Use camel case completion. | |
let g:neocomplcache_enable_camel_case_completion = 1 | |
" Use underbar completion. | |
let g:neocomplcache_enable_underbar_completion = 1 | |
" Set minimum syntax keyword length. | |
let g:neocomplcache_min_syntax_length = 2 | |
let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*' | |
" Define dictionary. | |
let g:neocomplcache_dictionary_filetype_lists = { | |
\ 'default': '', | |
\ 'vimshell': '~/.vimshell_hist', | |
\ 'scheme': '~/.gosh_completions' | |
\ } | |
" Define keyword. | |
if !exists('g:neocomplcache_keyword_patterns') | |
let g:neocomplcache_keyword_patterns = {} | |
endif | |
let g:neocomplcache_keyword_patterns['default'] = '\h\w*' | |
" Plugin key-mappings. | |
imap <C-k> <Plug>(neocomplcache_snippets_expand) | |
smap <C-k> <Plug>(neocomplcache_snippets_expand) | |
inoremap <expr><C-g> neocomplcache#undo_completion() | |
inoremap <expr><C-l> neocomplcache#complete_common_string() | |
" Recommended key-mappings. | |
" <CR>: close popup and save indent. | |
fun! s:my_cr_func() | |
return pumvisible() ? neocomplcache#smart_close_popup() : "\<CR>" | |
endfun | |
"inoremap <expr><CR> neocomplcache#smart_close_popup()."\<CR>" | |
inoremap <silent> <CR> <C-r>=<SID>my_cr_func()<CR> | |
" <TAB>: completion. | |
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" | |
" <C-h>, <BS>: close popup and delete backword char. | |
inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>" | |
inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>" | |
inoremap <expr><C-y> neocomplcache#close_popup() | |
inoremap <expr><C-e> neocomplcache#cancel_popup() | |
" Enable heavy omni completion. | |
if !exists('g:neocomplcache_omni_patterns') | |
let g:neocomplcache_omni_patterns = {} | |
endif | |
let g:neocomplcache_omni_patterns.ruby = '[^. *\t]\.\w*\|\h\w*::' | |
let g:neocomplcache_omni_patterns.php = '[^. \t]->\h\w*\|\h\w*::' | |
let g:neocomplcache_omni_patterns.c = '\%(\.\|->\)\h\w*' | |
let g:neocomplcache_omni_patterns.cpp = '\h\w*\%(\.\|->\)\h\w*\|\h\w*::' | |
" --- neosnippet | |
" Plugin key-mappings. | |
imap <C-k> <Plug>(neosnippet_expand_or_jump) | |
smap <C-k> <Plug>(neosnippet_expand_or_jump) | |
" SuperTab like snippets behavior. | |
imap <expr><TAB> neosnippet#expandable() ? "\<Plug>(neosnippet_expand_or_jump)" : pumvisible() ? "\<C-n>" : "\<TAB>" | |
smap <expr><TAB> neosnippet#expandable() ? "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>" | |
" For snippet_complete marker. | |
if has('conceal') | |
set conceallevel=2 concealcursor=i | |
endif | |
" --- vim-javascript | |
let g:html_indent_inctags = "html,body,head,tbody" | |
let g:html_indent_script1 = "inc" | |
let g:html_indent_style1 = "inc" | |
" --- php-search-doc, vim-jquery-doc | |
let g:php_search_doc_command = 'open' | |
let g:php_search_doc_function_mapping='<Leader>pf' | |
let g:php_search_doc_manual_mapping='<Leader>pm' | |
let g:jquery_doc_command = 'open' | |
let g:jquery_doc_mapping = '<Leader>jm' | |
" --- ctrlp.vim | |
nnoremap <leader>f :CtrlP<CR> | |
set wildignore+=*/tmp/* | |
let g:ctrlp_map = '<c-p>' | |
let g:ctrlp_cmd = 'CtrlP' | |
let g:ctrlp_root_markers = ['protected','CVS','tags'] | |
let g:ctrlp_working_path_mode = 'ra' | |
let g:ctrlp_custom_ignore = { | |
\ 'dir': '\v[\/]\.(git|hg|svn)$', | |
\ 'file': '\v\.(exe|so|dll)$', | |
\ 'link': 'some_bad_symbolic_links', | |
\ } | |
" --- vim-easytags | |
nnoremap <leader>ut :UpdateTags!<CR> | |
nnoremap <leader>ht :HighlightTags<CR> | |
nnoremap <silent><leader>hh :let b:easytags_auto_highlight = 1<CR> | |
nnoremap <silent><leader>nh :let b:easytags_auto_highlight = 0<CR> | |
let g:easytags_dynamic_files = 1 | |
let g:easytags_resolve_links = 1 | |
" disable split by filetype, it seems is a bug!! | |
"let g:easytags_by_filetype = '~/.vim/tmp' | |
"--------------------------------------------- | |
" using ctags | |
"--------------------------------------------- | |
set tags=tags | |
"--------------------------------------------- | |
" shorcut for ctags | |
" http://stackoverflow.com/questions/563616/vim-and-ctags-tips-and-tricks | |
"--------------------------------------------- | |
map <C-\> :bel 8sp <CR>:exec("tag ".expand("<cword>"))<CR> | |
"-------------------- | |
" For JavaScriptLint | |
" Ref: http://panweizeng.com/write-javascript-in-vim.html | |
"-------------------- | |
"autocmd FileType javascript set makeprg=~/bin/jsl\ -nologo\ -nofilelisting\ -nosummary\ -nocontext\ -conf\ ~/bin/jsl.default.conf\ -process\ % | |
"autocmd FileType javascript set errorformat=%f(%l):\ %m | |
"autocmd FileType javascript inoremap <silent> <F9> <C-O>:make<CR> | |
"autocmd FileType javascript map <silent> <F9> :make<CR> | |
"-------------------- | |
" for using php-cs-fixer | |
"-------------------- | |
nnoremap <silent><leader>pcd :call PhpCsFixerFixDirectory()<CR> | |
nnoremap <silent><leader>pcf :call PhpCsFixerFixFile()<CR> | |
"-------------------- | |
" insert php namespace | |
"-------------------- | |
imap <buffer> <leader><Leader>u <C-O>:call PhpInsertUse()<CR> | |
map <buffer> <leader><Leader>u :call PhpInsertUse()<CR> | |
"-------------------- | |
" For phpDocumentor (pdv) | |
"-------------------- | |
inoremap <leader>pd <ESC>:call PhpDocSingle()<CR>i | |
nnoremap <leader>pd :call PhpDocSingle()<CR> | |
vnoremap <leader>pd :call PhpDocRange()<CR> | |
"-------------------- | |
" Load path of util | |
"-------------------- | |
source ~/.vim/vimrc.path |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment