From 4a34558db5e6b53d70a393008540dd035c0682c1 Mon Sep 17 00:00:00 2001 From: Gregory Eremin Date: Sun, 23 Jun 2013 16:06:21 +0700 Subject: [PATCH] Go for vim --- git/gitconfig | 2 +- vim/vimrc | 276 +++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 217 insertions(+), 61 deletions(-) diff --git a/git/gitconfig b/git/gitconfig index b556917..b6784fc 100644 --- a/git/gitconfig +++ b/git/gitconfig @@ -18,7 +18,7 @@ ui = true [core] excludesfile = ~/.gitignore - editor = subl -n -w + editor = vim [push] default = current [apply] diff --git a/vim/vimrc b/vim/vimrc index a8a4f96..2c2241a 100644 --- a/vim/vimrc +++ b/vim/vimrc @@ -1,38 +1,13 @@ -" When vimrc is edited, reload it -autocmd! BufWritePost vimrc source ~/.vimrc - set nocompatible " vi improved filetype off " do not load Filetype file +set shell=/bin/bash -set encoding=utf-8 -set history=1000 -set completeopt=menuone,preview -set number - -" Disable scrollbars -set guioptions-=L -set guioptions-=r - -" Index ignores -set wildignore+=*/tmp/* - -" Set font family and size -set gfn=Source\ Code\ Pro:h14 - -" ####################### -" ### Fuck you, hjkl! ### -" ####################### - -noremap ; l -noremap l k -noremap k j -noremap j h - -" for prefix in ['i', 'n', 'v'] -" for key in ['', '', '', ''] -" exe prefix . "noremap " . key . " " -" endfor -" endfor +" Uncomment this when ready for hardcore +for prefix in ['i', 'n', 'v'] + for key in ['', '', '', ''] + exe prefix . "noremap " . key . " " + endfor +endfor " #################### " ### Vundle setup ### @@ -46,61 +21,242 @@ Bundle 'gmarik/vundle' " ### Colors ### " ############## -Bundle 'chriskempson/tomorrow-theme', {'rtp': 'vim/'} +Bundle "daylerees/colour-schemes", { "rtp": "vim-themes/" } +Bundle "chriskempson/tomorrow-theme", { "rtp": "vim/" } + syntax on -colorscheme Tomorrow-Night-Eighties +filetype plugin on +filetype indent on + +colorscheme Peacock " ################# " ### Powerline ### " ################# Bundle 'Lokaltog/vim-powerline' +let g:Powerline_symbols = 'compatible' " (compatible, unicode, fancy) set laststatus=2 +set noshowmode -" ################ -" ### Nerdtree ### -" ################ +" ################# +" ### Nerd Tree ### +" ################# Bundle 'scrooloose/nerdtree' nmap :NERDTreeToggle +let NERDTreeIgnore=['\.DS_Store$', '\.swp$', '\.git$', '\.bundle$', '\.pyc$'] +let NERDTreeHighlightCursorline=1 +let NERDTreeShowHidden=1 +let NERDTreeMinimalUI=1 +let NERDTreeDirArrows=1 +let NERDChristmasTree=1 +let NERDTreeChDirMode=2 +let NERDTreeQuitOnOpen=1 +let g:NERDTreeWinSize=50 -" ############ -" ### Misc ### -" ############ +" ###################### +" ### Nerd Commenter ### +" ###################### + +Bundle 'scrooloose/nerdcommenter' +let g:NERDCreateDefaultMappings=0 +let g:NERDCompactSexyComs=1 +let g:NERDSpaceDelims=1 +nmap / NERDCommenterToggle +vmap / NERDCommenterToggle + +" ######################### +" ### Fuzzy File Search ### +" ######################### Bundle 'kien/ctrlp.vim' +let g:ctrlp_match_window_bottom=0 +let g:ctrlp_match_window_reversed=0 + +" ########################### +" ### Ruby Syntax Support ### +" ########################### -" Ruby support? Bundle 'vim-ruby/vim-ruby' -" Magic R-commands + +" ################### +" ### Rails Tools ### +" ################### + Bundle 'tpope/vim-rails' -autocmd FileType ruby,eruby,yaml set tw=80 ai sw=2 sts=2 et -autocmd FileType ruby,eruby,yaml setlocal foldmethod=manual -autocmd User Rails set tabstop=2 shiftwidth=2 softtabstop=2 expandtab +" ########################### +" ### Magic Code Aligning ### +" ########################### + +Bundle 'godlygeek/tabular' + +" ################### +" ### Git Wrapper ### +" ################### + +Bundle 'tpope/vim-fugitive' + +" ################### +" ### Preferences ### +" ################### + +set encoding=utf-8 " Because +set showmatch " Show matching brackets +set backspace=indent,eol,start " Better backspace support +set history=1000 " Save 1000 commands in history +set undolevels=1000 " Save 1000 commands for undo +set completeopt=longest,menuone " Completion preferences +set complete=.,w,b,kspell,ss " current buffer, other windows' buffers, dictionary, spelling +set relativenumber " Show line numbers (relative) +set cursorline " Highlight the current line +set tabstop=2 " Tab size +set shiftwidth=2 " Must be the same +set softtabstop=2 " Must be the same +set expandtab " Upaces instead of tabs +set nowrap " Wrap lines +set nolinebreak " Break lines softly +set wrapscan " Wrap search +set incsearch " Incremental search +set ignorecase " Ignore case when searching +set nohlsearch " Don't fucking highlight search +set smartcase " Overrides ignore case in case pattern contains upper case char +set nolist " Don't show sick characters +set textwidth=120 " Text width before wrap +set t_Co=256 " Number of terminal colors +set mousehide " Hide mouse when typing +set guioptions-=L " Disable scrollbars +set guioptions-=r " Disable scrollbars +set wildignore+=*/tmp/* " Index ignoresa +set gfn=Menlo:h14 " Set font family and size + +" ######################## +" ### MacVim Specific ### +" ######################## + +if has("gui_macvim") + " Use Mac option key as meta key + set macmeta + + " MacVIM shift+arrow-keys behavior (required in .vimrc) + let macvim_hig_shift_movement=1 +endif + +" ################ +" ### Triggers ### +" ################ + +if has("autocmd") + autocmd FileType ruby,eruby,yaml set ai sw=2 sts=2 et + autocmd FileType ruby,eruby,yaml setlocal foldmethod=manual + autocmd User Rails set tabstop=2 shiftwidth=2 softtabstop=2 expandtab + + " When vimrc is edited, reload it + autocmd! BufWritePost $MYVIMRC source $MYVIMRC + + autocmd FocusLost * :set number + autocmd FocusGained * :set relativenumber + autocmd InsertEnter * :set number + autocmd InsertLeave * :set relativenumber +endif " ########################## " ### Follow Your Leader ### " ########################## +" Set the Leader key to comma instead of backslash let mapleader = "," -nmap q :q! -nmap rc :source ~/.vimrc -nmap bi :source ~/.vimrc:BundleInstall +nmap v :e $MYVIMRC -nmap gu :!git up -nmap mkb :!mkbundle +nmap s :w +nmap qq :q! +nmap rr :source $MYVIMRC -nmap m :Rmodel -nmap c :Rcontroller -nmap s :Rspec +nmap gu :!git up +nmap mkb :!mkbundle -" ##################### -" ### More Mappings ### -" ##################### +" Toggle search highlight +nmap h :set hlsearch! +nmap hh :let @/="" +nmap o :set paste! -map :w -imap :w -imap $ -imap ^ +" Toggle wrap +nmap w :set wrap! list! linebreak! + +" Rails helpers +nmap rm :Rmodel +nmap rc :Rcontroller +nmap rs :Rspec + +" Splitting windows iTerm style +nmap :vs +nmap :sp + +" Vertical window resizing +map > :vertical res +1^M +nmap > :vertical res -1^M + +" Horizontal window rezising +nmap :res +1^M +nmap :res -1^M + +" Center line with the find occurance +nmap n nzz +nmap N Nzz + +" Siblings +nmap ew :e =expand("%:p:h")."/" +nmap es :sp =expand("%:p:h")."/" +nmap ev :vsp =expand("%:p:h")."/" +nmap et :tabedit =expand("%:p:h")."/" + +" Convert Ruby 1.8 hash syntax to 1.9 +nmap r18 :%s/:\(\w\+\)\(\s\+\)=>/\1:\2/ge + +" ####################### +" ### Visual Mappings ### +" ####################### + +" Indentation TextMate style +vmap >gv + +" Sudo to write +cmap w!! w !sudo tee % >/dev/null + +" Centerize current line +nmap j jzz +nmap k kzz +" Move 10 lines with Option key +nmap j 10j +nmap k 10k + +" Insert blank lines without entering insert mode +nnoremap j m`o`` +nnoremap k m`O`` + +function! ToggleLineNumbers() + if (&relativenumber == 1) + set number + else + set relativenumber + endif +endfunc + +function! PreservePosition(command) + " Preparation: save last search, and cursor position. + let _s=@/ + let l = line(".") + let c = col(".") + + " Do the business: + execute a:command + + " Clean up: restore previous search history, and cursor position + let @/=_s + call cursor(l, c) +endfunction + +nnoremap n :call ToggleLineNumbers()