Hatena::ブログ(Diary)

&nico

2011-08-10 vimrc

"----------------------------------------------------------------------------------------

" 基本設定 Basics

"----------------------------------------------------------------------------------------

set nocompatible " viとの互換なし

set textwidth=0 " テキスト折り返しなし

set nobackup " バックアップなし

set autoread " 自動読み直し

set noswapfile " スワップファイルを作らない

set hidden " 編集中でも他ファイルを開けるようにする

set vb t_vb= " ビープ音を鳴らさない

set browsedir=buffer " 初期ディレクトリ

set whichwrap=b,s,h,l,<,>,[,] " カーソルを行頭、行末を超えて行えるように

set showcmd " コマンドをステータスラインに表示

set showmode " 現在のモードを表示

set modelines=0 " モードラインは無効

filetype plugin on " ファイルタイプ判定をon


"----------------------------------------------------------------------------------------

" ステータスライン StatsuLine

"----------------------------------------------------------------------------------------

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

set ruler " カーソル行列表示

"ステータスラインに文字コードと改行文字を表示する

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

"入力モード時、ステータスラインのカラーを変更

augroup InsertHook

autocmd!

autocmd InsertEnter * highlight StatusLine guifg=#ccdc90 guibg=#2E4340

autocmd InsertLeave * highlight StatusLine guifg=#2E4340 guibg=#ccdc90

augroup END

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


"--------------------------------------------------

" 表示 Apperace

"--------------------------------------------------

set showmatch " 括弧の対応をハイライト

set number " 行番号表示

" 全角スペースの表示

highlight ZenkakuSpace cterm=underline ctermfg=lightblue guibg=darkgray

match ZenkakuSpace / /

"--------------------------------------------------

" インデント Indent

"--------------------------------------------------

set autoindent " 自動でインデント

set smartindent " 新しい行を開始したときに、新しい行のインデントを現在行と同じ量にする

set cindent " Cプログラムファイルの自動インデントを始める

set tabstop=2 shiftwidth=2 softtabstop=2

"--------------------------------------------------

" 補完・履歴 Complete

"--------------------------------------------------

set wildmenu " コマンド補完を強化

set wildchar=<tab> " コマンド補完開始キー

set wildmode=list:longest " リスト表示

set history=1000 " コマンド・検索パターン履歴数

set complete+=k " 補完に辞書ファイル追加

"--------------------------------------------------

" タグ関連 Tags

"--------------------------------------------------

if has("autochdir")

set autochdir

set tags=tags;

else

set tags=./tags,/./../tags,./../../tags,./../../../tags,./../../../../tags,./../../../../../tags,

endif


"--------------------------------------------------

" 検索設定 Search

"--------------------------------------------------

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

set ignorecase " 大文字小文字無視

set smartcase " 大文字は区別する

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

set hlsearch " 検索文字をハイライト

nmap <ESC><ESC> :nohlsearch<CR><ESC>

"--------------------------------------------------

" 補完・履歴 Complete

"--------------------------------------------------

" カーソルを表示行で移動する。論理行移動は<C-n>,<C-p>

noremap h <Left>

noremap j gj

noremap k gk

noremap l <Right>

noremap <Down> gj

noremap <Up> gk

" 0, 9で行頭、行末へ

nmap 0 ^

nmap 9 $

" 実際キーボードの左端は1だし1でも行頭

nmap 1 ^

" spaceで次のbufferへ。<S-space>で前のbufferへ

nmap <silent> <Space> <ESC>:bn<CR>

nmap <silent> <S-Space> <ESC>:bp<CR>


"--------------------------------------------------

" エンコーディング関係 Encoding

"--------------------------------------------------

set ffs=unix,dos,mac " 改行文字

set encoding=utf-8

" 文字コード関連

" from ずんWiki http://www.kawaz.jp/pukiwiki/?vim#content_1_7

" 文字コードの自動認識

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


" cvsの時は文字コードeuc-jpに設定

autocmd FileType cvs :set fileencoding=euc-jp

" 以下のファイルの時は文字コードutf-8に設定

autocmd FileType svn :set fileencoding=utf-8

autocmd FileType js :set fileencoding=utf-8

autocmd FileType css :set fileencoding=utf-8

autocmd FileType html :set fileencoding=utf-8

autocmd FileType xml :set fileencoding=utf-8

autocmd FileType java :set fileencoding=utf-8

autocmd FileType scala :set fileencoding=utf-8



"-------------------------------------------------------------------------------

" カラー関連 Colors

"-------------------------------------------------------------------------------

" ターミナルタイプによるカラー設定

if &term =~ "xterm-debian" || &term =~ "xterm-xfree86" || &term =~ "xterm-256color"

set t_Co=16

set t_Sf=^3%dm

set t_Sb=^4%dm

elseif &term =~ "xterm-color"

colorscheme wombat

endif

" ハイライト on

syntax enable

" 補完候補の色づけ for vim7

hi Pmenu ctermbg=white ctermfg=darkgray

hi PmenuSel ctermbg=0 ctermfg=white

hi PmenuSbar ctermbg=0 ctermfg=9


"--------------------------------------------------

" 編集関連 Edit

"--------------------------------------------------

" insertモードを抜けるとIMEオフ

" きちんと動きません:(

" set noimdisable

" set iminsert=0 imsearch=0

" set noimcmdline

" inoremap <ESC> <ESC>:set iminsert=0<CR>


" y9で行末までヤンク

nmap y9 y$

" y0, y1で行頭までヤンク

nmap y0 y^

nmap y1 y^

" d9で行末まで削除

nmap d9 d$

" d0, d1で行頭まで削除

nmap d0 d^

nmap d1 d^

"--------------------------------------------------

" Neocomplcacheの設定

"--------------------------------------------------

" Disable AutoComplPop.

"let g:acp_enableAtStartup = 0

" Use neocomplcache.

let g:neocomplcache_enable_at_startup = 1

" Use smartcase.

let g:neocomplcache_enable_smart_case = 1

" Use camel case completion.

let g:neocomplcache_enable_camel_case_completion = 1

" Use underbar completion.

let g:neocomplcache_enable_underbar_completion = 1

" Set minimum syntax keyword length.

let g:neocomplcache_min_syntax_length = 3

let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'

" Define dictionary.

let g:neocomplcache_dictionary_filetype_lists = {

\ 'default' : $HOME.'/dictionary',

\ 'vimshell' : $HOME.'/.vimshell_hist',

\ 'scheme' : $HOME.'/.gosh_completions'

\ }

" Define keyword.

if !exists('g:neocomplcache_keyword_patterns')

let g:neocomplcache_keyword_patterns = {}

endif

let g:neocomplcache_keyword_patterns['default'] = '\h\w*'

" Plugin key-mappings.

imap <C-k> <Plug>(neocomplcache_snippets_expand)

smap <C-k> <Plug>(neocomplcache_snippets_expand)

"inoremap <expr><C-g> neocomplcache#undo_completion()

"inoremap <expr><C-l> neocomplcache#complete_common_string()

"

" SuperTab like snippets behavior.

"imap <expr><TAB> neocomplcache#sources#snippets_complete#expandable() ? "\<Plug>(neocomplcache_snippets_expand)" : pumvisible() ? "\<C-n>" : "\<TAB>"

" Recommended key-mappings.

" <CR>: close popup and save indent.

"inoremap <expr><CR> neocomplcache#smart_close_popup() . "\<CR>"

"" <TAB>: completion.

"inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"

""<C-h>, <BS>: close popup and delete backword char.

"inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>"

"inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>"

"inoremap <expr><C-y> neocomplcache#close_popup()

"inoremap <expr><C-e> neocomplcache#cancel_popup()

" AutoComplPop like behavior.

"let g:neocomplcache_enable_auto_select = 1

" Shell like behavior(not recommended).

"set completeopt+=longest

"let g:neocomplcache_enable_auto_select = 1

"let g:neocomplcache_disable_auto_complete = 1

"inoremap <expr><TAB> pumvisible() ? "\<Down>" : "\<TAB>"

"inoremap <expr><CR> neocomplcache#smart_close_popup() . "\<CR>"

" Enable omni completion.

autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS

autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags

autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS

autocmd FileType python setlocal omnifunc=pythoncomplete#Complete

autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags

" Enable heavy omni completion.

"if !exists('g:neocomplcache_omni_patterns')

" let g:neocomplcache_omni_patterns = {}

"endif

"let g:neocomplcache_omni_patterns.ruby = '[^. *\t]\.\w*\|\h\w*::'

""autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete

"let g:neocomplcache_omni_patterns.php = '[^. \t]->\h\w*\|\h\w*::'

"

2010-11-27

[]吹奏楽の名曲 00:11

もうすぐ10年間続けてきた吹奏楽人生を終えるんだと思いながら、昔、演奏したりよく聞いていた吹奏楽の名曲を思い出していました。

これからまたいつの日かくるであろう、その日のためにメモ

2010-11-26

[]卒業研究 類似作品、類似研究 16:12

鑑賞者の呼吸をセンシングし、そのリズムや強弱に基づいた視聴覚イメージの生成を行い、鑑賞者にリアルタイムでフィードバックすることを試みる  リンク

芸術学部 造形学科 メディアアート分野の学生の卒業制作 リンク

2010-11-25

[]ダンボールで豊かな暮らしを 13:25

マゴクラ magocraft

[][]フミキリスト 13:25

いろんなものを好きな人がいるもんだ

日本の“珍々”踏切

日本の“珍々”踏切

[][]航空写真家 野口克也 13:25

いいともに出ていた。

発光都市TOKYO

発光都市TOKYO

[]ノートPCから無線でUSBを使う方法 15:50

net.USBってやつを使うと出来る

TimeCapsuleもいいけど、net.USBだと他の機器も接続出来るのがよい

2010-11-19

[]年賀状 08:42

久しぶりに出してみようと思いました。

インプレスブックス - 本、雑誌と関連Webサービス