123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- " based on http://github.com/jferris/config_files/blob/master/vimrc
- " Use Vim settings, rather then Vi settings (much better!).
- " This must be first, because it changes other options as a side effect.
- set nocompatible
- " allow backspacing over everything in insert mode
- set backspace=indent,eol,start
- set nobackup
- set nowritebackup
- set history=50 " keep 50 lines of command line history
- set ruler " show the cursor position all the time
- set showcmd " display incomplete commands
- set incsearch " do incremental searching
- " Don't use Ex mode, use Q for formatting
- map Q gq
- " This is an alternative that also works in block mode, but the deleted
- " text is lost and it only works for putting the current register.
- "vnoremap p "_dp
- " Switch syntax highlighting on, when the terminal has colors
- " Also switch on highlighting the last used search pattern.
- if (&t_Co > 2 || has("gui_running")) && !exists("syntax_on")
- syntax on
- set hlsearch
- endif
- " Switch wrap off for everything
- set nowrap
- " Only do this part when compiled with support for autocommands.
- if has("autocmd")
- " Enable file type detection.
- " Use the default filetype settings, so that mail gets 'tw' set to 72,
- " 'cindent' is on in C files, etc.
- " Also load indent files, to automatically do language-dependent indenting.
- filetype plugin indent on
- " Set File type to 'text' for files ending in .txt
- autocmd BufNewFile,BufRead *.txt setfiletype text
- " Enable soft-wrapping for text files
- autocmd FileType text,markdown,html,xhtml,eruby setlocal wrap linebreak nolist
- " Put these in an autocmd group, so that we can delete them easily.
- augroup vimrcEx
- au!
- " For all text files set 'textwidth' to 78 characters.
- " autocmd FileType text setlocal textwidth=78
- " When editing a file, always jump to the last known cursor position.
- " Don't do it when the position is invalid or when inside an event handler
- " (happens when dropping a file on gvim).
- autocmd BufReadPost *
- \ if line("'\"") > 0 && line("'\"") <= line("$") |
- \ exe "normal g`\"" |
- \ endif
- " Automatically load .vimrc source when saved
- autocmd BufWritePost .vimrc source $MYVIMRC
- augroup END
- else
- set autoindent " always set autoindenting on
- endif " has("autocmd")
- " if has("folding")
- " set foldenable
- " set foldmethod=syntax
- " set foldlevel=1
- " set foldnestmax=2
- " set foldtext=strpart(getline(v:foldstart),0,50).'\ ...\ '.substitute(getline(v:foldend),'^[\ #]*','','g').'\ '
- " endif
- " Softtabs, 2 spaces
- set tabstop=2
- set shiftwidth=2
- set expandtab
- " Always display the status line
- set laststatus=2
- " \ is the leader character
- let mapleader = ","
- " Edit the README_FOR_APP (makes :R commands work)
- map <Leader>R :e doc/README_FOR_APP<CR>
- " Leader shortcuts for Rails commands
- map <Leader>m :Rmodel
- map <Leader>c :Rcontroller
- map <Leader>v :Rview
- map <Leader>u :Runittest
- map <Leader>f :Rfunctionaltest
- map <Leader>tm :RTmodel
- map <Leader>tc :RTcontroller
- map <Leader>tv :RTview
- map <Leader>tu :RTunittest
- map <Leader>tf :RTfunctionaltest
- map <Leader>sm :RSmodel
- map <Leader>sc :RScontroller
- map <Leader>sv :RSview
- map <Leader>su :RSunittest
- map <Leader>sf :RSfunctionaltest
- " Hide search highlighting
- map <Leader>h :set invhls <CR>
- " Opens an edit command with the path of the currently edited file filled in
- " Normal mode: <Leader>e
- map <Leader>e :e <C-R>=expand("%:p:h") . "/" <CR>
- " Opens a tab edit command with the path of the currently edited file filled in
- " Normal mode: <Leader>t
- map <Leader>te :tabe <C-R>=expand("%:p:h") . "/" <CR>
- " Inserts the path of the currently edited file into a command
- " Command mode: Ctrl+P
- cmap <C-P> <C-R>=expand("%:p:h") . "/" <CR>
- " Duplicate a selection
- " Visual mode: D
- vmap D y'>p
- " Press Shift+P while in visual mode to replace the selection without
- " overwriting the default register
- vmap P p :call setreg('"', getreg('0')) <CR>
- " For Haml
- au! BufRead,BufNewFile *.haml setfiletype haml
- " No Help, please
- nmap <F1> <Esc>
- " Press ^F from insert mode to insert the current file name
- imap <C-F> <C-R>=expand("%")<CR>
- " Maps autocomplete to tab
- imap <Tab> <C-N>
- imap <C-L> <Space>=><Space>
- " Display extra whitespace
- " set list listchars=tab:Èá,trail:á
- " Edit routes
- command! Rroutes :e config/routes.rb
- command! Rschema :e db/schema.rb
- " Local config
- if filereadable(".vimrc.local")
- source .vimrc.local
- endif
- " Use Ack instead of Grep when available
- if executable("ack")
- set grepprg=ack\ -H\ --nogroup\ --nocolor\ --ignore-dir=tmp\ --ignore-dir=coverage
- endif
- " Color scheme
- " colorscheme vividchalk
- " highlight NonText guibg=#060606
- " highlight Folded guibg=#0A0A0A guifg=#9090D0
- " Numbers
- set number
- set numberwidth=5
- " Snippets are activated by Shift+Tab
- let g:snippetsEmu_key = "<S-Tab>"
- " Tab completion options
- " (only complete to the longest unambiguous match, and show a menu)
- set completeopt=longest,menu
- set wildmode=list:longest,list:full
- set complete=.,t
- " case only matters with mixed case expressions
- set ignorecase
- set smartcase
- " Tags
- let g:Tlist_Ctags_Cmd="ctags --exclude='*.js'"
- set tags=./tags;
- let g:fuf_splitPathMatching=1
- " Open URL
- command -bar -nargs=1 OpenURL :!open <args>
- function! OpenURL()
- let s:uri = matchstr(getline("."), '[a-z]*:\/\/[^ >,;:]*')
- echo s:uri
- if s:uri != ""
- exec "!open \"" . s:uri . "\""
- else
- echo "No URI found in line."
- endif
- endfunction
- map <Leader>w :call OpenURL()<CR>
|