Created
November 11, 2014 22:10
-
-
Save nellshamrell/71c6903cac101a3f330c to your computer and use it in GitHub Desktop.
Nell's .vimrc
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
" Configuration file for vim | |
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 'gmarik/Vundle.vim' | |
" All of your Plugins must be added before the following line | |
call vundle#end() " required | |
filetype plugin indent on " required | |
" Plugins | |
Plugin 't9md/vim-ruby-xmpfilter' | |
" vim-ruby-xmpfilter bindings | |
map <F4> <Plug>(xmpfilter-mark) | |
map <F5> <Plug>(xmpfilter-run) | |
" 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 | |
set number | |
syntax on | |
let mapleader="," | |
" Enable filetype plugins | |
:filetype plugin on | |
" Normally we use vim-extensions. If you want true vi-compatibility | |
" remove change the following statements | |
set nocompatible " Use Vim defaults instead of 100% vi compatibility | |
set backspace=indent,eol,start " more powerful backspacing | |
" Now we set some defaults for the editor | |
set autoindent " always set autoindenting on | |
set textwidth=0 " Don't wrap words by default | |
set viminfo='20,\"50 " read/write a .viminfo file, don't store more than | |
" 50 lines of registers | |
set history=500 " keep 50 lines of command line history | |
set ruler " show the cursor position all the time | |
set expandtab " insert space characters when the tab key is pressed | |
set tabstop=2 " set tab to 2 spaces | |
set shiftwidth=2 " when indenting, do 2 spaces | |
" Don't do swap files | |
set noswapfile | |
function! <SID>StripTrailingWhitespaces() | |
" Preparation: save last search, and cursor position. | |
let _s=@/ | |
let l = line('.') | |
let c = col('.') | |
" Do the business: | |
%s/\s\+$//e | |
" Clean up: restore previous search history, and cursor position | |
let @/=_s | |
call cursor(l, c) | |
endfunction | |
if has("autocmd") | |
" Enabled file type detection | |
" Use the default filetype settings. If you also want to load indent files | |
" to automatically do language-dependent indenting add 'indent' as well. | |
filetype plugin on | |
autocmd BufWritePre * call <SID>StripTrailingWhitespaces() | |
endif " has ("autocmd") | |
set showmatch " Show matching brackets. | |
" Testing! | |
nnoremap <leader>. :call OpenTestAlternate()<cr> | |
map <leader>t :call RunTestFile()<cr> | |
map <leader>T :call RunNearestTest()<cr> | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" SWITCH BETWEEN TEST AND PRODUCTION CODE | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
function! OpenTestAlternate() | |
let new_file = AlternateForCurrentFile() | |
" Open in vertical split | |
exec ':vs' | |
exec ':e ' . new_file | |
endfunction | |
function! AlternateForCurrentFile() | |
let current_file = expand("%") | |
let new_file = current_file | |
let in_spec = match(current_file, '^spec/') != -1 | |
let going_to_spec = !in_spec | |
let in_app = match(current_file, '\<controllers\>') != -1 || match(current_file, '\<models\>') != -1 || match(current_file, '\<views\>') != -1 || match(current_file, '\<services\>') != -1 || match(current_file, '\<helpers\>') != -1 | |
if going_to_spec | |
if in_app | |
let new_file = substitute(new_file, '^app/', '', '') | |
end | |
let new_file = substitute(new_file, '\.rb$', '_spec.rb', '') | |
let new_file = 'spec/' . new_file | |
else | |
let new_file = substitute(new_file, '_spec\.rb$', '.rb', '') | |
let new_file = substitute(new_file, '^spec/', '', '') | |
if in_app | |
let new_file = 'app/' . new_file | |
end | |
endif | |
return new_file | |
endfunction | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" RUNNING TESTS | |
" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
function! RunTestFile(...) | |
if a:0 | |
let command_suffix = a:1 | |
else | |
let command_suffix = "" | |
endif | |
" Run the tests for the previously-marked file. | |
let in_test_file = match(expand("%"), '\(.feature\|_spec.rb\)$') != -1 | |
if in_test_file | |
call SetTestFile() | |
elseif !exists("t:grb_test_file") | |
return | |
end | |
call RunTests(t:grb_test_file . command_suffix) | |
endfunction | |
function! RunNearestTest() | |
let spec_line_number = line('.') | |
call RunTestFile(":" . spec_line_number) | |
endfunction | |
function! SetTestFile() | |
" Set the spec file that tests will be run for. | |
let t:grb_test_file=@% | |
endfunction | |
function! RunTests(filename) | |
" Write the file and run tests for the given filename | |
:w | |
:silent !echo;echo;echo;echo;echo;echo;echo;echo;echo;echo | |
:silent !echo;echo;echo;echo;echo;echo;echo;echo;echo;echo | |
:silent !echo;echo;echo;echo;echo;echo;echo;echo;echo;echo | |
:silent !echo;echo;echo;echo;echo;echo;echo;echo;echo;echo | |
:silent !echo;echo;echo;echo;echo;echo;echo;echo;echo;echo | |
:silent !echo;echo;echo;echo;echo;echo;echo;echo;echo;echo | |
if filereadable("config/environment.rb") | |
exec ":!rspec --color --format=nested --order default " . a:filename | |
else | |
exec ":!rspec --color --format=nested " . a:filename | |
end | |
endfunction |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment