.vimrc
"NeoBundleの設定"{{{
if has('vim_starting')
set nocompatible
set runtimepath+=~/.vim/bundle/neobundle.vim/
endif
call neobundle#begin(expand('~/.vim/bundle/'))
NeoBundleFetch 'Shougo/neobundle.vim'
"Unite
NeoBundle 'Shougo/unite.vim'
NeoBundle 'Shougo/neomru.vim'
NeoBundle 'Shougo/unite-outline'
NeoBundle 'ujihisa/unite-colorscheme'
"補完
NeoBundle 'Shougo/neocomplcache'
"スニペット関連
NeoBundle 'Shougo/neosnippet'
NeoBundle 'Shougo/neosnippet-snippets'
"ファイラー
NeoBundle 'Shougo/vimfiler.vim'
"カラースキーマ
NeoBundle 'altercation/vim-colors-solarized'
NeoBundle 'croaker/mustang-vim'
NeoBundle 'nanotech/jellybeans.vim'
NeoBundle 'tomasr/molokai'
NeoBundle 'w0ng/vim-hybrid'
NeoBundle 'sickill/vim-monokai'
"テキストオブジェクトをもっと便利に
NeoBundle 'tpope/vim-surround'
NeoBundle 'kana/vim-textobj-user'
NeoBundle 'akiyan/vim-textobj-php'
NeoBundle 'osyo-manga/vim-textobj-multiblock'
NeoBundle 'kana/vim-textobj-function'
NeoBundle 'thinca/vim-textobj-comment'
"Emmetプラグイン
NeoBundle 'mattn/emmet-vim'
"JSON表示用プラグイン
NeoBundle 'elzr/vim-json'
"コメントアウト
NeoBundle 'tyru/caw.vim'
"ステータスラインのカスタマイズ
NeoBundle 'itchyny/lightline.vim'
"カーソル移動拡張
NeoBundle 'rhysd/clever-f.vim'
NeoBundle 'rhysd/accelerated-jk'
NeoBundle 'Lokaltog/vim-easymotion'
"選択領域の移動
NeoBundle 't9md/vim-textmanip'
"コマンドを素早く実行
NeoBundle 'thinca/vim-quickrun'
"整列プラグイン
NeoBundle 'junegunn/vim-easy-align'
"対応する括弧を自動で挿入
NeoBundle 'jiangmiao/auto-pairs'
"Vimを1つのインスタンスで使う
NeoBundle 'thinca/vim-singleton'
"テンプレート管理
NeoBundle 'mattn/sonictemplate-vim'
"editorconfig
NeoBundle 'editorconfig/editorconfig-vim'
"バッファをサムネイルで選択
NeoBundle 'itchyny/thumbnail.vim'
"Git
NeoBundle 'tpope/vim-fugitive'
NeoBundle 'cohama/agit.vim'
NeoBundle 'idanarye/vim-merginal'
filetype plugin indent on
NeoBundleCheck
call neobundle#end()
"}}}
"vim-singletonの設定"{{{
call singleton#enable()
"}}}
"各種設定"{{{
"標準の文字コードをUTF-8に指定する
set encoding=utf-8
set fileencodings=iso-2022-jp,cp932,sjis,euc-jp,utf-8
"シンタックスハイライトを有効にする
syntax on
"モードラインをONにする
set modeline
"OSのクリップボードを使う
set clipboard=unnamed
"ルーラーを表示
set ruler
"行数を表示
set number
"タブの設定
set expandtab tabstop=4 shiftwidth=4 softtabstop=0
"インデントの設定
set autoindent
set smartindent
"折り返ししない
set nowrap
"スワップファイルを作成しない
set noswapfile
"バックアップファイルを作成しない
set nobackup
"ステータスラインを常に表示
set laststatus=2
"変更中のファイルでも、保存しないで他のファイルを表示
set hidden
"他で書き換えられたら自動で読み直す
set autoread
"カーソルの上または下に表示する最小限の行数
set scrolloff=5
"コマンドラインモードで保存する履歴件数
set history=100
"コマンドラインモードでTABキーによるファイル名補完を有効にする
set wildmenu wildmode=list:longest,full
"検索時に大文字・小文字を区別しない
set ignorecase
"ただし、検索後に大文字小文字が混在しているときは区別する
set smartcase
" スクロールする時に下が見えるようにする
set scrolloff=5
"不可視文字を可視化する
set list
"どの文字でタブや改行を表示するかを設定
set listchars=tab:>.,trail:_,extends:<,eol:<
"バックスペースでインデントや改行を削除できるようにする
set backspace=indent,eol,start
"検索時にファイルの最後まで行ったら戻らない
set nowrapscan
"括弧入力時に対応する括弧を表示 (noshowmatch:表示しない)
set showmatch
"コマンドライン補完するときに強化されたものを使う(参照 :help wildmenu)
set wildmenu
"grep時、自動的にquickfix-windowを開く
autocmd QuickFixCmdPost *grep* cwindow
"}}}
"autocmdの設定{{{
autocmd BufEnter * silent! lcd %:p:h
"}}}
"キーマッピング"{{{
"-----------------------------------------------------------------------------------"
" Mappings |
"-----------------------------------------------------------------------------------"
" コマンド | ノーマル | 挿入 | コマンドライン | ビジュアル | 選択 | 演算待ち |
" map / noremap | @ | - | - | @ | @ | @ |
" nmap / nnoremap | @ | - | - | - | - | - |
" vmap / vnoremap | - | - | - | @ | @ | - |
" omap / onoremap | - | - | - | - | - | @ |
" xmap / xnoremap | - | - | - | @ | - | - |
" smap / snoremap | - | - | - | - | @ | - |
" map! / noremap! | - | @ | @ | - | - | - |
" imap / inoremap | - | @ | - | - | - | - |
" cmap / cnoremap | - | - | @ | - | - | - |
"-----------------------------------------------------------------------------------"
"コンマの後に自動的にスペースを挿入
inoremap , ,<Space>
"履歴検索
nnoremap : q:a
nnoremap / q/a
nnoremap ? q?a
"行末への移動
nnoremap <C-\> $
"INSERTモードからNORMALモードへ: jj
inoremap jj <ESC>
"縦方向は論理移動する
noremap j gj
noremap k gk
noremap gj j
noremap gk k
"行頭移動を文字の先頭に変更
noremap 0 ^
"Ctrlキーを押しながらjkキーは+-と同じ動きにする
noremap <C-j> +
noremap <C-k> -
"左右の矢印キーでバッファを移動
nnoremap <M-LEFT> :bp<CR>
nnoremap <M-RIGHT> :bn<CR>
"全選択する
nnoremap <Leader>a ggVG
"新しいタブを開く
nnoremap <Leader>t :tabnew<CR>
"開いているタブを閉じる
nnoremap <Leader>w :tabclose<CR>
"インデント後に再選択
vnoremap < <gv
vnoremap > >gv
"ハイライトを消す
nnoremap <Esc> :nohlsearch<CR>
"}}}
"neocomplcache.vimの設定"{{{
"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
"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' : ''
\ }
"Plugin key-mappings.
inoremap <expr><C-g> neocomplcache#undo_completion()
inoremap <expr><C-l> neocomplcache#complete_common_string()
"Recommended key-mappings.
"<CR>: close popup and save indent.
inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
function! s:my_cr_function()
return neocomplcache#smart_close_popup() . "\<CR>"
endfunction
"<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()
"}}}
"neosnippet.vimの設定"{{{
" <TAB>: completion.
" inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<S-TAB>"
" Plugin key-mappings.
imap <C-k> <Plug>(neosnippet_expand_or_jump)
smap <C-k> <Plug>(neosnippet_expand_or_jump)
" SuperTab like snippets behavior.
" imap <expr><TAB> neosnippet#jumpable() ? "\<Plug>(neosnippet_expand_or_jump)" : pumvisible() ? "\<C-n>" : "\<TAB>"
imap <expr><TAB> pumvisible() ? "\<C-n>" : neosnippet#jumpable() ? "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
smap <expr><TAB> neosnippet#jumpable() ? "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
" For snippet_complete marker.
if has('conceal')
set conceallevel=2 concealcursor=i
endif
"}}}
"caw.vimの設定"{{{
"Ctrl+cでコメントアウトのON/OFF
xmap <C-c> <Plug>(caw:i:toggle)
nmap <C-c> <Plug>(caw:i:toggle)
"}}}
"vim-easy-alignの設定"{{{
vmap <Enter> <Plug>(EasyAlign)
"}}}
"vim-textmanjpの設定"{{{
"複製の設定
xmap <C-S-DOWN> <Plug>(textmanip-duplicate-down)
nmap <C-S-DOWN> <Plug>(textmanip-duplicate-down)
"移動の設定
xmap <M-S-DOWN> <Plug>(textmanip-move-down)
xmap <M-S-UP> <Plug>(textmanip-move-up)
xmap <M-S-LEFT> <Plug>(textmanip-move-left)
xmap <M-S-RIGHT> <Plug>(textmanip-move-right)
"}}}
"vim-textobj-multiblock.vimの設定"{{{
omap ab <Plug>(textobj-multiblock-a)
omap ib <Plug>(textobj-multiblock-i)
vmap ab <Plug>(textobj-multiblock-a)
vmap ib <Plug>(textobj-multiblock-i)
"}}}
"vim-easymotionの設定"{{{
"General Configuration
let g:EasyMotion_do_mapping = 0
let g:EasyMotion_enter_jump_first = 1
let g:EasyMotion_space_jump_first = 1
"Find Motions
nmap s <Plug>(easymotion-s2)
xmap s <Plug>(easymotion-s2)
omap x <Plug>(easymotion-s2)
let g:EasyMotion_smartcase = 1
"Line Motions
map <Space>j <Plug>(easymotion-j)
map <Space>k <Plug>(easymotion-k)
let g:EasyMotion_startofline = 0
"Search Motions
"`<Tab>` & `<S-Tab>` to scroll up/down a page with next match
nmap g/ <Plug>(easymotion-sn)
xmap g/ <Plug>(easymotion-sn)
omap g/ <Plug>(easymotion-tn)
"}}}
"unite.vimの設定 {{{
"インサートモードで開始
let g:unite_enable_start_insert = 1
"ヒストリー/ヤンク機能を有効化
let g:unite_source_history_yank_enable =1
"file_recのキャッシュの最小値/最大値を設定
let g:unite_source_rec_min_cache_files = 100
let g:unite_source_rec_max_cache_files = 5000
"prefix keyの設定
nmap <Space> [unite]
"スペースキーとaキーでVimShellを起動
nnoremap <silent> [unite]a :<C-u>UniteWithBufferDir -buffer-name=files file<CR>
"スペースキーとfキーでバッファと最近開いたファイル一覧を表示
nnoremap <silent> [unite]f :<C-u>Unite<Space>buffer file_mru<CR>
"スペースキーとdキーで最近開いたディレクトリを表示
nnoremap <silent> [unite]d :<C-u>Unite<Space>directory_mru<CR>
"スペースキーとhキーでヒストリ/ヤンクを表示
nnoremap <silent> [unite]h :<C-u>Unite<Space>history/yank<CR>
"スペースキーとoキーでoutline
nnoremap <silent> [unite]o :<C-u>Unite<Space>outline<CR>
"スペースキーとENTERキーでfile_rec:!
nnoremap <silent> [unite]<CR> :<C-u>Unite<Space>file_rec:!<CR>
"unite.vimを開いている間のキーマッピング
autocmd FileType unite call s:unite_my_settings()
function! s:unite_my_settings()"{{{
" ESCでuniteを終了
nmap <buffer> <ESC> <Plug>(unite_exit)
endfunction"}}}
"}}}
"vimfiler.vimの設定"{{{
"vimデフォルトのエクスプローラをvimfilerで置き換える
let g:vimfiler_as_default_explorer = 1
"セーフモードを無効にした状態で起動する
let g:vimfiler_safe_mode_by_default = 0
"自動でカレントディレクトリを移動する
let g:vimfiler_enable_auto_cd = 1
"現在開いているバッファをIDE風に開く
nnoremap <silent> <Leader>z :<C-u>VimFilerBufferDir -split -simple -winwidth=45 -toggle -no-quit<CR>
"}}}
"thumbnail.vimの設定"{{{
nnoremap <Leader>b :Thumbnail<CR>
"}}}
"lightline.vimの設定"{{{
let g:lightline = {
\ 'active': {
\ 'left': [
\ ['mode'],
\ ['fugitive', 'filename']
\ ]
\ },
\ 'component_function': {
\ 'fugitive': 'MyFugitive'
\ }
\ }
function! MyFugitive()
try
if &ft !~? 'vimfiler\|gundo' && exists('*fugitive#head')
let _ = fugitive#head()
return strlen(_) ? _ : ''
endif
catch
endtry
return ''
endfunction
"}}}