Created
June 9, 2014 06:20
-
-
Save iberianpig/c06b80d7238b1c0d9788 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"http://vimblog.hatenablog.com/entry/vimrc_introduction | |
set number " 行番号を表示する | |
set cursorline " カーソル行の背景色を変える | |
set cursorcolumn " カーソル位置のカラムの背景色を変える | |
set laststatus=2 " ステータス行を常に表示 | |
set cmdheight=1 " メッセージ表示欄を2行確保 | |
set showmatch " 対応する括弧を強調表示 | |
set helpheight=998 " ヘルプを画面いっぱいに開く | |
set list " 不可視文字を表示 | |
set listchars=tab:▸\ ,eol:↲,extends:❯,precedes:❮ " 不可視文字の表示記号指定 | |
"カーソル移動系 | |
set backspace=indent,eol,start "Backspaceキーの影響範囲に制限を設けない | |
set whichwrap=b,s,h,l,<,>,[,] "行頭行末の左右移動で行をまたぐ | |
set scrolloff=8 "上下8行の視界を確保 | |
set sidescrolloff=16 " 左右スクロール時の視界を確保 | |
set sidescroll=1 " 左右スクロールは一文字づつ行う | |
"File処理関連 | |
set confirm "保存されていないファイルがあるときは終了前に保存確認 | |
set hidden "保存されていないファイルがあるときでも別のファイルを開くことが出来る | |
set autoread "外部でファイルに変更がされた場合は読みなおす | |
set nobackup "ファイル保存時にバックアップファイルを作らない | |
set noswapfile "ファイル編集中にスワップファイルを作らない | |
"検索関連 | |
set hlsearch "検索文字列をハイライトする | |
set incsearch "インクリメンタルサーチを行う | |
set ignorecase "大文字と小文字を区別しない | |
set smartcase "大文字と小文字が混在した言葉で検索を行った場合に限り、大文字と小文字を区別する | |
set wrapscan "最後尾まで検索を終えたら次の検索で先頭に移る | |
set gdefault "置換の時 g オプションをデフォルトで有効にする | |
" 検索後にジャンプした際に検索単語を画面中央に持ってくる | |
nnoremap n nzz | |
nnoremap N Nzz | |
nnoremap * *zz | |
nnoremap # #zz | |
nnoremap g* g*zz | |
nnoremap g# g#zz | |
" j, k による移動を折り返されたテキストでも自然に振る舞うように変更 | |
nnoremap j gj | |
nnoremap k gk | |
" vを二回で行末まで選択 | |
vnoremap v $h | |
" TABにて対応ペアにジャンプ | |
nnoremap <Tab> % | |
vnoremap <Tab> % | |
"ビープの設定 | |
"ビープ音すべてを無効にする | |
set visualbell t_vb= | |
set noerrorbells "エラーメッセージの表示時にビープを鳴らさない | |
"コマンドライン設定 | |
" コマンドラインモードでTABキーによるファイル名補完を有効にする | |
set wildmenu wildmode=list:longest,full | |
" コマンドラインの履歴を10000件保存する | |
set history=10000 | |
" 動作環境との統合 | |
" OSのクリップボードをレジスタ指定無しで Yank, Put 出来るようにする | |
set clipboard=unnamed,unnamedplus | |
"screen利用時設定 | |
set ttymouse=xterm2 | |
" マウスの入力を受け付ける | |
set mouse=a | |
"tab/indentの設定 | |
set shellslash | |
set expandtab "タブ入力を複数の空白入力に置き換える | |
set tabstop=2 "画面上でタブ文字が占める幅 | |
set shiftwidth=2 "自動インデントでずれる幅 | |
set softtabstop=2 "連続した空白に対してタブキーやバックスペースキーでカーソルが動く幅 | |
set autoindent "改行時に前の行のインデントを継続する | |
set smartindent "改行時に入力された行の末尾に合わせて次の行のインデントを増減する | |
".vimrcの編集用 | |
nnoremap <Space>. :<C-u>tabedit $MYVIMRC<CR> | |
"タブの設定 | |
" The prefix key. | |
nnoremap [Tag] <Nop> | |
nmap t [Tag] | |
" Tab jump | |
for n in range(1, 9) | |
execute 'nnoremap <silent> [Tag]'.n ':<C-u>tabnext'.n.'<CR>' | |
endfor | |
" tn 新しいタブを一番右に作る | |
map <silent> [Tag]n :tablast <bar> tabnew<CR> | |
" " tx タブを閉じる | |
map <silent> [Tag]x :tabclose<CR> | |
map <silent> [Tag]c :tabclose<CR> | |
map <silent> [Tag]h :tabprevious<CR> | |
map <silent> [Tag]l :tabnext<CR> | |
""Ctrl-Cでインサートモードを抜ける | |
inoremap <C-c> <ESC> | |
"挿入モード時、ステータスラインの色を変更 | |
let g:hi_insert = 'highlight StatusLine guifg=darkblue guibg=darkyellow gui=none ctermfg=blue ctermbg=yellow cterm=none' | |
if has('syntax') | |
augroup InsertHook | |
autocmd! | |
autocmd InsertEnter * call s:StatusLine('Enter') | |
autocmd InsertLeave * call s:StatusLine('Leave') | |
augroup END | |
endif | |
let s:slhlcmd = '' | |
function! s:StatusLine(mode) | |
if a:mode == 'Enter' | |
silent! let s:slhlcmd = 'highlight ' . s:GetHighlight('StatusLine') | |
silent exec g:hi_insert | |
else | |
highlight clear StatusLine | |
silent exec s:slhlcmd | |
endif | |
endfunction | |
function! s:GetHighlight(hi) | |
redir => hl | |
exec 'highlight '.a:hi | |
redir END | |
let hl = substitute(hl, '[\r\n]', '', 'g') | |
let hl = substitute(hl, 'xxx', '', '') | |
return hl | |
endfunction | |
if has('unix') && !has('gui_running') | |
" ESC後にすぐ反映されない対策 | |
inoremap <silent> <ESC> <ESC> | |
endif | |
" w!! でスーパーユーザーとして保存(sudoが使える環境限定) | |
cmap w!! w !sudo tee > /dev/null % | |
" 入力モード中に素早くJJと入力した場合はESCとみなす | |
inoremap jj <Esc> | |
" ESCを二回押すことでハイライトを消す | |
nmap <silent> <Esc><Esc> :nohlsearch<CR> | |
" NeoBundle がインストールされていない時、 | |
" もしくは、プラグインの初期化に失敗した時の処理 | |
function! s:WithoutBundles() | |
colorscheme desert | |
" その他の処理 | |
endfunction | |
" NeoBundle よるプラグインのロードと各プラグインの初期化 | |
function! s:LoadBundles() | |
" 読み込むプラグインの指定 | |
NeoBundle 'Shougo/neobundle.vim' | |
NeoBundle 'Shougo/neocomplcache.vim' | |
NeoBundle 'Shougo/neosnippet.vim' | |
NeoBundle 'Shougo/neosnippet-snippets' | |
NeoBundle 'Shougo/neomru.vim' | |
NeoBundle 'Shougo/vimshell.git' | |
" vimprocのインストールとbuild | |
" " 自動でインストールしてビルド(make)してくれる | |
NeoBundle 'Shougo/vimproc', { | |
\ 'build' : { | |
\ 'windows' : 'make -f make_mingw32.mak', | |
\ 'cygwin' : 'make -f make_cygwin.mak', | |
\ 'mac' : 'make -f make_mac.mak', | |
\ 'unix' : 'make -f make_unix.mak', | |
\ }, | |
\ } | |
NeoBundle 'honza/vim-snippets' | |
NeoBundle 'tpope/vim-surround' | |
NeoBundle 'tpope/vim-rails' | |
NeoBundle 'tpope/vim-fugitive' | |
NeoBundle 'thinca/vim-quickrun' | |
NeoBundle 'tyru/open-browser.vim' | |
NeoBundle 'superbrothers/vim-quickrun-markdown-gfm' | |
NeoBundle 'Shougo/vimfiler' | |
NeoBundle 'thinca/vim-guicolorscheme' | |
NeoBundle 'itchyny/lightline.vim' | |
NeoBundle 'junegunn/vim-easy-align' | |
NeoBundle 'terryma/vim-multiple-cursors' | |
NeoBundle 'AndrewRadev/switch.vim' | |
NeoBundle 'kana/vim-submode' | |
NeoBundle 'tomtom/tcomment_vim' | |
NeoBundle 'Lokaltog/vim-powerline' | |
NeoBundle 'mattn/emmet-vim' | |
NeoBundle 'osyo-manga/vim-over' | |
NeoBundle 'tpope/vim-markdown' | |
NeoBundle 'glidenote/octoeditor.vim' | |
NeoBundle 'tpope/vim-liquid' | |
NeoBundle 'mattn/gist-vim' | |
NeoBundle 'mattn/webapi-vim' | |
NeoBundle 'vim-scripts/vim-auto-save' | |
NeoBundle 'syui/cscroll.vim' | |
NeoBundle 'xolox/vim-session', { 'depends' : 'xolox/vim-misc',} | |
NeoBundle 'Shougo/unite-outline' | |
NeoBundle 'thinca/vim-ref' | |
NeoBundle 'mfumi/ref-dicts-en' | |
NeoBundle 'tyru/vim-altercmd' | |
NeoBundle 'ujihisa/neco-look' | |
NeoBundle 'scrooloose/syntastic' | |
"colorscheme | |
NeoBundle 'altercation/vim-colors-solarized' | |
NeoBundle 'croaker/mustang-vim' | |
NeoBundle 'jeffreyiacono/vim-colors-wombat' | |
NeoBundle 'nanotech/jellybeans.vim' | |
NeoBundle 'vim-scripts/Lucius' | |
NeoBundle 'vim-scripts/Zenburn' | |
NeoBundle 'mrkn/mrkn256.vim' | |
NeoBundle 'jpo/vim-railscasts-theme' | |
NeoBundle 'therubymug/vim-pyte' | |
NeoBundle 'tomasr/molokai' | |
" カラースキーム一覧表示に Unite.vim を使う | |
NeoBundle 'Shougo/unite.vim' | |
NeoBundle 'ujihisa/unite-colorscheme' | |
" ... | |
" 読み込んだプラグインの設定 | |
" ... | |
set t_Co=256 "ターミナルで256色利用 | |
set background=dark "暗めの背景 | |
colorscheme jellybeans "set colorscheme | |
" "NeoSnippet.vim | |
let g:neosnippet#enable_snipmate_compatibility = 1 | |
" Tell Neosnippet about the other snippets | |
let g:neosnippet#snippets_directory='~/.vim/bundle/vim-snippets/snippets, ~/.vim/snippets' | |
" Plugin key-mappings. | |
"imap <C-k> <Plug>(neosnippet_expand_or_jump) | |
"smap <C-k> <Plug>(neosnippet_expand_or_jump) | |
"xmap <C-k> <Plug>(neosnippet_expand_target) | |
imap <Nul> <C-Space> | |
imap <C-Space> <Plug>(neosnippet_expand_or_jump) | |
smap <C-Space> <Plug>(neosnippet_expand_or_jump) | |
xmap <C-Space> <Plug>(neosnippet_expand_target) | |
" SuperTab like snippets behavior. | |
imap <expr><TAB> neosnippet#expandable_or_jumpable() ? | |
\ "\<Plug>(neosnippet_expand_or_jump)" | |
\: pumvisible() ? "\<C-n>" : "\<TAB>" | |
smap <expr><TAB> neosnippet#expandable_or_jumpable() ? | |
\ "\<Plug>(neosnippet_expand_or_jump)" | |
\: "\<TAB>" | |
" For snippet_complete marker. | |
if has('conceal') | |
set conceallevel=2 concealcursor=i | |
endif | |
"" vimfiler | |
let g:vimfiler_as_default_explorer=1 | |
let g:vimfiler_ignore_pattern='\(^\.\|\~$\|\.pyc$\|\.[oad]$\)' | |
"autocmd VimEnter * VimFiler -buffer-name=explorer -split -simple -winwidth=30 -toggle -no-quit | |
nnoremap <C-k><C-f> :VimFiler -project<CR> | |
inoremap <C-k><C-f> <ESC>:VimFiler -project<CR> | |
nnoremap <C-k><C-k> :VimFiler -buffer-name=explorer -split -simple -project -winwidth=29 -toggle -no-quit<Cr> | |
autocmd FileType vimfiler | |
\ nnoremap <buffer><silent>/ | |
\ :<C-u>Unite file -default-action=tabopen<CR> | |
"" neocomplcache | |
" 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' : '' | |
\ } | |
let g:neocomplcache_force_overwrite_completefunc=1 | |
" 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() | |
"" switch | |
nnoremap - :Switch<cr> | |
"" submode.vim | |
" http://d.hatena.ne.jp/thinca/20130131/1359567419 | |
" ウィンドウサイズの変更キーを簡易化する | |
" [C-w],[+]または、[C-w],[-] | |
call submode#enter_with('winsize', 'n', '', '<C-w>>', '<C-w>>') | |
call submode#enter_with('winsize', 'n', '', '<C-w><', '<C-w><') | |
call submode#enter_with('winsize', 'n', '', '<C-w>+', '<C-w>-') | |
call submode#enter_with('winsize', 'n', '', '<C-w>-', '<C-w>+') | |
call submode#map('winsize', 'n', '', '>', '<C-w>>') | |
call submode#map('winsize', 'n', '', '<', '<C-w><') | |
call submode#map('winsize', 'n', '', '+', '<C-w>-') | |
call submode#map('winsize', 'n', '', '-', '<C-w>+') | |
" Shift + 矢印でウィンドウサイズを変更 | |
nnoremap <A-S-Left> <C-w><<CR> | |
nnoremap <A-S-Right> <C-w>><CR> | |
nnoremap <A-S-Up> <C-w>-<CR> | |
nnoremap <A-S-Down> <C-w>+<CR> | |
"" over.vim | |
" over.vimの起動 | |
nnoremap <silent> ,m :OverCommandLine<CR>%s/ | |
" カーソル下の単語をハイライト付きで置換 | |
nnoremap sub :OverCommandLine<CR>%s/<C-r><C-w>//g<Left><Left> | |
" コピーした文字列をハイライト付きで置換 | |
nnoremap subp y:OverCommandLine<CR>%s/<C-r>=substitute(@0, '/', '/', 'g')<CR>//g<Left><Left> | |
" Unite | |
let g:unite_enable_start_insert=1 | |
let g:unite_source_history_yank_enable =1 | |
let g:unite_source_file_mru_limit = 200 | |
nnoremap <silent> ,y :<C-u>Unite history/yank<CR> | |
"nnoremap <silent> ,ub :<C-u>Unite buffer<CR> | |
nnoremap <silent> ,f :<C-u>UniteWithBufferDir -buffer-name=files file<CR> | |
nnoremap <silent> ,r :<C-u>Unite -buffer-name=register register<CR> | |
nnoremap <silent> ,u :<C-u>Unite buffer file_mru<CR> | |
nnoremap <silent> ,b :<C-u>Unite bookmark<CR> | |
nnoremap <silent> ,ba :<C-u>UniteBookmarkAdd<CR> | |
nnoremap <C-p> :<C-u>execute | |
\ 'Unite' | |
\ '-start-insert' | |
\ 'buffer' | |
\ 'file_rec/async:!:'.fnameescape(expand('%:p:h')) | |
\ '-default-action=tabopen'<CR> | |
" \ 'file_mru' | |
nnoremap <silent> ,e :<C-u>Unite file_rec/async:!<CR> | |
"Octorpess | |
let g:octopress_path = '~/octopress' | |
let g:octopress_bundle_exec = 1 | |
let g:octopress_prompt_categories = 1 | |
map <Leader>on :OctopressNew<CR> | |
map <Leader>ol :OctopressList<CR> | |
map <Leader>og :OctopressGrep<CR> | |
nmap ,og :OctopressGenerate<CR> | |
nmap ,od :OctopressDeploy<CR> | |
"gist-vim | |
let g:gist_detect_filetype = 1 | |
let g:github_user = 'iberianpig' | |
" Only :w! updates a gist. | |
let g:gist_update_on_write = 2 | |
" [,]+j+j+j...で下にスクロール、[,]+k+k+k...で上にスクロール | |
nnoremap <silent> <Leader>j :ChromeScrollDown<CR> | |
nnoremap <silent> <Leader>k :ChromeScrollUp<CR> | |
call submode#enter_with('cscroll', 'n', '', '<Leader>j', ':ChromeScrollDown<CR>') | |
call submode#enter_with('cscroll', 'n', '', '<Leader>k', ':ChromeScrollUp<CR>') | |
call submode#leave_with('cscroll', 'n', '', 'n') | |
call submode#map('cscroll', 'n', '', 'j', ':ChromeScrollDown<CR>') | |
call submode#map('cscroll', 'n', '', 'k', ':ChromeScrollUp<CR>') | |
" 現在のタブを閉じる | |
nnoremap <silent> <Leader>q :ChromeTabClose<CR> | |
" [,]+f+{char}でキーを Google Chrome に送る | |
" nnoremap <buffer> <Leader>f :ChromeKey<Space> | |
"quickrun | |
let g:quickrun_config = { | |
\ 'markdown': { | |
\ 'type': 'markdown/gfm', | |
\ 'outputter': 'browser' | |
\ } | |
\ } | |
" vim-session | |
" 現在のディレクトリ直下の .vimsessions/ を取得 | |
let s:local_session_directory = xolox#misc#path#merge(getcwd(), '.vimsessions') | |
" 存在すれば | |
if isdirectory(s:local_session_directory) | |
" session保存ディレクトリをそのディレクトリの設定 | |
let g:session_directory = s:local_session_directory | |
" vimを辞める時に自動保存 | |
let g:session_autosave = 'yes' | |
" 引数なしでvimを起動した時にsession保存ディレクトリのdefault.vimを開く | |
let g:session_autoload = 'yes' | |
" 1分間に1回自動保存 | |
let g:session_autosave_periodic = 1 | |
else | |
let g:session_autosave = 'no' | |
let g:session_autoload = 'no' | |
endif | |
" vim-ref のバッファを q で閉じられるようにする | |
autocmd FileType ref-* nnoremap <buffer> <silent> q :<C-u>close<CR> | |
" 辞書定義 | |
let g:ref_source_webdict_sites = { | |
\ 'je': { | |
\ 'url': 'http://dictionary.infoseek.ne.jp/jeword/%s', | |
\ }, | |
\ 'ej': { | |
\ 'url': 'http://dictionary.infoseek.ne.jp/ejword/%s', | |
\ }, | |
\ } | |
" デフォルトサイト | |
let g:ref_source_webdict_sites.default = 'ej' | |
" 出力に対するフィルタ | |
" 最初の数行を削除 | |
function! g:ref_source_webdict_sites.je.filter(output) | |
return join(split(a:output, "\n")[15 :], "\n") | |
endfunction | |
function! g:ref_source_webdict_sites.ej.filter(output) | |
return join(split(a:output, "\n")[15 :], "\n") | |
endfunction | |
call altercmd#load() | |
CAlterCommand ej Ref webdict ej | |
CAlterCommand je Ref webdict je | |
"syntasitc[rubocop] | |
let g:syntastic_ruby_checkers = ['rubocop'] | |
let g:syntastic_enable_signs=1 | |
let g:syntastic_auto_loc_list=2 | |
let g:syntastic_mode_map = {'mode': 'passive'} | |
" augroup AutoSyntastic | |
" autocmd! | |
" autocmd InsertLeave,TextChanged * call s:syntastic() | |
" augroup END | |
" function! s:syntastic() | |
" w | |
" SyntasticCheck | |
" endfunction | |
"読み込んだプラグインの設定ここまで | |
endfunction | |
" NeoBundle がインストールされているなら LoadBundles() を呼び出す | |
" そうでないなら WithoutBundles() を呼び出す | |
function! s:InitNeoBundle() | |
if isdirectory(expand("~/.vim/bundle/neobundle.vim/")) | |
filetype plugin indent off | |
if has('vim_starting') | |
set runtimepath+=~/.vim/bundle/neobundle.vim/ | |
endif | |
try | |
call neobundle#rc(expand('~/.vim/bundle/')) | |
call s:LoadBundles() | |
catch | |
call s:WithoutBundles() | |
endtry | |
else | |
call s:WithoutBundles() | |
endif | |
filetype indent plugin on | |
syntax on | |
endfunction | |
call s:InitNeoBundle() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment