view rc/vimrc @ 556:4190bd0b4456

Better color for spaces and tabs.
author nanaya <me@myconan.net>
date Sat, 25 Apr 2015 18:29:22 +0900
parents 48ab5a354772
children bd3c7affdade
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 tabstop=4
set shiftwidth=4
set softtabstop=4

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:>
autocmd colorscheme * highlight specialkey ctermfg=gray

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

  colorscheme vividchalk
endif

if has("autocmd")
  function In2()
    set softtabstop=2 tabstop=2 shiftwidth=2 expandtab
  endfunction

  function In4()
    set softtabstop=4 tabstop=4 shiftwidth=4 noexpandtab
  endfunction

  " required by syntax file
  " reference: https://github.com/elzr/vim-json/blob/master/ftplugin/json.vim
  let g:vim_json_syntax_conceal = 1

  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

  autocmd FileType coffee call In2()
  autocmd FileType eruby call In2()
  autocmd FileType ruby call In2()
  autocmd FileType scss call In2()
  autocmd FileType yaml call In2()
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