set nocompatible " be iMproved, required filetype off " required " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim 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' " The following are examples of different formats supported. " Keep Plugin commands between vundle#begin/end. " plugin on GitHub repo Plugin 'tpope/vim-fugitive' " plugin from http://vim-scripts.org/vim/scripts.html " Plugin 'L9' " Git plugin not hosted on GitHub " Requires git to be compiled with Ruby support " Plugin 'git://git.wincent.com/command-t.git' " git repos on your local machine (i.e. when working on your own plugin) "Plugin 'file:///home/gmarik/path/to/plugin' " The sparkup vim script is in a subdirectory of this repo called vim. " Pass the path to set the runtimepath properly. " Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} " Install L9 and avoid a Naming conflict if you've already installed a " different version somewhere else. " Plugin 'ascenator/L9', {'name': 'newL9'} " Nerdtree and nerdtree-git Plugin 'scrooloose/nerdtree.git' Plugin 'Xuyuanp/nerdtree-git-plugin' "css3-syntax Plugin 'hail2u/vim-css3-syntax.git' "scss-syntax Plugin 'cakebaker/scss-syntax.vim' "bufexplorer Plugin 'jlanzarotta/bufexplorer' "tagbar Plugin 'majutsushi/tagbar' "vim-surround Plugin 'tpope/vim-surround' "undotree Plugin 'mbbill/undotree' " gutentag Plugin 'ludovicchabant/vim-gutentags' " Ctrlp Plugin 'ctrlpvim/ctrlp.vim' " Obsession Plugin 'tpope/vim-obsession' " vim-css-color Plugin 'ap/vim-css-color' " vim-javascript-syntax " Plugin 'jelera/vim-javascript-syntax' " vim-javascript Plugin 'pangloss/vim-javascript' " vim-mucomplete " https://github.com/lifepillar/vim-mucomplete Plugin 'lifepillar/vim-mucomplete' " ultisnips " https://github.com/sirver/UltiSnips Plugin 'SirVer/ultisnips' " and some snippets " https://github.com/honza/vim-snippets Plugin 'honza/vim-snippets' " syntastic " https://github.com/vim-syntastic/syntastic "Plugin 'vim-syntastic/syntastic' " ALE " https://github.com/w0rp/ale Plugin 'w0rp/ale' " MatchTag " https://github.com/gregsexton/MatchTag Plugin 'gregsexton/MatchTag' " phpcomplete.vim " https://github.com/shawncplus/phpcomplete.vim Plugin 'shawncplus/phpcomplete.vim' " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required " 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 " better window navigaton nnoremap h nnoremap l nnoremap k nnoremap j " better window resizing " need to use j because urxvt sends the character prefixed with Escape " instead of setting the eighth bit " see https://unix.stackexchange.com/a/199705 nnoremap j :resize +1 nnoremap k :resize -1 nnoremap l :vertical resize +1 nnoremap h :vertical resize -1 let mapleader = "\" set hidden set bg=dark " set number set nonumber set autoindent " set width of the fold column to create a margin set foldcolumn=2 " hi FoldColumn ctermfg=255 ctermbg=226 colorscheme customred256 " statusline format set statusline=\ %F\ " filename and path "set statusline+=%{SyntaxItem()} set statusline+=%h " help file flag set statusline+=%w " preview window flag set statusline+=%m " modified flag set statusline+=%r " read only flag set statusline+=\ set statusline+=[%{strlen(&ft)?&ft:'none'}, " filetype set statusline+=%{strlen(&fenc)?&fenc:&enc}, " encoding set statusline+=%{&fileformat}]\ " file format set statusline+=%{&spelllang}\ \ \ \ \ " Spell language set statusline+=%{fugitive#statusline()} set statusline+=%= " left/right separator set statusline+=[\ %{v:register}\ ]\ " active register set statusline+=[%{ObsessionStatus(fnamemodify(v:this_session,':t'),'---')}]\ \ " session status set statusline+=%#InterfaceH3# "set statusline+=\ %{SyntasticStatuslineFlag()} set statusline+=%{LinterStatus()} set statusline+=%#InterfaceNormal# set statusline+=\ %l\ set statusline+=%* " always show statusline set laststatus=2 " set status to change the status line based on mode if version >= 700 au InsertEnter * hi StatusLine term=reverse ctermbg=5 gui=undercurl guisp=Magenta au InsertLeave * hi StatusLine term=reverse ctermfg=0 ctermbg=2 gui=bold,reverse endif " set a right margin and it's colour set colorcolumn=100 set foldmethod=manual syntax on " tabs set tabstop=2 set softtabstop=2 set shiftwidth=0 "use tabstop value set mouse=a " rewrapping set to 80 set tw=180 " disable automatic wrapping set fo=cq " disable wrapping based on terminal size set wm=0 set t_Co=8 set t_Sf=[3%p1%dm set t_Sb=[4%p1%dm nnoremap :set invpaste paste? set pastetoggle= set showmode " set custom syntax highlighting autocmd BufNewFile,BufRead *.html set syntax=html_custom autocmd BufNewFile,BufRead *.php set syntax=php_custom " fix higlight problems such as vertical-align etc augroup VimCSS3Syntax autocmd! autocmd FileType css setlocal iskeyword+=- augroup END " autocommands " automatically reload if color scheme file written augroup coloreload au! au BufWritePost customred256.vim so $MYVIMRC augroup end " Automatically reload .vimrc if chanaged augroup myvimrc au! au BufWritePost .vimrc,_vimrc,vimrc,.gvimrc,_gvimrc,gvimrc so $MYVIMRC | if has('gui_running') | so $MYGVIMRC | endif augroup END " persisitent undo file set undodir=/home/ray/.vim/undodir set undofile " Functions " get name of syntax item function! SyntaxItem() return synIDattr(synID(line("."),col("."),1),"name") . " -> " . synIDattr(synIDtrans(synID(line("."),col("."),1)), "name" ) endfunction nnoremap p :echom SyntaxItem() " plugins stuff " MUcomplete set completeopt+=menuone let g:mucomplete#enable_auto_at_startup = 1 inoremap mucomplete#popup_exit("\") inoremap mucomplete#popup_exit("\") inoremap mucomplete#popup_exit("\") set completeopt+=noselect set completeopt+=noinsert set complete-=i set complete-=t let g:mucomplete#chains = { 'default' : ['tags', 'c-p', 'incl'] } let g:mucomplete#popup_direction = { 'path' : 1, 'c-p': 1, 'tags': 1, 'incl': 1 } set shortmess+=c " Shut off completion messages set belloff+=ctrlg " If Vim beeps during completion call add(g:mucomplete#chains['default'], 'ulti') " ALE let g:ale_sign_error = '>>' let g:ale_sign_warning = '--' let g:ale_linters = {'scss': ['stylelint'], 'javascript': ['jshint'], 'php':['php'], 'html':['htmlhint']} let g:ale_html_htmlhint_options = '-c ~/.htmlhintrc --format=unix' function! LinterStatus() abort let l:counts = ale#statusline#Count(bufnr('')) let l:all_errors = l:counts.error + l:counts.style_error let l:all_non_errors = l:counts.total - l:all_errors return l:counts.total == 0 ? 'OK' : printf('%dW %dE', all_non_errors, all_errors) endfunction "nmap (ale_previous_wrap) "nmap (ale_next_wrap) " syntastic "let g:syntastic_always_populate_loc_list = 1 "let g:syntastic_auto_loc_list = 0 "let g:syntastic_check_on_open = 1 "let g:syntastic_check_on_wq = 0 "let g:syntastic_stl_format = "[%E{%e E: %fe}%B{,} %W{%w W: %fw}]" "let g:syntastic_scss_checkers = ['sass_lint'] "let g:syntastic_scss_sass_lint_args = "-v -c /home/ray/.config/sass-lint/sass-lint.yml" " ultisnips " Trigger configuration. Do not use if you use https://github.com/Valloric/YouCompleteMe. let g:UltiSnipsExpandTrigger="u" let g:UltiSnipsJumpForwardTrigger="" let g:UltiSnipsJumpBackwardTrigger="" " NERDtree nnoremap :NERDTreeFocus nnoremap nt :NERDTreeFocus " allow closing if only window open is a NERDTree autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif " TagBar nnoremap tb :TagbarOpen fj " tagbar css/scss thingy nnoremap ] :tag /[.#@]=expand('') " bufexploer nnoremap o :BufExplorer " undotree nnoremap ut :UndotreeToggle " let g:tagbar_type_css = { " \ 'ctagstype' : 'css', " \ 'kinds' : [ " \ 'c:classes', " \ 'i:ids', " \ 't:tags', " \ 'm:medias' " \ ] " \} let g:tagbar_type_scss = { \ 'ctagstype' : 'scss', \ 'kinds' : [ \ 'v:variables', \ 'c:classes', \ 'i:ids', \ 't:tags', \ 'd:medias', \ 'm:mixins', \ 'f:functions' \ ] \} if !exists("*RangerExplorer") function RangerExplorer() exec "silent !ranger --choosefile=/tmp/vim_ranger_current_file " . expand("%:p:h") if filereadable('/tmp/vim_ranger_current_file') exec 'edit ' . system('cat /tmp/vim_ranger_current_file') call system('rm /tmp/vim_ranger_current_file') endif redraw! endfun map ra :call RangerExplorer() endif " ze end