435 lines
10 KiB
VimL
435 lines
10 KiB
VimL
set nocompatible " be iMproved, required
|
|
filetype off " required
|
|
set ttyfast
|
|
|
|
" 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'
|
|
|
|
" WordPress.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'
|
|
|
|
|
|
|
|
" 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
|
|
|
|
colorscheme customred256
|
|
|
|
" ignore case when searching
|
|
set ignorecase
|
|
" unless search contains uppercase
|
|
set smartcase
|
|
|
|
set hidden
|
|
|
|
set bg=dark
|
|
" set number
|
|
set nonumber
|
|
set autoindent
|
|
|
|
" set width of the fold column to create a margin
|
|
set foldcolumn=2
|
|
|
|
" key mappings
|
|
let mapleader = "\<space>"
|
|
|
|
" jk acts as escape in insert,visual/select modes
|
|
inoremap jk <esc>
|
|
inoremap <esc> <nop>
|
|
vnoremap jk <esc>
|
|
vnoremap <esc> <nop>
|
|
|
|
" disable arrow keys
|
|
noremap <Up> <nop>
|
|
noremap <Down> <nop>
|
|
noremap <Left> <nop>
|
|
noremap <Right> <nop>
|
|
|
|
|
|
|
|
|
|
" better window navigaton
|
|
nnoremap <C-h> <C-w>h
|
|
nnoremap <C-l> <C-w>l
|
|
nnoremap <C-k> <C-w>k
|
|
nnoremap <C-j> <C-w>j
|
|
|
|
" better window resizing
|
|
" need to use <Esc>j because urxvt sends the character prefixed with Escape
|
|
" instead of setting the eighth bit
|
|
" see https://unix.stackexchange.com/a/199705
|
|
nnoremap <Esc>j :resize +1<CR>
|
|
nnoremap <Esc>k :resize -1<CR>
|
|
nnoremap <Esc>l :vertical resize +1<CR>
|
|
nnoremap <Esc>h :vertical resize -1<CR>
|
|
|
|
|
|
|
|
" abbreviations
|
|
iabbrev adn and
|
|
iabbrev waht what
|
|
iabbrev tehn then
|
|
|
|
|
|
|
|
|
|
" 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=<Esc>[3%p1%dm
|
|
set t_Sb=<Esc>[4%p1%dm
|
|
|
|
nnoremap <F2> :set invpaste paste?<CR>
|
|
set pastetoggle=<F2>
|
|
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 <leader>p :echom SyntaxItem()<CR>
|
|
|
|
|
|
|
|
" plugins stuff
|
|
|
|
" MUcomplete
|
|
set completeopt+=menuone
|
|
let g:mucomplete#enable_auto_at_startup = 1
|
|
inoremap <expr> <c-e> mucomplete#popup_exit("\<c-e>")
|
|
inoremap <expr> <c-y> mucomplete#popup_exit("\<c-y>")
|
|
inoremap <expr> <cr> mucomplete#popup_exit("\<cr>")
|
|
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_sign_column_always = 1
|
|
|
|
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 <silent> <C-k> <Plug>(ale_previous_wrap)
|
|
"nmap <silent> <C-j> <Plug>(ale_next_wrap)
|
|
|
|
"wordpress.vim
|
|
let g:wordpress_vim_wordpress_path = "~/Projects/Wordpress/WordpressSource"
|
|
|
|
|
|
" 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 <tab> if you use https://github.com/Valloric/YouCompleteMe.
|
|
let g:UltiSnipsExpandTrigger="<leader>u"
|
|
let g:UltiSnipsJumpForwardTrigger="<c-b>"
|
|
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
|
|
|
|
" NERDtree
|
|
nnoremap <F3> :NERDTreeFocus<CR>
|
|
nnoremap <leader>nt :NERDTreeFocus<CR>
|
|
" allow closing if only window open is a NERDTree
|
|
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
|
|
|
|
" TagBar
|
|
nnoremap <leader>tb :TagbarOpen fj<CR>
|
|
|
|
|
|
" tagbar css/scss thingy
|
|
nnoremap <leader>] :tag /[.#@]<c-r>=expand('<cword>')<cr><cr>
|
|
|
|
|
|
" bufexploer
|
|
nnoremap <leader>o :BufExplorer<CR>
|
|
|
|
" undotree
|
|
nnoremap <leader>ut :UndotreeToggle<cr>
|
|
" 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 <Leader>ra :call RangerExplorer()<CR>
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
" ze end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|