Skip to content

Instantly share code, notes, and snippets.

@iberianpig
Created June 9, 2014 06:20
Show Gist options
  • Save iberianpig/c06b80d7238b1c0d9788 to your computer and use it in GitHub Desktop.
Save iberianpig/c06b80d7238b1c0d9788 to your computer and use it in GitHub Desktop.
"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 &lt;Tab&gt; %
vnoremap &lt;Tab&gt; %
"ビープの設定
"ビープ音すべてを無効にする
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