view rc/vimrc @ 543:8b884bbb1d05

Rename `app` to `apps`.
author edogawaconan <me@myconan.net>
date Sat, 17 Jan 2015 20:10:45 +0900
parents fc429d39ce9e
children 75c30f2b4694
line wrap: on
line source

set nocompatible
set showmode " shows mode insert/replace/visual
set showcmd " shows last command on screen
set nomodeline " disallow automatic vim command execution on arbitrary file
set autoindent
set lazyredraw
set vb t_vb= " disables visual bell
set ruler
set backspace=2 " make backspace work like most other apps
set esckeys
set noerrorbells
set ts=4
set sw=2
set copyindent
set title
set incsearch
set ignorecase
set smartcase
set hlsearch
set ls=2 " always show status line
set list listchars=tab:>-,trail:.,extends:>
set number

" http://stackoverflow.com/questions/14635295/vim-takes-a-very-long-time-to-start-up
set clipboard=exclude:.*

if has('call')
  call pathogen#infect()
endif
if has('filetype')
  filetype plugin indent on
endif

map <C-t><up> :tabr<cr>
map <C-t><down> :tabl<cr>
map <C-t><left> :tabp<cr>
map <C-t><right> :tabn<cr>
map <C-t>p :tabp<cr>
map <C-t>n :tabn<cr>
map <C-t><C-t> :NERDTreeToggle<cr>
map <C-t><C-m> :NERDTreeMirror<cr>

" clears out highlight
nmap <leader>c :nohlsearch<cr>

" toggles paste mode
nmap <leader>p :set paste!<cr>

" removes prefix for windows copypasta
nmap _pa :set number! list!<cr>

" format JSON
map <leader>j <esc>:%!python -m json.tool<cr>

" visual navigation instead of logical
nmap j gj
nmap k gk

"autocmd VimEnter * NERDTree
"autocmd BufEnter * NERDTreeMirror

if has('syntax')
  syntax on
  set foldmethod=syntax
  set nofoldenable
  set background=dark
  set t_Co=256
  colorscheme base16-default
endif

if has("autocmd")
  augroup json_autocmd
    autocmd!
    autocmd FileType json set autoindent
    autocmd FileType json set formatoptions=tcq2l
    autocmd FileType json set textwidth=78 shiftwidth=2
    autocmd FileType json set softtabstop=2 tabstop=8
    autocmd FileType json set expandtab
    autocmd FileType json set foldmethod=syntax

    " required by syntax file
    " reference: https://github.com/elzr/vim-json/blob/master/ftplugin/json.vim
    let g:vim_json_syntax_conceal = 1
  augroup END
  autocmd BufNewFile,BufRead *.json set filetype=json
  autocmd BufNewFile,BufRead *.jsonp set filetype=json
  autocmd BufRead,BufNewFile *.blade.php set filetype=blade
  autocmd BufRead,BufNewFile *.coffee set filetype=coffee
  autocmd BufRead,BufNewFile *.erb set filetype=eruby
  autocmd BufRead,BufNewFile *.less set filetype=less
  autocmd BufRead,BufNewFile *.scss set filetype=scss
  autocmd BufRead,BufNewFile *.slim set filetype=slim
  autocmd BufRead,BufNewFile Gemfile set filetype=ruby
  autocmd BufRead,BufNewFile config.ru set filetype=ruby
  autocmd BufRead,BufNewFile supervisord.conf set filetype=dosini
endif

if has('autocmd')
  "Restore cursor position
  set viminfo='10,\"100,:20,%,n~/.viminfo
  function! ResCur()
    if line("'\"") <= line("$")
      normal! g`"
      return 1
    endif
  endfunction
  augroup resCur
    autocmd!
    autocmd BufWinEnter * call ResCur()
  augroup END
  autocmd BufWinEnter */.git/COMMIT_EDITMSG exe "normal! gg"
  autocmd BufWinEnter .git/COMMIT_EDITMSG exe "normal! gg"
endif

if has('statusline')
  " Status line detail:
  " %f     file path
  " %y     file type between braces (if defined)
  " %([%R%M]%)   read-only, modified and modifiable flags between braces
  " %{'!'[&ff=='default_file_format']}
  "        shows a '!' if the file format is not the platform
  "        default
  " %{'$'[!&list]}  shows a '*' if in list mode
  " %{'~'[&pm=='']} shows a '~' if in patchmode
  " (%{synIDattr(synID(line('.'),col('.'),0),'name')})
  "        only for debug : display the current syntax item name
  " %=     right-align following items
  " #%n    buffer number
  " %l/%L,%c%V   line number, total number of lines, and column number
  function SetStatusLineStyle()
    if &stl == '' || &stl =~ 'synID'
      let &stl="%f %y%([%R%M]%)%{'!'[&ff=='".&ff."']}%{'$'[!&list]}%{'~'[&pm=='']}%=#%n %l/%L,%c%V "
    else
      let &stl="%f %y%([%R%M]%)%{'!'[&ff=='".&ff."']}%{'$'[!&list]} (%{synIDattr(synID(line('.'),col('.'),0),'name')})%=#%n %l/%L,%c%V "
    endif
  endfunc
  " Switch between the normal and vim-debug modes in the status line
  nmap _ds :call SetStatusLineStyle()<CR>
  call SetStatusLineStyle()
  " Window title
  if has('title')
    if &term == "screen"
      set t_ts=]0;
      set t_fs=
    endif
    set title
    let &titlestring = $user
  endif
endif