Skip to content

Instantly share code, notes, and snippets.

@aisuii
Created December 7, 2010 16:31
Show Gist options
  • Save aisuii/732002 to your computer and use it in GitHub Desktop.
Save aisuii/732002 to your computer and use it in GitHub Desktop.
set nocompatible
set nobackup
set hidden
set history=100
filetype plugin indent on
scriptencoding utf-8
autocmd!
set backspace=indent,eol,start
" indent
set autoindent smartindent
set expandtab
set tabstop=4 softtabstop=4 shiftwidth=4
autocmd FileType ruby setlocal tabstop=2 softtabstop=2 shiftwidth=2
autocmd FileType make setlocal noexpandtab
" appearance
set background=dark
colorscheme slate
syntax enable
set showmatch
set wrap
set number
set ruler
set showcmd
set list
set listchars=tab:>-,eol:<
set laststatus=2
set statusline=%<%f[%n]\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']('.(&ft!=''?&ft:'Fundamental').')'}%=%l,%c%V%8P
highlight ZenkakuSpace cterm=underline ctermfg=DarkYellow guibg=DarkYellow
autocmd VimEnter,WinEnter,BufWinEnter * match ZenkakuSpace / /
" tabline
function! MyTabLabel(n)
let buflist = tabpagebuflist(a:n)
let winnr = tabpagewinnr(a:n)
let buflen = tabpagewinnr(a:n, '$')
let bufname = fnamemodify(bufname(buflist[winnr - 1]), ':t')
let label = a:n . ": "
let label .= bufname == '' ? 'No name' : bufname
let label .= '[' . buflen . ']'
return label
endfunction
function! MyTabLine()
let s = ''
for i in range(tabpagenr('$'))
if i + 1 == tabpagenr()
let s .= '%#TabLineSel#'
else
let s .= '%#TabLine#'
endif
let s .= '%' . (i + 1) . 'T'
let s .= ' %{MyTabLabel(' . (i + 1) . ')} '
endfor
let s .= '%#TabLineFill#%T'
if tabpagenr('$') > 1
let s .= '%=%#TabLine#%999Xx'
endif
return s
endfunction
set tabline=%!MyTabLine()
set showtabline=2
highlight TabLine term=reverse cterm=reverse ctermfg=white ctermbg=black
highlight TabLineSel term=underline cterm=underline ctermfg=red ctermbg=black
highlight TabLineFill term=reverse cterm=reverse ctermfg=white ctermbg=black
"highlight Pmenu ctermfg=black ctermbg=Gray
"highlight PmenuSel term=reverse ctermfg=red ctermbg=black
"highlight PmenuSbar ctermfg=Gray ctermbg=white
" search
set hlsearch
set wrapscan
set noincsearch
set ignorecase
set smartcase
" mapping
nnoremap j gj
nnoremap k gk
vnoremap j gj
vnoremap k gk
nnoremap gj j
nnoremap gk k
vnoremap gj j
vnoremap gk k
nnoremap <silent> <Space>n :<C-u>n<CR>
nnoremap <silent> <Space>N :<C-u>N<CR>
nnoremap <silent> <Space>p :<C-u>prev<CR>
nnoremap <silent> <Space>tf :<C-u>tabfirst<CR>
nnoremap <silent> <Space>tl :<C-u>tablast<CR>
nnoremap <silent> <Space>tn :<C-u>tabn<CR>
nnoremap <silent> <Space>tN :<C-u>tabN<CR>
nnoremap <silent> <Space>tp :<C-u>tabp<CR>
nnoremap <silent> <Space>te :<C-u>tabe<CR>
nnoremap <silent> <Space>tc :<C-u>tabc<CR>
nnoremap <silent> <Space>to :<C-u>tabo<CR>
nnoremap <silent> <Space>bf :<C-u>br<CR>
nnoremap <silent> <Space>bl :<C-u>bl<CR>
nnoremap <silent> <Space>bn :<C-u>bn<CR>
nnoremap <silent> <Space>bN :<C-u>bN<CR>
nnoremap <silent> <Space>bp :<C-u>bp<CR>
nnoremap <silent> <Space>cf :<C-u>crew<CR>
nnoremap <silent> <Space>cl :<C-u>cla<CR>
nnoremap <silent> <Space>cn :<C-u>cn<CR>
nnoremap <silent> <Space>cN :<C-u>cN<CR>
nnoremap <silent> <Space>cp :<C-u>cp<CR>
nnoremap <silent> <Space>r :<C-u>registers<CR>
nnoremap <silent> <Space>l :<C-u>ls<CR>
nnoremap <silent> <Space>m :<C-u>marks<CR>
nnoremap <silent> <Space>j :<C-u>tabs<CR>
nnoremap <silent> <Space>g :<C-u>tags<CR>
nnoremap <silent> <Space>. :<C-u>edit $MYVIMRC<CR>
function! s:toggle_quickfix_window()
" toggle quickfixwindow
" http://d.hatena.ne.jp/kuhukuhun/20090119/1232343733
let _ = winnr('$')
cclose
if _ == winnr('$')
cwindow
endif
endfunction
nnoremap <silent> <Space>q :<C-u>call <SID>toggle_quickfix_window()<CR>
" cmd
set wildmenu
"set wildmode=list:longest
" strftime
command! -nargs=0 AppendDate :execute "normal a".strftime("%Y-%m-%d")
command! -nargs=0 AppendNow :execute "normal a".strftime("%c")
command! -nargs=0 AppendTime :execute "normal a".strftime("%H:%M")
" enc, fenc
command! -bang -nargs=? Utf8Edit edit<bang> ++enc=utf-8 <args>
command! -bang -nargs=? EucjpEdit edit<bang> ++enc=euc-jp <args>
command! -bang -nargs=? SjisEdit edit<bang> ++enc=sjis <args>
command! -bang -nargs=? Cp932Edit edit<bang> ++enc=cp932 <args>
command! -nargs=0 Utf8Set setlocal fenc=utf-8
command! -nargs=0 EucjpSet setlocal fenc=euc-jp
command! -nargs=0 SjisSet setlocal fenc=sjis
nnoremap <Leader>eu :<C-u>Utf8Edit<CR>
nnoremap <Leader>ee :<C-u>EucjpEdit<CR>
nnoremap <Leader>es :<C-u>SjisEdit<CR>
nnoremap <Leader>ec :<C-u>Cp932Edit<CR>
nnoremap <Leader>su :<C-u>Utf8Set<CR>
nnoremap <Leader>se :<C-u>EucjpSet<CR>
nnoremap <Leader>ss :<C-u>SjisSet<CR>
" encoding
" http://www.kawaz.jp/pukiwiki/?vim#cb691f26
if &encoding !=# 'utf-8'
set encoding=japan
set fileencoding=japan
endif
if has('iconv')
let s:enc_euc = 'euc-jp'
let s:enc_jis = 'iso-2022-jp'
" iconvがeucJP-msに対応しているかをチェック
if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# "\xad\xc5\xad\xcb"
let s:enc_euc = 'eucjp-ms'
let s:enc_jis = 'iso-2022-jp-3'
" iconvがJISX0213に対応しているかをチェック
elseif iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb"
let s:enc_euc = 'euc-jisx0213'
let s:enc_jis = 'iso-2022-jp-3'
endif
" fileencodingsを構築
if &encoding ==# 'utf-8'
let s:fileencodings_default = &fileencodings
let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932'
let &fileencodings = &fileencodings .','. s:fileencodings_default
unlet s:fileencodings_default
else
let &fileencodings = &fileencodings .','. s:enc_jis
set fileencodings+=utf-8,ucs-2le,ucs-2
if &encoding =~# '^\(euc-jp\|euc-jisx0213\|eucjp-ms\)$'
set fileencodings+=cp932
set fileencodings-=euc-jp
set fileencodings-=euc-jisx0213
set fileencodings-=eucjp-ms
let &encoding = s:enc_euc
let &fileencoding = s:enc_euc
else
let &fileencodings = &fileencodings .','. s:enc_euc
endif
endif
" 定数を処分
unlet s:enc_euc
unlet s:enc_jis
endif
" 日本語を含まない場合は fileencoding に encoding を使うようにする
if has('autocmd')
function! AU_ReCheck_FENC()
if &fileencoding =~# 'iso-2022-jp' && search("[^\x01-\x7e]", 'n') == 0
let &fileencoding=&encoding
endif
endfunction
autocmd BufReadPost * call AU_ReCheck_FENC()
endif
" 改行コードの自動認識
set fileformats=unix,dos,mac
" □とか○の文字があってもカーソル位置がずれないようにする
if exists('&ambiwidth')
set ambiwidth=double
endif
"" plugins
" skk.vim
let skk_jisyo = $VIM . '/vimfiles/plugin/skk/skk-jisyo'
let skk_large_jisyo = $VIM . '/vimfiles/plugin/skk/SKK-JISYO.L'
let skk_auto_save_jisyo = 1
let skk_keep_state = 0
let skk_egg_like_newline = 0
let skk_show_annotation = 1
let skk_use_face = 1
" hatena.vim
set runtimepath+=$VIM/runtime/plugin/hatena/
let g:hatena_always_trivial = 1
let g:hatena_hold_cookie = 0
let g:hatena_user = $LOGNAME
let g:hatena_users = [$LOGNAME]
nnoremap <Leader>hu :HatenaUser
" ack.vim
let g:AckCmd = '~/bin/ack'
" TODO: sort css property ha ftplugin ni kakou
" http://d.hatena.ne.jp/secondlife/20060831/1157010796
nmap gso vi{:!~/bin/sortcss<CR>
vmap gso i{:!~/bin/sortcss<CR>
" yankring.vim
let g:yankring_history_dir = '$VIM/vimfiles'
let g:yankring_max_history = 200
let g:yankring_max_display = 200
let g:yankring_window_use_separate = 1
let g:yankring_window_height = 13
nnoremap <silent> <Space>y :YRShow<CR>
command! -nargs=1 Y YRSearch <args>
" tabrecent.vim
command! -bang -nargs=? T TabRecent<bang> <args>
nnoremap <silent> <Space>tt :<C-u>TabRecent<CR>
" surround.vim
let g:surround_{char2nr("-")} = "<% \r %>"
let g:surround_{char2nr("=")} = "<%= \r %>"
let g:surround_{char2nr("n")} = "<\1tagname: \r..*\r&\1\2attribute: \r..*\r &\2\3value: \r..*\r=\"&\"\3>\r</\1\1>"
let g:surround_{char2nr("a")} = "<a href=\"\r\">\1link\ text: \1</a>"
" ku.vim
nnoremap <silent> <Space>ff :<C-u>Ku file<CR>
nnoremap <silent> <Space>fb :<C-u>Ku buffer<CR>
nnoremap <silent> <Space>fm :<C-u>Ku file_mru<CR>
nnoremap <silent> <Space>cm :<C-u>Ku cmd_mru/cmd<CR>
nnoremap <silent> <Space>sm :<C-u>Ku cmd_mru/search<CR>
nnoremap <silent> <Space>ku :<C-u>Ku source<CR>
let g:ku_file_mru_limit=1000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment