filetype off " required set ttyfast " #plugins set runtimepath+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'VundleVim/Vundle.vim' "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' " vim-project-tags "dependancy needed: "https://github.com/still-dreaming-1/vim-project-tags Plugin 'still-dreaming-1/vim-elhiv' Plugin 'still-dreaming-1/vim-project-tags' " 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' " ultisnips " https://github.com/sirver/UltiSnips Plugin 'SirVer/ultisnips' " and some snippets " https://github.com/honza/vim-snippets Plugin 'honza/vim-snippets' " 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' " https://github.com/dsawardekar/wordpress.vim " For up to date Wordpress Files see: " https://github.com/joseluis/wordpress.vim-generator "Plugin 'dsawardekar/wordpress.vim' " disabled - doesn't support universal ctags? " vim-vue " https://github.com/posva/vim-vue Plugin 'posva/vim-vue' " vim-commentary " https://github.com/tpope/vim-commentary Plugin 'tpope/vim-commentary' " vim-repeat " https://github.com/tpope/vim-repeat Plugin 'tpope/vim-repeat' " taboo.vim " https://github.com/gcmt/taboo.vim Plugin 'gcmt/taboo.vim' " https://github.com/mattn/emmet-vim Plugin 'mattn/emmet-vim' " vimwiki " https://github.com/vimwiki/vimwiki Plugin 'vimwiki/vimwiki' " youcompleteme " https://github.com/Valloric/YouCompleteMe Plugin 'Valloric/YouCompleteMe' " gitgutter " https://github.com/airblade/vim-gitgutter/blob/master/README.mkd Plugin 'airblade/vim-gitgutter' " vim-peekaboo Plugin 'junegunn/vim-peekaboo' " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required " #settings " set t_Sf=[3%p1%dm " foreground colour if &term == 'xterm-256color' set termguicolors endif syntax on colorscheme customred256 set guioptions-=mTrLb set guioptions+=c " set t_Sb=[4%p1%dm " background coloru set updatetime=100 set backupdir=~/.vimtmp set directory=~/.vimtmp " persisitent undo file set undodir=/home/ray/.vim/undodir set undofile set clipboard=unnamedplus set ignorecase set smartcase set wildmenu set wildmode=longest:full,full set hidden set background=dark set number relativenumber set hlsearch set foldcolumn=1 set iskeyword+=- set scrolloff=10 set showcmd set incsearch set laststatus=2 set foldmethod=manual set showmode set autoindent set breakindent set showbreak=↳ set mouse=a set listchars=eol:¬,tab:->,trail:~,extends:>,precedes:<,space:· set textwidth=180 set formatoptions=cq set wrapmargin=0 " key #mappings let g:mapleader = "\" " replace current word with last yanked/deleted text nnoremap rr "_diwP " replace current word with last yanked text nnoremap ry diw"0P inoremap jk nnoremap A :call Checksemicolon() nnoremap co :!clear; nnoremap gs :!clear; git status nnoremap gd :!clear; git diff nnoremap ga :!clear; git add %; git status nnoremap gA :!clear; git add .; git status nnoremap gc :!clear; git commit -m '' nnoremap gp :!clear; echo 'Git push ...'; git push nnoremap gl :!clear; git log " netrw nnoremap ex :Ex nnoremap ee :e . nnoremap eq :Rex " better window navigaton nnoremap h nnoremap l nnoremap k nnoremap j nnoremap j :resize -5 nnoremap k :resize +5 nnoremap l :vertical resize +5 nnoremap h :vertical resize -5 nnoremap = = "location list and quickfix mappings nnoremap ll :botright lwindow nnoremap lp :lprev nnoremap ln :lnext nnoremap lc :lclose nnoremap llh :lhistory nnoremap llp :lolder nnoremap lln :lnewer nnoremap qf :botright cwindow nnoremap qp :cprev nnoremap qn :cnext nnoremap qc :cclose nnoremap qfh :chistory nnoremap qfp :colder nnoremap qfn :cnewer nnoremap nh :noh " quick grep of visual selection vnoremap gr y:grep! -R " . " open quickfix window of TODOs nnoremap td :grep! -R '// *TODO' .:botright cwindow:echo len(getqflist()) 'TODOs' " brace/quotes completion inoremap {{ {} inoremap { {}O inoremap {; {};O inoremap }} {{}} inoremap (( () inoremap (; (); inoremap [[ [] inoremap [ []O inoremap "" "" inoremap "; ""; inoremap '' '' inoremap '; ''; inoremap ;; ; nnoremap nn :set invrelativenumber nnoremap hl :nohlsearch " devdocs mapping nnoremap dd :DD " #abbreviations iabbrev adn and iabbrev waht what iabbrev tehn then " #statusline format set statusline=%#LineNr# set statusline+=\ \ \ set statusline+=%#StatusLineFile# set statusline+=\ set statusline+=%#StatusLineMod# set statusline+=%M " modified flag set statusline+=%* set statusline+=%#StatusLineDir# set statusline+=\ %{expand('%:p:h:t')}/ " directory tail set statusline+=%#StatusLineFile# set statusline+=%{expand('%:t:r')} set statusline+=%#StatusLineDot# set statusline+=. set statusline+=%#StatusLineExt# set statusline+=%{expand('%:e')}\ set statusline+=%* set statusline+=%q " quickfix/location list flag set statusline+=%h " help file flag set statusline+=%w " preview window flag set statusline+=%r " read only flag set statusline+=%#StatusLineNC# set statusline+=\ set statusline+=%* set statusline+=\ %{strlen(&ft)?&ft:'none'}, " filetype set statusline+=%{strlen(&fenc)?&fenc:&enc}, " encoding set statusline+=%{&fileformat}\ set statusline+=%#StatusLineNC# set statusline+=\ set statusline+=%* set statusline+=\ %{&spelllang}\ set statusline+=%#StatusLineNC# set statusline+=%= " left/right separator set statusline+=%#StatusLineNC# set statusline+=\ set statusline+=%* set statusline+=\ \"%{v:register}\"\ set statusline+=%#StatusLineNC# set statusline+=\ set statusline+=%* set statusline+=\ %{ObsessionStatus(fnamemodify(v:this_session,':t'),'---')}\ " session status set statusline+=%#InterfaceH2# set statusline+=\ %{LinterStatus()} set statusline+=%#InterfaceNormalDark# set statusline+=\ %P\ " percentage through file set statusline+=%* " #autocommands " persistent folds augroup AutoSaveFolds autocmd! autocmd BufWritePost *.* mkview autocmd BufWinEnter *.* silent loadview augroup END " set custom syntax highlighting augroup syntaxhighlighting autocmd BufNewFile,BufRead *.html set syntax=html_custom autocmd BufNewFile,BufRead *.php set syntax=php_custom autocmd BufNewFile,BufRead *.vue set syntax=vue_custom autocmd BufNewFile,BufRead *.vue syntax sync fromstart autocmd BufNewFile,BufRead *.js set syntax=pangloss_javascript_custom augroup END " fix higlight problems such as vertical-align etc augroup VimCSS3Syntax autocmd! autocmd FileType css setlocal iskeyword+=- augroup END " Show trailing whitepace and spaces before a tab: augroup whitespaceerrors autocmd Syntax * syn match ExtraWhitespace /\s\+$\| \+\ze\t/ containedin=ALL augroup END " automatically reload if color scheme file written augroup coloreload au! au BufWritePost customred256.vim so $MYVIMRC augroup end augroup linenumbering autocmd InsertEnter * :set norelativenumber autocmd InsertLeave * :set number relativenumber autocmd WinEnter * :set number relativenumber autocmd WinLeave * set norelativenumber augroup END augroup colorcolumns autocmd WinEnter * set colorcolumn=80 autocmd WinLeave * set colorcolumn=0 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 " #functions function! Checksemicolon() :normal $ if getline('.')[col('.')-1] == ';' :startinsert else :startinsert! endif endfunction " 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() " devdocs DD " https://gist.github.com/romainl/8d3b73428b4366f75a19be2dad2f0987#file-devdocs-vim function! s:Get_env() abort if has('win64') || has('win32') || has('win16') return 'WINDOWS' else return toupper(substitute(system('uname'), '\n', '', '')) endif endfunction " What command to use on what system let s:cmds = {"DARWIN": "open", "LINUX": "qutebrowser", "WINDOWS": "start"} " Build the URL stub let s:stub = s:cmds[Get_env()] . " 'http://devdocs.io/?q=" command! -nargs=* DD silent! call system(len(split(, ' ')) == 0 ? \ s:stub . &ft . ' ' . expand('') . "'" : len(split(, ' ')) == 1 ? \ s:stub . &ft . ' ' . . "'" : s:stub . . "'") " use ranger as file manager 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 " #plugin settings " vim-peekaboo let g:peekaboo_window = 'vert to 30new' " gitgutter nmap ]h GitGutterNextHunk nmap [h GitGutterPrevHunk omap ih GitGutterTextObjectInnerPending omap ah GitGutterTextObjectOuterPending xmap ih GitGutterTextObjectInnerVisual xmap ah GitGutterTextObjectOuterVisual " Use the silver searcher ag command instead of grep if executable('ag') " Use ag over grep set grepprg=ag\ --nogroup\ --nocolor " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' " ag is fast enough that CtrlP doesn't need to cache let g:ctrlp_use_caching = 0 endif "vim-wiki let g:vimwiki_list = [{'path': '~/vimwiki/', 'path_html': '~/vimwiki_html/'}] " youcompleteme let g:ycm_collect_identifiers_from_tags_files = 1 " emmet let g:user_emmet_leader_key='' " taboo.vim set sessionoptions+=tabpages,globals let g:taboo_tab_format = ' %f%m ' let g:taboo_renamed_tab_format = ' %l%m ' let g:taboo_modified_tab_flag = '+' " vue-vim " disable preprocessor checking for vue files - increases speed let g:vue_disable_pre_processors=1 " ALE nnoremap ne :lnext nnoremap pe :lprev let g:ale_sign_error = '>>' let g:ale_sign_warning = '--' let g:ale_sign_column_always = 1 let g:ale_linters = {'scss': ['stylelint'], 'javascript': ['eslint'], 'php':['php'], 'html':['htmlhint']} let g:ale_html_htmlhint_options = '-c ~/.htmlhintrc --format=unix' " let g:ale_javascript_eslint_options = '-c ~/.config/eslint/.eslintrc.js' let g:ale_fixers = {'javascript': ['eslint']} " function! ale#handlers#eslint#FindConfig(buffer) " return '/home/ray/.config/eslint/.eslintrc.js' " endfunction 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', l:all_non_errors, l:all_errors) endfunction "nmap (ale_previous_wrap) "nmap (ale_next_wrap) " ultisnips let g:UltiSnipsSnippetsDir="~/.vim/UltiSnips" " Trigger configuration. Do not use if you use https://github.com/Valloric/YouCompleteMe. let g:UltiSnipsExpandTrigger='' let g:UltiSnipsJumpForwardTrigger='' let g:UltiSnipsJumpBackwardTrigger='' let g:UltiSnipsEditSplit='horizontal' " Netrw let g:netrw_liststyle=3 let g:netrw_list_hide='^\..*' " NERDtree " nnoremap :NERDTreeFocus " nnoremap nt :NERDTreeFocus " nnoremap nf :NERDTreeFind " " allow closing if only window open is a NERDTree " augroup nerdtreewindow " autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif " augroup END " let NERDTreeQuitOnOpen = 1 " TagBar nnoremap tb :TagbarOpen fj let g:tagbar_autoclose = 1 " tagbar css/scss thingy nnoremap ] :tag /[.#@]=expand('') " bufexploer nnoremap o :BufExplorer " undotree nnoremap ut :UndotreeToggle " vim-project-tags source ~/.vim/bundle/vim-elhiv/elhiv.vim " override function so we can have custom tag names for built in languages " function! project_tags#add_built_in_language_support() " call project_tags#add_language('.jstags', 'js') " call project_tags#add_language('.vimtags', 'vim') " call project_tags#add_language('.phptags', 'php') " endfunction " above function causes error (maybe autoloading problem when no " tags are being used or whatever?) " see if following three lines work instead call project_tags#add_language('.jstags', 'js') call project_tags#add_language('.vimtags', 'vim') call project_tags#add_language('.phptags', 'php') call project_tags#add_language('.csstags','css') call project_tags#add_language('.scsstags','scss') 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' \ ] \} let g:tagbar_type_vue = { \ 'ctagstype' : 'vue', \ 'kinds' : [ \ 'o:objects', \ 'f:functions', \ 'a:array', \ 's:string', \ 'b:boolean', \ 'n:number', \ 'v:variable' \ ] \ } " ze end