Created
December 18, 2013 17:31
-
-
Save felipesabino/8026426 to your computer and use it in GitHub Desktop.
.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
" Make vim more useful | |
set nocompatible | |
" Set syntax highlighting options. | |
set t_Co=256 | |
set background=dark | |
syntax on | |
" colorscheme badwolf | |
" Enabled later, after Pathogen | |
filetype off | |
" Change mapleader | |
let mapleader="," | |
" Local dirs | |
set backupdir=~/.vim/backups | |
set directory=~/.vim/swaps | |
set undodir=~/.vim/undo | |
" Set some junk | |
set autoindent " Copy indent from last line when starting new line. | |
set backspace=indent,eol,start | |
set cursorline " Highlight current line | |
set diffopt=filler " Add vertical spaces to keep right and left aligned | |
set diffopt+=iwhite " Ignore whitespace changes (focus on code changes) | |
set encoding=utf-8 nobomb " BOM often causes trouble | |
set esckeys " Allow cursor keys in insert mode. | |
set expandtab " Expand tabs to spaces | |
set foldcolumn=4 " Column to show folds | |
set foldenable | |
set foldlevel=2 | |
" set foldlevelstart=2 " Sets `foldlevel` when editing a new buffer | |
set foldmethod=syntax " Markers are used to specify folds. | |
set foldminlines=0 " Allow folding single lines | |
set foldnestmax=3 " Set max fold nesting level | |
set formatoptions= | |
set formatoptions+=c " Format comments | |
set formatoptions+=r " Continue comments by default | |
set formatoptions+=o " Make comment when using o or O from comment line | |
set formatoptions+=q " Format comments with gq | |
set formatoptions+=n " Recognize numbered lists | |
set formatoptions+=2 " Use indent from 2nd line of a paragraph | |
set formatoptions+=l " Don't break lines that are already long | |
set formatoptions+=1 " Break before 1-letter words | |
set gdefault " By default add g flag to search/replace. Add g to toggle. | |
set hidden " When a buffer is brought to foreground, remember undo history and marks. | |
set history=1000 " Increase history from 20 default to 1000 | |
set hlsearch " Highlight searches | |
set ignorecase " Ignore case of searches. | |
set incsearch " Highlight dynamically as pattern is typed. | |
set laststatus=2 " Always show status line | |
set lispwords+=defroutes " Compojure | |
set lispwords+=defpartial,defpage " Noir core | |
set lispwords+=defaction,deffilter,defview,defsection " Ciste core | |
set lispwords+=describe,it " Speclj TDD/BDD | |
set magic " Enable extended regexes. | |
set mouse=a " Enable moouse in all in all modes. | |
set noerrorbells " Disable error bells. | |
set nojoinspaces " Only insert single space after a '.', '?' and '!' with a join command. | |
set nostartofline " Don't reset cursor to start of line when moving around. | |
set nowrap " Do not wrap lines. | |
set nu " Enable line numbers. | |
set ofu=syntaxcomplete#Complete " Set omni-completion method. | |
set report=0 " Show all changes. | |
set ruler " Show the cursor position | |
set scrolloff=3 " Start scrolling three lines before horizontal border of window. | |
set shiftwidth=2 " The # of spaces for indenting. | |
set shortmess=atI " Don't show the intro message when starting vim. | |
set showmode " Show the current mode. | |
set showtabline=2 " Always show tab bar. | |
set sidescrolloff=3 " Start scrolling three columns before vertical border of window. | |
set smartcase " Ignore 'ignorecase' if search patter contains uppercase characters. | |
set smarttab " At start of line, <Tab> inserts shiftwidth spaces, <Bs> deletes shiftwidth spaces. | |
set softtabstop=2 " Tab key results in 2 spaces | |
set splitbelow " New window goes below | |
set splitright " New windows goes right | |
set suffixes=.bak,~,.swp,.swo,.o,.d,.info,.aux,.log,.dvi,.pdf,.bin,.bbl,.blg,.brf,.cb,.dmg,.exe,.ind,.idx,.ilg,.inx,.out,.toc,.pyc,.pyd,.dll | |
set title " Show the filename in the window titlebar. | |
set ttyfast " Send more characters at a given time. | |
set ttymouse=xterm " Set mouse type to xterm. | |
set undofile " Persistent Undo. | |
set visualbell " Use visual bell instead of audible bell (annnnnoying) | |
set wildchar=<TAB> " Character for CLI expansion (TAB-completion). | |
set wildignore+=*.jpg,*.jpeg,*.gif,*.png,*.gif,*.psd,*.o,*.obj,*.min.js | |
set wildignore+=*/smarty/*,*/vendor/*,*/node_modules/*,*/.git/*,*/.hg/*,*/.svn/*,*/.sass-cache/*,*/log/*,*/tmp/*,*/build/*,*/ckeditor/* | |
set wildmenu " Hitting TAB in command mode will show possible completions above command line. | |
set wildmode=list:longest " Complete only until point of ambiguity. | |
set winminheight=0 "Allow splits to be reduced to a single line. | |
set wrapscan " Searches wrap around end of file | |
" Status Line | |
" hi User1 guibg=#455354 guifg=fg ctermbg=238 ctermfg=fg gui=bold,underline cterm=bold,underline term=bold,underline | |
" hi User2 guibg=#455354 guifg=#CC4329 ctermbg=238 ctermfg=196 gui=bold cterm=bold term=bold | |
" set statusline=[%n]\ %1*%<%.99t%*\ %2*%h%w%m%r%*%y[%{&ff}→%{strlen(&fenc)?&fenc:'No\ Encoding'}]%=%-16(\ L%l,C%c\ %)%P | |
let g:Powerline_symbols = 'fancy' | |
" Speed up viewport scrolling | |
nnoremap <C-e> 3<C-e> | |
nnoremap <C-y> 3<C-y> | |
" Faster split resizing (+,-) | |
if bufwinnr(1) | |
map + <C-W>+ | |
map - <C-W>- | |
endif | |
" Better split switching (Ctrl-j, Ctrl-k, Ctrl-h, Ctrl-l) | |
map <C-j> <C-W>j | |
map <C-k> <C-W>k | |
map <C-H> <C-W>h | |
map <C-L> <C-W>l | |
" Sudo write (,W) | |
noremap <leader>W :w !sudo tee %<CR> | |
" Remap :W to :w | |
command W w | |
" Better mark jumping (line + col) | |
nnoremap ' ` | |
" Hard to type things | |
imap >> → | |
imap << ← | |
imap ^^ ↑ | |
imap VV ↓ | |
imap aa λ | |
" Toggle show tabs and trailing spaces (,c) | |
set lcs=tab:›\ ,trail:·,eol:¬,nbsp:_ | |
set fcs=fold:- | |
nnoremap <silent> <leader>c :set nolist!<CR> | |
" Clear last search (,qs) | |
map <silent> <leader>qs <Esc>:noh<CR> | |
" map <silent> <leader>qs <Esc>:let @/ = ""<CR> | |
" Vim on the iPad | |
if &term == "xterm-ipad" | |
nnoremap <Tab> <Esc> | |
vnoremap <Tab> <Esc>gV | |
onoremap <Tab> <Esc> | |
inoremap <Tab> <Esc>`^ | |
inoremap <Leader><Tab> <Tab> | |
endif | |
" Remap keys for auto-completion, disable arrow keys | |
" I still need these cuz im nub. so nub. | |
" inoremap <expr> <Esc> pumvisible() ? "\<C-e>" : "\<Esc>" | |
" inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" | |
" inoremap <expr> <Down> pumvisible() ? "\<C-n>" : "\<NOP>" | |
" inoremap <expr> <Up> pumvisible() ? "\<C-p>" : "\<NOP>" | |
" inoremap <Left> <NOP> | |
" inoremap <Right> <NOP> | |
" Indent/unident block (,]) (,[) | |
nnoremap <leader>] >i{<CR> | |
nnoremap <leader>[ <i{<CR> | |
" Paste toggle (,p) | |
set pastetoggle=<leader>p | |
map <leader>p :set invpaste paste?<CR> | |
" NERD Commenter | |
let NERDSpaceDelims=1 | |
let NERDCompactSexyComs=1 | |
let g:NERDCustomDelimiters = { 'racket': { 'left': ';', 'leftAlt': '#|', 'rightAlt': '|#' } } | |
" Buffer navigation (,,) (,]) (,[) (,ls) | |
map <Leader>, <C-^> | |
" :map <Leader>] :bnext<CR> | |
" :map <Leader>[ :bprev<CR> | |
map <Leader>ls :buffers<CR> | |
" Close Quickfix window (,qq) | |
map <leader>qq :cclose<CR> | |
" Yank from cursor to end of line | |
nnoremap Y y$ | |
" Insert newline | |
map <leader><Enter> o<ESC> | |
" Search and replace word under cursor (,*) | |
nnoremap <leader>* :%s/\<<C-r><C-w>\>//<Left> | |
" Strip trailing whitespace (,ss) | |
function! StripWhitespace () | |
let save_cursor = getpos(".") | |
let old_query = getreg('/') | |
:%s/\s\+$//e | |
call setpos('.', save_cursor) | |
call setreg('/', old_query) | |
endfunction | |
noremap <leader>ss :call StripWhitespace ()<CR> | |
" Save and restore folds | |
" :au BufWinLeave * mkview | |
" :au BufWinEnter * silent loadview | |
" Join lines and restore cursor location (J) | |
nnoremap J mjJ`j | |
" Toggle folds (<Space>) | |
nnoremap <silent> <space> :exe 'silent! normal! '.((foldclosed('.')>0)? 'zMzx' : 'zc')<CR> | |
" Fix page up and down | |
map <PageUp> <C-U> | |
map <PageDown> <C-D> | |
imap <PageUp> <C-O><C-U> | |
imap <PageDown> <C-O><C-D> | |
" Restore cursor position | |
autocmd BufReadPost * | |
\ if line("'\"") > 1 && line("'\"") <= line("$") | | |
\ exe "normal! g`\"" | | |
\ endif | |
" Set relative line numbers | |
set relativenumber " Use relative line numbers. Current line is still in status bar. | |
au BufReadPost,BufNewFile * set relativenumber | |
" Emulate bundles, allow plugins to live independantly. Easier to manage. | |
" call pathogen#runtime_append_all_bundles() | |
filetype plugin indent on | |
" JSON | |
au BufRead,BufNewFile *.json set ft=json syntax=javascript | |
" Jade | |
au BufRead,BufNewFile *.jade set ft=jade syntax=jade | |
" Common Ruby files | |
au BufRead,BufNewFile Rakefile,Capfile,Gemfile,.autotest,.irbrc,*.treetop,*.tt set ft=ruby syntax=ruby | |
" Nu | |
au BufNewFile,BufRead *.nu,*.nujson,Nukefile setf nu | |
" Coffee Folding | |
au BufNewFile,BufReadPost *.coffee setl foldmethod=indent nofoldenable | |
" ZSH | |
au BufRead,BufNewFile .zsh_rc,.functions,.commonrc set ft=zsh | |
" CtrlP | |
let g:ctrlp_match_window_bottom = 0 " Show at top of window | |
let g:ctrlp_working_path_mode = 2 " Smart path mode | |
let g:ctrlp_mru_files = 1 " Enable Most Recently Used files feature | |
let g:ctrlp_jump_to_buffer = 2 " Jump to tab AND buffer if already open | |
let g:ctrlp_split_window = 1 " <CR> = New Tab | |
" Clojure.vim | |
let g:vimclojure#ParenRainbow = 1 " Enable rainbow parens | |
let g:vimclojure#DynamicHighlighting = 1 " Dynamic highlighting | |
let g:vimclojure#FuzzyIndent = 1 " Names beginning in 'def' or 'with' to be indented as if they were included in the 'lispwords' option | |
" Rainbow Parenthesis | |
nnoremap <leader>rp :RainbowParenthesesToggle<CR> |
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
#!/bin/sh | |
mkdir ~/.vim/backups | |
mkdir ~/.vim/swaps | |
mkdir ~/.vim/undo |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment