From 12e9be25cc9b6cbf6b84f9b7c539136684e1b6c7 Mon Sep 17 00:00:00 2001 From: Matthew Reschke Date: Wed, 4 Mar 2015 00:13:03 -0600 Subject: [PATCH] More bundles and vimrc stuff --- bundle/ctrlp.vim | 1 + bundle/vim-blade | 1 + bundle/vim-nerdtree-tabs | 1 + vimrc | 171 +++++++++++++++++++++++++++++++---- vimrc-jefferyway | 190 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 347 insertions(+), 17 deletions(-) create mode 160000 bundle/ctrlp.vim create mode 160000 bundle/vim-blade create mode 160000 bundle/vim-nerdtree-tabs create mode 100644 vimrc-jefferyway diff --git a/bundle/ctrlp.vim b/bundle/ctrlp.vim new file mode 160000 index 0000000..b5d3fe6 --- /dev/null +++ b/bundle/ctrlp.vim @@ -0,0 +1 @@ +Subproject commit b5d3fe66a58a13d2ff8b6391f4387608496a030f diff --git a/bundle/vim-blade b/bundle/vim-blade new file mode 160000 index 0000000..8fc9503 --- /dev/null +++ b/bundle/vim-blade @@ -0,0 +1 @@ +Subproject commit 8fc9503941429ff773cbdef6d590c8a485e9a498 diff --git a/bundle/vim-nerdtree-tabs b/bundle/vim-nerdtree-tabs new file mode 160000 index 0000000..0decec1 --- /dev/null +++ b/bundle/vim-nerdtree-tabs @@ -0,0 +1 @@ +Subproject commit 0decec122e9bb3e9328b01fa20a9650e79cc6ca7 diff --git a/vimrc b/vimrc index 699fb81..006d3f7 100644 --- a/vimrc +++ b/vimrc @@ -1,3 +1,6 @@ +" mReschke Personal Debian based Vimrc +" 2015-03-02 + " All system-wide defaults are set in $VIMRUNTIME/debian.vim and sourced by " the call to :runtime you can find below. If you wish to change any of those " settings, you should do it in this file (/etc/vim/vimrc), since debian.vim @@ -14,12 +17,6 @@ runtime! debian.vim " options, so any other options should be set AFTER setting 'compatible'. "set compatible -" Uncomment the following to have Vim jump to the last position when -" reopening a file -"if has("autocmd") -" au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif -"endif - " Source a global configuration file if available if filereadable("/etc/vim/vimrc.local") source /etc/vim/vimrc.local @@ -41,7 +38,7 @@ let maplocalleader="\\" set showmode " always show what mode we're currently editing in set nowrap " don't wrap lines -set tabstop=4 " a tab is four spaces"set softtabstop=4 " when hitting , pretend like a tab is removed, even if spaces +set tabstop=4 " a tab is four spaces"set softtabstop=4 set softtabstop=4 " when hitting , pretend like a tab is removed, even if spaces set expandtab " expand tabs by default (overloadable per file type later) set shiftwidth=4 " number of spaces to use for autoindenting @@ -58,7 +55,7 @@ set smartcase " ignore case if search pattern is all lowercase set smarttab " insert tabs on the start of a line according to " shiftwidth, not tabstop set scrolloff=4 " keep 4 lines off the edges of the screen when scrolling -set virtualedit=all " allow the cursor to go in to "invalid" places +"set virtualedit=all " allow the cursor to go in to "invalid" places set hlsearch " highlight search terms set incsearch " show search matches as you type set gdefault " search/replace "globally" (on a line) by default @@ -82,8 +79,9 @@ set nrformats= " make and play well with set shortmess+=I " hide the launch screen set clipboard=unnamed " normal OS clipboard interaction set autoread " automatically reload files changed outside of Vim +"set autowrite " automatically save file on buffer switch - " Toggle show/hide invisible chars +" Toggle show/hide invisible chars nnoremap i :set list! " Toggle line numbers @@ -106,6 +104,8 @@ set foldmethod=marker " detect triple-{ style fold markers set foldlevelstart=99 " start out with everything unfolded set foldopen=block,hor,insert,jump,mark,percent,quickfix,search,tag,undo " which commands trigger auto-unfold +let php_folding=1 + function! MyFoldText() let line = getline(v:foldstart) @@ -130,6 +130,8 @@ nnoremap z2 :set foldlevel=2 nnoremap z3 :set foldlevel=3 nnoremap z4 :set foldlevel=4 nnoremap z5 :set foldlevel=5 +nnoremap za +vnoremap za " }}} " Editor layout {{{ @@ -269,6 +271,13 @@ noremap k noremap l nnoremap w vl +"Resize vsplit +nmap :vertical resize +5 +nmap 25 :vertical resize 40 + +"Load the current buffer in Chrome +"nmap o :!chromium + " Complete whole filenames/lines with a quicker shortcut key in insert mode inoremap inoremap @@ -320,10 +329,6 @@ nnoremap :redraw! nnoremap % vnoremap % -" Folding -nnoremap za -vnoremap za - " Strip all trailing whitespace from a file, using ,W nnoremap W :%s/\s\+$//:let @/='' @@ -364,8 +369,9 @@ nnoremap :GundoToggle " }}} " NERDTree settings {{{ -nnoremap n :NERDTree -nnoremap m :NERDTreeClose:NERDTreeFind +nnoremap n :NERDTreeTabsToggle +"nnoremap n :NERDTree +"nnoremap m :NERDTreeClose:NERDTreeFind "conflicts with toggle line numbers "nnoremap N :NERDTreeClose @@ -395,7 +401,76 @@ let NERDTreeIgnore=[ '\.pyc$', '\.pyo$', '\.py\$class$', '\.obj$', \ '\.o$', '\.so$', '\.egg$', '^\.git$' ] " }}} - + +" TagList settings {{{ +nnoremap l :TlistClose:TlistToggle +nnoremap L :TlistClose + +" quit Vim when the TagList window is the last open window +let Tlist_Exit_OnlyWindow=1 " quit when TagList is the last open window +let Tlist_GainFocus_On_ToggleOpen=1 " put focus on the TagList window when it opens +"let Tlist_Process_File_Always=1 " process files in the background, even when the TagList window isn't open +"let Tlist_Show_One_File=1 " only show tags from the current buffer, not all open buffers +let Tlist_WinWidth=40 " set the width +let Tlist_Inc_Winwidth=1 " increase window by 1 when growing + +" shorten the time it takes to highlight the current tag (default is 4 secs) +" note that this setting influences Vim's behaviour when saving swap files, +" but we have already turned off swap files (earlier) +"set updatetime=1000 + +" the default ctags in /usr/bin on the Mac is GNU ctags, so change it to the +" exuberant ctags version in /usr/local/bin +let Tlist_Ctags_Cmd = '/usr/local/bin/ctags' + +" show function/method prototypes in the list +let Tlist_Display_Prototype=1 + +" don't show scope info +let Tlist_Display_Tag_Scope=0 + +" show TagList window on the right +let Tlist_Use_Right_Window=1 + +" }}} + +" vim-flake8 default configuration +let g:flake8_show_in_gutter=1 + +" Conflict markers {{{ +" highlight conflict markers +match ErrorMsg '^\(<\|=\|>\)\{7\}\([^=].\+\)\?$' + +" shortcut to jump to next conflict marker +nnoremap c /^\(<\\|=\\|>\)\{7\}\([^=].\+\)\?$ +" }}} + +" Restore cursor position upon reopening files {{{ +autocmd BufReadPost * + \ if line("'\"") > 0 && line("'\"") <= line("$") | + \ exe "normal! g`\"" | + \ endif +" }}} + +" Extra vi-compatibility {{{ +" set extra vi-compatible options +set cpoptions+=$ " when changing a line, don't redisplay, but put a '$' at + " the end during the change +set formatoptions-=o " don't start new lines w/ comment leader on pressing 'o' +au filetype vim set formatoptions-=o + " somehow, during vim filetype detection, this gets set + " for vim files, so explicitly unset it again +" }}} + +" Ignore common directories +let g:ctrlp_custom_ignore = { + \ 'dir': 'node_modules\|bower_components', + \ } + +" Invoke CtrlP, but CommandT style +nnoremap t :CtrlP +nnoremap b :CtrlPTag +nnoremap . :CtrlPBuffer if has("gui_running") @@ -460,4 +535,66 @@ function! PulseCursorLine() endfunction " }}} - + +" Powerline configuration ------------------------------------------------- {{{ + +" Dont have powerline, too much of a pain to install, to many dependencies +"let g:Powerline_symbols = 'compatible' +"let g:Powerline_symbols = 'fancy' + +" }}} + + +" Use shift-H and shift-L for move to beginning/end +nnoremap H 0 +nnoremap L $ + +" Split previously opened file ('#') in a split window +nnoremap sh :execute "leftabove vsplit" bufname('#') +nnoremap sl :execute "rightbelow vsplit" bufname('#') + +" Abbreviations +" ------------------------------------------------------------------------- {{{ +"abbrev pv !php artisan +" }}} + + +" Laravel and PHP stuff --------------------------------------------------- {{{ +" Auto-remove trailing spaces in PHP files +autocmd BufWritePre *.php :%s/\s\+$//e + +" Laravel framework commons +"nmap lr :e app/routes.php +"nmap lca :e app/config/app.php81Gf(%O +"nmap lcd :e app/config/database.php +"nmap lc :e composer.json + +" I don't want to pull up these folders/files when calling CtrlP +set wildignore+=*/vendor/** +set wildignore+=*/node_modules/** + +"Auto change directory to match current file ,cd +nnoremap ,cd :cd %:p:h:pwd + +" Prepare a new PHP class +function! Class() + let name = input('Class name? ') + let namespace = input('Any Namespace? ') + + if strlen(namespace) + exec "normal i\" + else + exec "normal i" + endif + + " Open class + exec "normal iclass " . name . " {\}\O\" + + exec "normal i\ public function __construct()\{\\}\" +endfunction +nmap ,1 :call Class() + + +" }}} + + diff --git a/vimrc-jefferyway b/vimrc-jefferyway new file mode 100644 index 0000000..23457bf --- /dev/null +++ b/vimrc-jefferyway @@ -0,0 +1,190 @@ +set nocompatible " Disable vi-compatibility +set t_Co=256 + +colorscheme xoria256 +set guifont=menlo\ for\ powerline:h16 +set guioptions-=T " Removes top toolbar +set guioptions-=r " Removes right hand scroll bar +set go-=L " Removes left hand scroll bar +set linespace=15 + +set showmode " always show what mode we're currently editing in +set nowrap " don't wrap lines +set tabstop=4 " a tab is four spaces +set smarttab +set tags=tags +set softtabstop=4 " when hitting , pretend like a tab is removed, even if spaces +set expandtab " expand tabs by default (overloadable per file type later) +set shiftwidth=4 " number of spaces to use for autoindenting +set shiftround " use multiple of shiftwidth when indenting with '<' and '>' +set backspace=indent,eol,start " allow backspacing over everything in insert mode +set autoindent " always set autoindenting on +set copyindent " copy the previous indentation on autoindenting +set number " always show line numbers +set ignorecase " ignore case when searching +set smartcase " ignore case if search pattern is all lowercase, +set timeout timeoutlen=200 ttimeoutlen=100 +set visualbell " don't beep +set noerrorbells " don't beep +set autowrite "Save on buffer switch +set mouse=a + +" With a map leader it's possible to do extra key combinations +" like w saves the current file +let mapleader = "," +let g:mapleader = "," + +" Fast saves +nmap w :w! + +" Down is really the next line +nnoremap j gj +nnoremap k gk + +"Easy escaping to normal model +imap jj + +"Auto change directory to match current file ,cd +nnoremap ,cd :cd %:p:h:pwd + +"easier window navigation + +nmap h +nmap j +nmap k +nmap l + +"Resize vsplit +nmap :vertical resize +5 +nmap 25 :vertical resize 40 +nmap 50 = +nmap 75 :vertical resize 120 + +nmap :NERDTreeToggle + +"Load the current buffer in Chrome +nmap ,c :!open -a Google\ Chrome + +"Show (partial) command in the status line +set showcmd + +" Create split below +nmap :sp :rightbelow sp + +" Quickly go forward or backward to buffer +nmap :bp :BufSurfBack +nmap :bn :BufSurfForward + +highlight Search cterm=underline + +" Swap files out of the project root +set backupdir=~/.vim/backup// +set directory=~/.vim/swap// + +" Run PHPUnit tests +map t :!phpunit % + +" Easy motion stuff +let g:EasyMotion_leader_key = '' + +" Powerline (Fancy thingy at bottom stuff) +let g:Powerline_symbols = 'fancy' +set laststatus=2 " Always show the statusline +set encoding=utf-8 " Necessary to show Unicode glyphs +set noshowmode " Hide the default mode text (e.g. -- INSERT -- below the statusline) + +autocmd cursorhold * set nohlsearch +autocmd cursormoved * set hlsearch + +" Remove search results +command! H let @/="" + +" If you prefer the Omni-Completion tip window to close when a selection is +" made, these lines close it on movement in insert mode or when leaving +" insert mode +autocmd CursorMovedI * if pumvisible() == 0|pclose|endif +autocmd InsertLeave * if pumvisible() == 0|pclose|endif + +" Abbreviations +abbrev pft PHPUnit_Framework_TestCase + +abbrev gm !php artisan generate:model +abbrev gc !php artisan generate:controller +abbrev gmig !php artisan generate:migration + +" Auto-remove trailing spaces +autocmd BufWritePre *.php :%s/\s\+$//e + +" Edit todo list for project +nmap ,todo :e todo.txt + +" Laravel framework commons +nmap lr :e app/routes.php +nmap lca :e app/config/app.php81Gf(%O +nmap lcd :e app/config/database.php +nmap lc :e composer.json + +" Concept - load underlying class for Laravel +function! FacadeLookup() + let facade = input('Facade Name: ') + let classes = { +\ 'Form': 'Html/FormBuilder.php', +\ 'Html': 'Html/HtmlBuilder.php', +\ 'File': 'Filesystem/Filesystem.php', +\ 'Eloquent': 'Database/Eloquent/Model.php' +\ } + + execute ":edit vendor/laravel/framework/src/Illuminate/" . classes[facade] +endfunction +nmap ,lf :call FacadeLookup() + +" CtrlP Stuff + +" Familiar commands for file/symbol browsing +map :CtrlP +map :CtrlPBufTag + +" I don't want to pull up these folders/files when calling CtrlP +set wildignore+=*/vendor/** +set wildignore+=*/public/forum/** + +" Open splits +nmap vs :vsplit +nmap sp :split + +" Create/edit file in the current directory +nmap :ed :edit %:p:h/ + +" Prepare a new PHP class +function! Class() + let name = input('Class name? ') + let namespace = input('Any Namespace? ') + + if strlen(namespace) + exec 'normal i + +" Add a new dependency to a PHP class +function! AddDependency() + let dependency = input('Var Name: ') + let namespace = input('Class Path: ') + + let segments = split(namespace, '\') + let typehint = segments[-1] + + exec 'normal gg/construct^M:H^Mf)i, ' . typehint . ' $' . dependency . '^[/}^>O$this->^[a' . dependency . ' = $' . dependency . ';^[?{^MkOprotected $' . dependency . ';^M^[?{^MOuse ' . namespace . ';^M^[' + + " Remove opening comma if there is only one dependency + exec 'normal :%s/(, /(/g +' +endfunction +nmap ,2 :call AddDependency() \ No newline at end of file