-
-
Save formix/81c4f23de359f3507d378914663a53c9 to your computer and use it in GitHub Desktop.
My .vimrc file
This file contains 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
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 <BS>, 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 <leader>w saves the current file | |
let mapleader = "," | |
let g:mapleader = "," | |
" Fast saves | |
nmap <leader>w :w!<cr> | |
" Down is really the next line | |
nnoremap j gj | |
nnoremap k gk | |
"Easy escaping to normal model | |
imap jj <esc> | |
"Auto change directory to match current file ,cd | |
nnoremap ,cd :cd %:p:h<CR>:pwd<CR> | |
"easier window navigation | |
nmap <C-h> <C-w>h | |
nmap <C-j> <C-w>j | |
nmap <C-k> <C-w>k | |
nmap <C-l> <C-w>l | |
"Resize vsplit | |
nmap <C-v> :vertical resize +5<cr> | |
nmap 25 :vertical resize 40<cr> | |
nmap 50 <c-w>= | |
nmap 75 :vertical resize 120<cr> | |
nmap <C-b> :NERDTreeToggle<cr> | |
"Load the current buffer in Chrome | |
nmap ,c :!open -a Google\ Chrome<cr> | |
"Show (partial) command in the status line | |
set showcmd | |
" Create split below | |
nmap :sp :rightbelow sp<cr> | |
" Quickly go forward or backward to buffer | |
nmap :bp :BufSurfBack<cr> | |
nmap :bn :BufSurfForward<cr> | |
highlight Search cterm=underline | |
" Swap files out of the project root | |
set backupdir=~/.vim/backup// | |
set directory=~/.vim/swap// | |
" Run PHPUnit tests | |
map <Leader>t :!phpunit %<cr> | |
" Easy motion stuff | |
let g:EasyMotion_leader_key = '<Leader>' | |
" 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<cr> | |
" Laravel framework commons | |
nmap <leader>lr :e app/routes.php<cr> | |
nmap <leader>lca :e app/config/app.php<cr>81Gf(%O | |
nmap <leader>lcd :e app/config/database.php<cr> | |
nmap <leader>lc :e composer.json<cr> | |
" 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()<cr> | |
" CtrlP Stuff | |
" Familiar commands for file/symbol browsing | |
map <D-p> :CtrlP<cr> | |
map <C-r> :CtrlPBufTag<cr> | |
" 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<cr> | |
nmap sp :split<cr> | |
" 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<?php namespace ' . namespace . '; | |
else | |
exec 'normal i<?php | |
endif | |
" Open class | |
exec 'normal iclass ' . name . ' {^M}^[O^[' | |
exec 'normal i^M public function __construct()^M{^M ^M}^[' | |
endfunction | |
nmap ,1 :call Class()<cr> | |
" 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()<cr> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment