"------------------------------------ " NeoBundle settings "------------------------------------ set nocompatible filetype off filetype plugin indent off set rtp+=~/dotfiles/neobundle.git/ if has('vim_starting') set runtimepath+=~/dotfiles/neobundle.vim call neobundle#rc(expand('~/.vim/')) endif " NeoBundleをNeoBundleで管理する NeoBundle 'Shougo/neobundle.vim' " 選択部分のキーワードを*を押して検索 NeoBundle 'thinca/vim-visualstar' " Vimperator風に移動できる " 実行:\\bで後方へ移動、\\wで前方へ移動 NeoBundle 'Lokaltog/vim-easymotion' "嫌だったのでspace spaceに変更 let g:EasyMotion_leader_key = '' " 簡単にコメントアウトする " gcc or C-_でトグル NeoBundle 'tomtom/tcomment_vim' " エラーチェックする " 読み込み遅いし保存時に待たされるのでやめた " perl, rubyは素の状態でもErrorチェックしてくれるみたい " javascriptとかはJlitとかいれましょう " rubyは保存時に勝手にチェックしてくれた! NeoBundle 'https://github.com/scrooloose/syntastic.git' compiler ruby compiler perl let g:syntastic_mode_map = { 'mode': 'passive', \ 'active_filetypes': ['perl', 'ruby', 'javascript'], \ 'passive_filetypes': [] } let g:syntastic_enable_signs=1 let g:syntastic_auto_loc_list=2 autocmd BufWritePre * :Errors set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* " お気に入りのMolkaiカラーを使用する NeoBundle 'molokai' colorscheme molokai let g:molokai_original = 1 " Shogoさんの力を借りる " NeoBundleInstall 後に.vim/vimprocディレクトリで " Mac : $ make -f make_mac.mak " Linux: $ make -f make_unix.mak NeoBundle 'http://github.com/Shougo/vimproc.git' NeoBundle 'Shougo/neocomplcache' NeoBundle 'http://github.com/Shougo/neocomplcache-snippets-complete' NeoBundle 'http://github.com/Shougo/vimfiler.git' " デフォルトをvimfilerに let g:vimfiler_as_default_explorer = 1 NeoBundle 'http://github.com/Shougo/vimshell.git' NeoBundle 'Shougo/unite.vim' NeoBundle 'https://github.com/Sixeight/unite-grep.git' NeoBundle 'https://github.com/thinca/vim-qfreplace.git' " 別にいらないけど入れてみた。いらなかった。 NeoBundle 'ack.vim' set grepprg=ack\ -a " APIのドキュメントを参照する " Shift+K NeoBundle 'thinca/vim-ref' " 正規表現をPerl風に " :%S///gc NeoBundle 'http://github.com/othree/eregex.vim' nnoremap / :M/ " ヤンクを辿れるようにする NeoBundle "YankRing.vim" let g:yankring_manual_clipboard_check = 0 let g:yankring_max_history = 30 let g:yankring_max_display = 70 " Yankの履歴参照 nmap ,y ;YRShow " 英語の補完を行う NeoBundle 'http://github.com/ujihisa/neco-look.git' " \yで開いているコードを実行 NeoBundle "http://github.com/thinca/vim-quickrun.git" " for quickrun.vim let g:quickrun_config = { \ 'objc': { \ 'command': 'clang', \ 'exec': ['%c %s -o %s:p:r -framework Foundation', '%s:p:r %a', 'rm -f %s:p:r'], \ 'tempfile': '{tempname()}.m', \ } \ } NeoBundle "https://github.com/msanders/cocoa.vim.git" " vimでzencodingする " Ctrl+y, NeoBundle "https://github.com/mattn/zencoding-vim.git" let g:user_zen_settings = { 'indentation' : ' ', } " Programming perl NeoBundle "http://github.com/hotchpotch/perldoc-vim" NeoBundle "http://github.com/c9s/perlomni.vim" NeoBundle "http://github.com/mattn/perlvalidate-vim.git" NeoBundle "petdance/vim-perl" " ()や''でくくったりするための補助 " text-objectの支援 " vi' で'の中身を選択 " va' で'も含めて選択 だが " cs'" cs"' などと囲っているものに対する操作ができる " visualモードのときはSを代用 NeoBundle "tpope/vim-surround" " %の拡張 NeoBundle "https://github.com/tmhedberg/matchit.git" " =と押して = となるようにする他 NeoBundle "smartchr" " inoremap = smartchr#loop(' = ', '=', ' == ') inoremap , smartchr#one_of(', ', ',') " 色々な入力補助 NeoBundle "kana/vim-smartinput.git" " 前回の操作を.で繰り返す NeoBundle 'repeat.vim' " HatenaをVimから投稿 NeoBundle 'motemen/hatena-vim' let g:hatena_user = 'kazuph1986' " Ruby環境 NeoBundle 'https://github.com/vim-ruby/vim-ruby.git' NeoBundle 'https://github.com/tpope/vim-rails.git' let g:rubycomplete_buffer_loading = 1 let g:rubycomplete_classes_in_global = 1 let g:rubycomplete_rails = 1 imap " Vimでプレゼンする? NeoBundle 'https://github.com/thinca/vim-showtime.git' " undo treeを表示する NeoBundle 'https://github.com/sjl/gundo.vim.git' nnoremap :GundoToggle " 整列を割と自動でやってくれる " 例えば:Alignta = で=でそろえてくれる NeoBundle 'https://github.com/h1mesuke/vim-alignta.git' set ambiwidth=double xnoremap a: :Alignta 01 : xnoremap al :Alignta " キャメル・アンダースコア記法を扱いやすく " ,w ,e ,b " v,w " d,w NeoBundle 'https://github.com/bkad/CamelCaseMotion.git' map w ,w map e ,e map b ,b " 括弧とか勝手に閉じてくれる " いらいらするのでやめてる " NeoBundle 'AutoClose' " ステータスラインをかっこ良く NeoBundle 'Lokaltog/vim-powerline' " ステータスラインでハァハァしたかったからやった。後悔はしていない。 NeoBundle 'https://github.com/mattn/hahhah-vim.git' " vimからgitをいじる NeoBundle 'https://github.com/motemen/git-vim.git' " じゃあvimからsvnもいじる NeoBundle 'svn.vim' NeoBundle 'svn-diff.vim' NeoBundle 'svndiff.vim' " 読み込みの遅延を測定する " 以下で実行 " :BenchVimrc NeoBundle 'mattn/benchvimrc-vim.git' NeoBundle 'othree/html5.vim.git' "-------------------------------------------------------------------setting 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' : '', \ 'vimshell' : $HOME.'/.vimshell_hist', \ 'perl' : $HOME . '/.vim/dict/perl.dict', \ '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. inoremap neocomplcache#undo_completion() inoremap neocomplcache#complete_common_string() " Recommended key-mappings. " : close popup and save indent. inoremap neocomplcache#close_popup() . "\" " : completion. inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" " , : close popup and delete backword char. inoremap neocomplcache#smart_close_popup()."\" inoremap neocomplcache#smart_close_popup()."\" inoremap neocomplcache#close_popup() inoremap neocomplcache#cancel_popup() " 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 ruby setlocal omnifunc=rubycomplete#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]\.\h\w*\|\h\w*::' "autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete let g:neocomplcache_omni_patterns.php = '[^. \t]->\h\w*\|\h\w*::' let g:neocomplcache_omni_patterns.c = '\%(\.\|->\)\h\w*' let g:neocomplcache_omni_patterns.cpp = '\h\w*\%(\.\|->\)\h\w*\|\h\w*::' "----------------------------------------------------------------------------- unite.vim let g:unite_update_time = 1000 " 入力モードで開始する let g:unite_enable_start_insert=1 " ファイル一覧 nnoremap ,uf :UniteWithBufferDir -buffer-name=files file " 最近使用したファイル一覧 nnoremap ,um :Unite file_mru " ブックマーク一覧 nnoremap ,ub :Unite bookmark " ブックマーク追加 nnoremap ,ua :UniteBookmarkAdd " yank一覧 nnoremap ,uy :Unite -buffer-name=register register " 常用セット nnoremap ,uu :Unite buffer file_mru " unite-grep nnoremap ,ug :Unite grep " source nnoremap ,us :Unite source " ref nnoremap ,ur :Unite ref/ " 全部乗せ " nnoremap ,ua :UniteWithBufferDir -buffer-name=files buffer file_mru bookmark file " ウィンドウを分割して開く au FileType unite nnoremap unite#do_action('split') au FileType unite inoremap unite#do_action('split') " ウィンドウを縦に分割して開く au FileType unite nnoremap unite#do_action('vsplit') au FileType unite inoremap unite#do_action('vsplit') au FileType unite nnoremap q au FileType unite inoremap q autocmd FileType unite call s:unite_my_settings() function! s:unite_my_settings() " Overwrite settings. imap jj (unite_insert_leave) imap imap (unite_delete_backward_path) nnoremap t G startinsert endfunction call unite#custom_default_action('source/bookmark/directory' , 'vimfiler') "-------------------------------------------------------------------------- " BasicSetting "-------------------------------------------------------------------------- " ファイル名と内容をもとにファイルタイププラグインを有効にする filetype plugin indent on " ハイライトON syntax on " 認識されないっぽいファイルタイプを追加 au BufNewFile,BufRead *.psgi set filetype=perl au BufNewFile,BufRead *.ejs set filetype=html au BufNewFile,BufRead *.ep set filetype=html au BufNewFile,BufRead *.pde set filetype=processing au BufNewFile,BufRead *.erb set filetype=html au BufRead, BufNewFile *.scss set filetype=scss " ファイルエンコーディング set fileencodings=ucs-bom,utf-8,iso-2022-jp,sjis,cp932,euc-jp,cp20932 set encoding=utf-8 " 未保存のバッファでも裏に保持 set hidden " コマンドラインでの補完候補が表示されるようになる set wildmenu " コマンドをステータス行に表示 set showcmd " 検索語を強調表示 set hlsearch " 検索時に大文字・小文字を区別しない。ただし、検索後に大文字小文字が " 混在しているときは区別する set ignorecase set smartcase " オートインデント set autoindent set smartindent " 画面最下行にルーラーを表示する set ruler " ステータスラインを常に表示する set laststatus=2 " キーで'paste'と'nopaste'を切り替える set pastetoggle= set cindent set tabstop=4 set shiftwidth=4 autocmd FileType apache setlocal sw=4 sts=4 ts=4 et autocmd FileType aspvbs setlocal sw=4 sts=4 ts=4 et autocmd FileType c setlocal sw=4 sts=4 ts=4 et autocmd FileType cpp setlocal sw=4 sts=4 ts=4 et autocmd FileType cs setlocal sw=4 sts=4 ts=4 et autocmd FileType css setlocal sw=2 sts=2 ts=2 et autocmd FileType diff setlocal sw=4 sts=4 ts=4 et autocmd FileType eruby setlocal sw=4 sts=4 ts=4 et autocmd FileType html setlocal sw=2 sts=2 ts=2 et autocmd FileType java setlocal sw=4 sts=4 ts=4 et autocmd FileType javascript setlocal sw=2 sts=2 ts=2 et autocmd FileType perl setlocal sw=4 sts=4 ts=4 et autocmd FileType php setlocal sw=4 sts=4 ts=4 et autocmd FileType python setlocal sw=4 sts=4 ts=4 et autocmd FileType ruby setlocal sw=2 sts=2 ts=2 et autocmd FileType haml setlocal sw=2 sts=2 ts=2 et autocmd FileType sh setlocal sw=4 sts=4 ts=4 et autocmd FileType sql setlocal sw=4 sts=4 ts=4 et autocmd FileType vb setlocal sw=4 sts=4 ts=4 et autocmd FileType vim setlocal sw=2 sts=2 ts=2 et autocmd FileType wsh setlocal sw=4 sts=4 ts=4 et autocmd FileType xhtml setlocal sw=4 sts=4 ts=4 et autocmd FileType xml setlocal sw=4 sts=4 ts=4 et autocmd FileType yaml setlocal sw=2 sts=2 ts=2 et autocmd FileType zsh setlocal sw=4 sts=4 ts=4 et autocmd FileType scala setlocal sw=2 sts=2 ts=2 et autocmd FileType scheme setlocal sw=2 sts=2 ts=2 et set autoread set expandtab set cmdheight=2 set showmode " 現在のモードを表示 set modelines=0 " モードラインは無効 set showmatch set number set list set listchars=tab:»-,trail:-,nbsp:% set display=uhex set t_Co=256 " 全角スペースの表示 highlight ZenkakuSpace cterm=underline ctermfg=lightblue guibg=darkgray match ZenkakuSpace / / " カーソル行をハイライト set cursorline " カレントウィンドウにのみ罫線を引く augroup cch autocmd! cch autocmd WinLeave * set nocursorline autocmd WinEnter,BufRead * set cursorline augroup END hi clear CursorLine hi CursorLine gui=underline highlight CursorLine ctermbg=black guibg=black " コマンド実行中は再描画しない set lazyredraw " 高速ターミナル接続を行う set ttyfast nnoremap :nohlsearch noremap ; : noremap : ; " 保存時に行末の空白を除去する " autocmd BufWritePre * :%s/\s\+$//ge " 保存時にtabをスペースに変換する autocmd BufWritePre * :%s/\t/ /ge " vimgrep検索時に結果一覧を自動的に開く augroup grepopen autocmd! autocmd QuickFixCmdPost vimgrep cw autocmd QuickFixCmdPost grep cw augroup END " CTRL-hjklでウィンドウ移動 " nnoremap j " nnoremap k " nnoremap l " nnoremap h nnoremap 0 ^ nnoremap 9 $ "カーソルを表示行で移動する。物理行移動は, nnoremap j gj nnoremap k gk " スクロールしても常にカーソルが中央にあるようにする set scrolloff=1000 " visualmodeでインテントを><の連打で変更できるようにする vnoremap < >gv " インサートモード中に抜け出す inoremap jj inoremap kk " ファイルを開いた時に最後のカーソル位置を再現する au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif " OS依存 " OSのクリップボードを使用する set clipboard+=unnamed " ターミナルでマウスを使用できるようにする set mouse=a set guioptions+=a set ttymouse=xterm2 "ヤンクした文字は、システムのクリップボードに入れる" set clipboard=unnamed " テンプレートの設定 autocmd BufNewFile *.rb 0r ~/dotfiles/templates/rb.tpl autocmd BufNewFile *.pl 0r ~/dotfiles/templates/pl.tpl