Feed

tosik's watching list

  • [1879] autocomplpop.vim

    Comment 導入したばかりだけど、いいかんじかな
  • [23] EnhCommentify.vim

    Comment 簡単にコメントアウトするやつ
  • [489] ManPageView

    Comment まだ使ってないけど入れてみる
  • [1338] TabBar

    Comment minibufexplの代わり
  • [273] taglist.vim

    Comment tagsを表示してプロジェクト全体を見通せる

Profile

.vimrc

""""""""""""""""""""""
" ファイルタイプ別設定
"
filetype on
filetype indent on
filetype plugin on
au FileType ruby set ts=2 sw=2 expandtab
au FileType c set ts=4 sw=4 sts=0
au FileType cpp set ts=4 sw=4 sts=0

""""""""""""""""""""""
" マクロを設定
"
":source $VIMRUNTIME/macros/cd.vim
syntax on

""""""""""""""""""""""
" color theme
"
"colorscheme desert

""""""""""""""""""""""
" 基本設定
"

" 行番号を表示する
set number

" 最後まで検索したら先頭に戻る
set wrapscan

" コマンド補完の方法
set wildmode=list:longest

" スクリプトを実行する
nmap ,e :execute '!' &ft ' %'<CR>

" バッファが編集中でもその他のファイルを開けるように
set hidden

" 外部のエディタで編集中のファイルが変更されたら自動で読み直す
set autoread

"インデントはスマートインデント
set smartindent

"検索文字列が小文字の場合は大文字小文字を区別なく検索する
set ignorecase

"検索文字列に大文字が含まれている場合は区別して検索する
set smartcase

"タブの左側にカーソル表示
set nolist

"入力中のコマンドをステータスに表示する
set showcmd

"括弧入力時の対応する括弧を表示
set showmatch

"ステータスラインを常に表示
set laststatus=2

"インクリメンタルサーチ
set incsearch

" 検索結果をハイライトしない
set nohlsearch

" 辞書を単語補完で使えるようにする
"set complete+=k

""""""""""""""""""""""
" キーバインド設定
"

"""" key bind
" completion by TAB Key
"function InsertTabWrapper()
" if pumvisible()
" return "\<c-n>"
" endif
" let col = col('.') - 1
" if !col || getline('.')[col - 1] !~ '\k\|\<\|/'
" return "\<tab>"
" elseif exists('&omnifunc') && &omnifunc == ''
" return "\<c-n>"
" else
" return "\<c-x>\<c-o>"
" endif
"endfunction
"inoremap <tab> <c-r>=InsertTabWrapper()<cr>
imap <C-w> <C-x><C-o>

" 物理移動に強制する
nmap j gj
nmap k gk
vmap j gj
vmap k gk

" YankRing.vim
nmap ,y :YRShow<CR>

" MiniBufExplorer customize
nmap <Space> :MBEbn<CR>
nnoremap ,1 :e #1<CR>
nnoremap ,2 :e #2<CR>
nnoremap ,3 :e #3<CR>
nnoremap ,4 :e #4<CR>
nnoremap ,5 :e #5<CR>
nnoremap ,6 :e #6<CR>
nnoremap ,7 :e #7<CR>
nnoremap ,8 :e #8<CR>
nnoremap ,9 :e #9<CR>

""""""""""""""""""""""
" 表示設定
"

"ステータスラインに文字コードと改行文字を表示する
" set statusline=%<[%n]%m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']['.&ft.']'}\ %F%=%l,%c%V%8P
if winwidth(0) >= 120
set statusline=%<[%n]%m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}%y\ %F%=[%{GetB()}]\ %l,%c%V%8P
else
set statusline=%<[%n]%m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}%y\ %f%=[%{GetB()}]\ %l,%c%V%8P
endif

" statusline hack
"autocmd BufEnter * if bufname("") !~ "^\[A-Za-z0-9\]*://" | silent! exe '!echo -n "^[k%^[\\"' | endif

" menu color
hi Pmenu ctermbg=4
hi PmenuSel ctermbg=1
hi PmenuSbar ctermbg=0
set completeopt=menuone,longest,preview

" 行末の無駄なスペースを強調表示
highlight SpecialKey guibg=#222222 cterm=underline ctermfg=darkgrey
set list
set listchars=tab:\ \ ,extends:<,trail:\

""""""""""""""""""""""
" 文字コードの自動認識
"
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

""""""""""""""""""""""
" その他設定
"

"set minibfexp
let g:miniBufExplMapWindowNavVim=1 "hjklで移動
let g:miniBufExplSplitBelow=0 " Put new window above
let g:miniBufExplMapWindowNavArrows=1
let g:miniBufExplMapCTabSwitchBufs=1
let g:miniBufExplModSelTarget=1
let g:miniBufExplSplitToEdge=1

" CD.vim example:// は適用しない
"autocmd BufEnter * if bufname("") !~ "^\[A-Za-z0-9\]*://" | lcd %:p:h | endif

""""""""""""""""""""""
" 関数定義
"

" html escape function
function HtmlEscape()
silent s/&/\&amp;/eg
silent s/</\&lt;/eg
silent s/>/\&gt;/eg
endfunction
function HtmlUnEscape()
silent s/&lt;/</eg
silent s/&gt;/>/eg
silent s/&amp;/\&/eg
endfunction

" アスキーコードを表示
function! GetB()
let c = matchstr(getline('.'), '.', col('.') - 1)
let c = iconv(c, &enc, &fenc)
return String2Hex(c)
endfunction
" :help eval-examples
" The function Nr2Hex() returns the Hex string of a number.
func! Nr2Hex(nr)
let n = a:nr
let r = ""
while n
let r = '0123456789ABCDEF'[n % 16] . r
let n = n / 16
endwhile
return r
endfunc
" The function String2Hex() converts each character in a string to a two
" character Hex string.
func! String2Hex(str)
let out = ''
let ix = 0
while ix < strlen(a:str)
let out = out . Nr2Hex(char2nr(a:str[ix]))
let ix = ix + 1
endwhile
return out
endfunc