だからみんなVimになればいいのにー.vimrcと.zshrcをスリム化したいー

肥大化傾向にあった.vimrcと.zshrc

20160320201252

最近までプライベートに忙しくて、やっと本格的に仕事に復帰するようになってきたのですが、ここ「商売道具」でありながら半年くらいメンテを放置して重厚長大になったままの.vimrcと.zshrcをそろそろ見直したいと思っています。

プラグイン開発が既に終わったものやフォークされたものも存在するので、その辺から切り離してスリム構成にしていこうと思っています。

あと10月27日に新型Macが出たら買いたいと思っているので、HomeBrewでインストールするものリストも整備しておきたいと思っています。

現在の.vimrcの中身

いま現在の私の.vimrcの中身はこんな感じになっています。

" 構文チェック
syntax enable
" エンコーディング
set encoding=UTF-8
set fileencoding=UTF-8
set termencoding=UTF-8
" スクロールする時に下が見えるようにする
set scrolloff=5
" .swapファイルを作らない
set noswapfile
" バックアップファイルを作らない
set nowritebackup
" バックアップをしない
set nobackup
" バックスペースで各種消せるようにする
set backspace=indent,eol,start
" ビープ音を消す
set vb t_vb=
set novisualbell
" OSのクリップボードを使う
set clipboard=unnamed,autoselect
" 不可視文字を表示
set list
" 右下に表示される行・列の番号を表示する
set ruler
" compatibleオプションをオフにする
set nocompatible
" 移動コマンドを使ったとき、行頭に移動しない
set nostartofline
" 対応括弧に<と>のペアを追加
set matchpairs& matchpairs+=<:>
" 対応括弧をハイライト表示する
set showmatch
" 対応括弧の表示秒数を3秒にする
set matchtime=3
" ウィンドウの幅より長い行は折り返され、次の行に続けて表示される
set wrap
" 入力されているテキストの最大幅を無効にする
set textwidth=0
" 不可視文字を表示
set listchars=tab:»-,trail:-,extends:»,precedes:«,nbsp:%,eol:↲
" インデントをshiftwidthの倍数に丸める
set shiftround
" 補完の際の大文字小文字の区別しない
set infercase
" 文字がない場所にもカーソルを移動できるようにする
set virtualedit=all
" 変更中のファイルでも、保存しないで他のファイルを表示
set hidden
" 新しく開く代わりにすでに開いてあるバッファを開く
set switchbuf=useopen
" 小文字の検索でも大文字も見つかるようにする
set ignorecase
" ただし大文字も含めた検索の場合はその通りに検索する
set smartcase
" インクリメンタルサーチを行う
set incsearch
" 検索結果をハイライト表示
:set hlsearch
" タブ文字幅
set tabstop=4
" 自動インデントの幅
set shiftwidth=4
" タブ入力を複数の空白入力に置き換え
set expandtab
" 行頭の余白内で Tab を打ち込むとshiftwidthの数だけインデントする
set smarttab
" autoindentと同様だがC構文を認識
set smartindent
" カラー設定
set t_Co=256
set background=dark
colorscheme solarized
let g:solarized_termcolors=256
set listchars=eol:¬,tab:▸ 
" 行番号表示
set number
" タイトルをウィンドウ枠に表示
set title
set undolevels=300
" コマンド・検索パターンの履歴
set history=10000
" IME設定
set iminsert=0
set imsearch=0
set imdisable
" ステータスライン
set laststatus=2
" メッセージ表示欄
set cmdheight=2
" 置換の時 g オプションをデフォルトで有効にする
set gdefault
" カーソルが何行目の何列目に置かれているかを表示する
set ruler
" コマンドを画面下に表示させる
set showcmd
" タブ補完
set wildmenu
set wildmode=list:longest
" 最後尾まで検索を終えたら次の検索で先頭に移る
set wrapscan
" ペースト
set pastetoggle=<F12>
set clipboard=unnamed,unnamedplus,autoselect
" ESCキーが押されてからの待ち時間
set timeoutlen=300
" マウス対応
set mouse=a
set ttymouse=xterm2
" " コマンドを画面最下部に表示する
set showcmd

" プラグイン管理 Vim-Plug
call plug#begin('~/Dropbox/97_setting/.vim/plugged') 
Plug 'https://github.com/junegunn/vim-github-dashboard.git'
" Vim用統合インターフェース
Plug 'Shougo/unite.vim'
" ディレクトリ表示
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
" Clojureコーディング支援
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
" Go入力支援
Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' }
" 選択インターフェースfzh
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
" Vim非同期処理ライブラリ
Plug 'Shougo/vimproc.vim', { 'do': 'make' }
" コーディング中のプログラムをvimから起動
Plug 'thinca/vim-quickrun'
" JavaScript用プラグイン
Plug 'pangloss/vim-javascript'
" JavaScript Syntaxチェック
Plug 'jelera/vim-javascript-syntax'
" CoffeeScript用
Plug 'kchmck/vim-coffee-script'
" node.js用
Plug 'moll/vim-node'
" スニペット
Plug 'Shougo/neosnippet'
Plug 'Shougo/neosnippet-snippets'
Plug 'honza/vim-snippets'
" Markdownプラグイン
Plug 'plasticboy/vim-markdown'
" Rubyプラグイン
Plug 'vim-ruby/vim-ruby'
Plug 'kana/vim-textobj-user'
Plug 'rhysd/vim-textobj-ruby'
Plug 'tpope/vim-rails'
Plug 'tpope/vim-bundler'
" コメントアウトプラグイン
Plug 'tomtom/tcomment_vim'
" HTMLタグハイライト
Plug 'gregsexton/matchtag'
" PHPプラグイン
Plug 'stanangeloff/php.vim'
" ブラウザを開く
Plug 'tyru/open-browser.vim'
" Macのみブラウザをリロード
Plug 'tell-k/vim-browsereload-mac'
" Pythonプラグイン
Plug 'davidhalter/jedi-vim'
" Goプラグイン
Plug 'fatih/vim-go'
" JSONプラグイン
Plug 'leshill/vim-json'
" Angular.jsプラグイン
Plug 'burnettk/vim-angular'
" 入力補完
Plug 'shougo/neocomplete.vim'
" Scalaプラグイン
Plug 'derekwyatt/vim-scala'
" Swiftプラグイン
Plug 'keith/swift.vim'
" WordPressプラグイン
Plug 'dsawardekar/wordpress.vim'
" CSVプラグイン
Plug 'chrisbra/csv.vim'
" HTML5プラグイン
Plug 'othree/html5.vim'
" GitHubプラグイン
Plug 'junegunn/vim-github-dashboard'
Plug 'mattn/gist-vim'
" IDEプラグイン
Plug 'scrooloose/syntastic'
" 絵文字プラグイン
Plug 'junegunn/vim-emoji'
" 非同期にシェルを実行
Plug 'Shougo/vimshell'
" vimの文字列を別ペインに転送
Plug 'jpalardy/vim-slime'
" シンタックスチェック
Plug 'scrooloose/syntastic'
" Perlプラグイン
Plug 'hotchpotch/perldoc-vim'
Plug '9s/perlomni.vim'
" yankしているものを入れ替え
Plug 'kana/vim-operator-user'
Plug 'kana/vim-operator-replace'
" ソースコードを実行
Plug 'thinca/vim-quickrun'
" 接続サーバーを選択
Plug 'shougo/neossh.vim'
" ステータスライン・タブライン
Plug 'thinca/vim-ref'
" cs'" で'を"に置換 cs'<p>と打ち込むと、'文字列を<p>タグで囲む
Plug 'tpope/vim-surround'
" git操作
Plug 'tpope/vim-fugitive'
" R言語用プラグイン
Plug 'vim-scripts/Vim-R-plugin'
" Hive用プラグイン
Plug 'autowitch/hive.vim'
" インデントに色をつける
Plug 'nathanaelkane/vim-indent-guides'
" 末尾の空白対策
Plug 'bronson/vim-trailing-whitespace'
" PHP補完用
Plug 'violetyk/neocomplete-php.vim'
" はてなブログ投稿
Plug 'mattn/webapi-vim'
Plug 'moznion/hateblo.vim'
" Gmailプラグイン
Plug 'yuratomo/gmail.vim'
" Twitterプラグイン
Plug 'basyura/twibill.vim'
Plug 'basyura/TweetVim'
" Slackプラグイン
Plug 'heavenshell/vim-slack'
" Tumblrプラグイン
" Plug 'sonesuke/tumblr-vim'
call plug#end()
" filetype設定
filetype on
filetype plugin on
filetype indent on
" solarized設定
let g:solarized_termtrans=1
set linespace=4
let g:syntastic_enable_signs=1
let g:syntastic_auto_loc_list=2
"mru,reg,,buf設定
noremap :um :Unite file_mru -buffer-name=file_mru
noremap :ur :Unite register -buffer-name=register
noremap :ub :Unite buffer -buffer-name=buffer
nnoremap <C-u>m  :Unite file_mru<CR>
" NERDTree設定
" Ctrl+nでNERDTreeを表示
map <C-n> :NERDTreeToggle<CR>
" 隠しファイルをデフォルトで表示させる
let NERDTreeShowHidden = 1
" デフォルトでツリーを表示させる
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
" 拡張子のHighlight設定
 function! NERDTreeHighlightFile(extension, fg, bg, guifg, guibg)
 exec 'autocmd filetype nerdtree highlight ' . a:extension .' ctermbg='. a:bg .' ctermfg='. a:fg .' guibg='. a:guibg .' guifg='. a:guifg
 exec 'autocmd filetype nerdtree syn match ' . a:extension .' #^s+.*'. a:extension .'$#'
endfunction
call NERDTreeHighlightFile('py', 'yellow', 'none', 'yellow', '#151515')
call NERDTreeHighlightFile('md', 'blue', 'none', '#3366FF', '#151515')
call NERDTreeHighlightFile('yml', 'yellow', 'none', 'yellow', '#151515')
call NERDTreeHighlightFile('config', 'yellow', 'none', 'yellow', '#151515')
call NERDTreeHighlightFile('conf', 'yellow', 'none', 'yellow', '#151515')
call NERDTreeHighlightFile('json', 'yellow', 'none', 'yellow', '#151515')
call NERDTreeHighlightFile('html', 'yellow', 'none', 'yellow', '#151515')
call NERDTreeHighlightFile('styl', 'cyan', 'none', 'cyan', '#151515')
call NERDTreeHighlightFile('css', 'cyan', 'none', 'cyan', '#151515')
call NERDTreeHighlightFile('rb', 'Red', 'none', 'red', '#151515')
call NERDTreeHighlightFile('js', 'Red', 'none', '#ffa500', '#151515')
call NERDTreeHighlightFile('php', 'Magenta', 'none', '#ff00ff', '#151515')
" ディレクトリ表示記号を変更する
let g:NERDTreeDirArrows = 1
let g:NERDTreeDirArrowExpandable = '▶'
let g:NERDTreeDirArrowCollapsible = '▼'

" fzfランタイムパス
set rtp+=~/.fzf
" Vimからfzfを実行
nnoremap <silent> <Leader>C :call fzf#run({
     'source': map(split(globpath(&rtp, "colors/*.vim"), "n"),
             "substitute(fnamemodify(v:val, ':t'), '\..\{-}$', '', '')"),
     'sink': 'colo',
     'options': '+m',
     'left': 30
    })<CR>

" quickrunの非同期処理
let g:quickrun_config={'*': {'split': ''}}
let g:quickrun_config._={ 'runner':'vimproc',
       "runner/vimproc/updatetime" : 10,
       "outputter/buffer/close_on_empty" : 1,
 }

" node.js用設定
autocmd User Node if &filetype == "javascript" | setlocal expandtab | endif
autocmd User Node
   if &filetype == "javascript" |
     nmap <buffer> <C-w>f <Plug>NodeVSplitGotoFile |
     nmap <buffer> <C-w><C-f> <Plug>NodeVSplitGotoFile |
   endif


" スニペット用設定
let g:neosnippet#enable_snipmate_compatibility = 1
let g:neosnippet#snippets_directory='~/.vim/plugged/vim-snippets/snippets'

" Markdown表示
autocmd User BufNewFile,BufRead *.{md,mdwn,mkd,mkdn,mark*} set filetype=markdown

" Ruby設定
autocmd BufNewFile,BufRead *.jbuilder set filetype=ruby
autocmd BufNewFile,BufRead Guardfile  set filetype=ruby
autocmd BufNewFile,BufRead .pryrc     set filetype=ruby
autocmd FileType eruby exec 'set filetype=' . 'eruby.' . b:eruby_subtype
autocmd FileType ruby setl iskeyword+=?

 " ブラウザで開く
let g:netrw_nogx = 1 " disable netrw's gx mapping.
nmap gx <Plug>(openbrowser-smart-search)
vmap gx <Plug>(openbrowser-smart-search)

" go言語設定
au FileType go nmap <leader>r <Plug>(go-run)
au FileType go nmap <leader>b <Plug>(go-build)
au FileType go nmap <leader>t <Plug>(go-test)
au FileType go nmap <leader>c <Plug>(go-coverage)

" neocomplete設定
let g:acp_enableAtStartup = 0
let g:neocomplete#enable_at_startup = 1
let g:neocomplete#enable_smart_case = 1
let g:neocomplete#sources#syntax#min_keyword_length = 3
let g:neocomplete#lock_buffer_name_pattern = '*ku*'
let g:neocomplete#sources#dictionary#dictionaries = {
     'default' : '',
     'vimshell' : $HOME.'/.vimshell_hist',
     'scheme' : $HOME.'/.gosh_completions'
         }
if !exists('g:neocomplete#keyword_patterns')
    let g:neocomplete#keyword_patterns = {}
endif
let g:neocomplete#keyword_patterns['default'] = 'hw*'
inoremap <expr><C-g>     neocomplete#undo_completion()
inoremap <expr><C-l>     neocomplete#complete_common_string()
inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
function! s:my_cr_function()
  return (pumvisible() ? "<C-y>" : "" ) . "<CR>"
endfunction
inoremap <expr><TAB>  pumvisible() ? "<C-n>" : "<TAB>"
inoremap <expr><C-h> neocomplete#smart_close_popup()."<C-h>"
inoremap <expr><BS> neocomplete#smart_close_popup()."<C-h>"
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
if !exists('g:neocomplete#sources#omni#input_patterns')
  let g:neocomplete#sources#omni#input_patterns = {}
endif
let g:neocomplete#sources#omni#input_patterns.perl = 'hw*->hw*|hw*::'
" syntastic設定
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
" 絵文字設定
silent! if emoji#available()
  let g:gitgutter_sign_added = emoji#for('small_blue_diamond')
  let g:gitgutter_sign_modified = emoji#for('small_orange_diamond')
  let g:gitgutter_sign_removed = emoji#for('small_red_triangle')
  let g:gitgutter_sign_modified_removed = emoji#for('collision')
endif
" vimshell設定
" ,sh: シェルを起動
nnoremap <silent> ,sh :VimShell<CR>
" ,spy: pythonを非同期で起動
nnoremap <silent> ,spy :VimShellInteractive python<CR>
" ,irb: irbを非同期で起動
nnoremap <silent> ,irb :VimShellInteractive irb<CR>
" ,ss: 非同期で開いたインタプリタに現在の行を評価させる
vmap <silent> ,ss :VimShellSendString<CR>
" 選択中に,ss: 非同期で開いたインタプリタに選択行を評価させる
nnoremap <silent> ,ss <S-v>:VimShellSendString<CR>
" grep検索の実行後にQuickFix Listを表示する
autocmd QuickFixCmdPost *grep* cwindow
" w!! でスーパーユーザーとして保存(sudoが使える環境限定)
cmap w!! w !sudo tee > /dev/null %
" 入力モード中に素早くJJと入力した場合はESCとみなす
inoremap jj <Esc>
" ESCを二回押すことでハイライトを消す
nmap <silent> <Esc><Esc> :nohlsearch<CR>
" カーソル下の単語を * で検索
vnoremap <silent> * "vy/V<C-r>=substitute(escape(@v, '/'), "n", '\n', 'g')<CR><CR>
" 検索後にジャンプした際に検索単語を画面中央に持ってくる
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; %
" Ctrl + hjkl でウィンドウ間を移動
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
" Shift + 矢印でウィンドウサイズを変更
nnoremap <S-Left>  <C-w><<CR>
nnoremap <S-Right> <C-w><CR>
nnoremap <S-Up>    <C-w>-<CR>
nnoremap <S-Down>  <C-w>+<CR>
" T + ? で各種設定をトグル
nnoremap [toggle] <Nop>
nmap T [toggle]
nnoremap <silent> [toggle]s :setl spell!<CR>:setl spell?<CR>
nnoremap <silent> [toggle]l :setl list!<CR>:setl list?<CR>
nnoremap <silent> [toggle]t :setl expandtab!<CR>:setl expandtab?<CR>
nnoremap <silent> [toggle]w :setl wrap!<CR>:setl wrap?<CR>
colorscheme solarized
" :e などでファイルを開く際にフォルダが存在しない場合は自動作成
function! s:mkdir(dir, force)
  if !isdirectory(a:dir) && (a:force ||
         input(printf('"%s" does not exist. Create? [y/N]', a:dir)) =~? '^y%[es]$')
    call mkdir(iconv(a:dir, &encoding, &termencoding), 'p')
  endif
endfunction
" vim 起動時のみカレントディレクトリを開いたファイルの親ディレクトリに指定
function! s:ChangeCurrentDir(directory, bang)
    if a:directory == ''
        lcd %:p:h
    else
        execute 'lcd' . a:directory
    endif
    if a:bang == ''
        pwd
    endif
endfunction
" ~/.vimrc.localが存在する場合のみ設定を読み込む
let s:local_vimrc = expand('~/.vimrc.local')
if filereadable(s:local_vimrc)
    execute 'source ' . s:local_vimrc
endif
" /{pattern}の入力中は「/」をタイプすると自動で「/」が、
" ?{pattern}の入力中は「?」をタイプすると自動で「?」が 入力されるようになる
cnoremap <expr> / getcmdtype() == '/' ? '/' : '/'
cnoremap <expr> ? getcmdtype() == '?' ? '?' : '?'
"表示行単位で行移動する
nnoremap <silent> j gj
nnoremap <silent> k gk
"インサートモードでも移動
inoremap <c-d> <delete>
inoremap <c-j> <down>
inoremap <c-k> <up>
inoremap <c-h> <left>
inoremap <c-l> <right>
"画面切り替え
nnoremap <c-j> <c-w>j
nnoremap <c-k> <c-w>k
nnoremap <c-l> <c-w>l
nnoremap <c-h> <c-w>h
"<space>j, <space>kで画面送り
noremap [Prefix]j <c-f><cr><cr>
noremap [Prefix]k <c-b><cr><cr>

" PHP用設定
" :makeでPHP構文チェック
au FileType php setlocal makeprg=php -l %
au FileType php setlocal errorformat=%m in %f on line %l
" PHPの関数やクラスの折りたたみ
let php_folding = 0
" 文字列の中のSQLをハイライト
let php_sql_query = 1
" Baselibメソッドのハイライト
let php_baselib = 1
" HTMLもハイライト
let php_htmlInStrings = 1
" <? を無効にする→ハイライト除外にする
let php_noShortTags = 1
" ] や ) の対応エラーをハイライト
let php_parent_error_close = 1
let php_parent_error_open = 1

" SQLのPHP文字リテラルへの整形(:Sqltop, :Sqlfromp)
function! SQLToPHP()
%s/^(.+)$/"1 " ./g

normal G$
execute "normal ?.&lt;CR&gt;"
normal xxggVG
echo "Convert to PHP String is finished."
endfunction
command! Sqltop :call SQLToPHP()
function! SQLFromPHP()
%s/^"(.+) " *.*$/1/g

normal ggVG
echo "Convert from PHP String is finished."
endfunction
command! Sqlfromp :call SQLFromPHP()

" ハイライト色設定
highlight Pmenu ctermbg=4
highlight PmenuSel ctermbg=1
highlight PMenuSbar ctermbg=4
" sable AutoComplPop.
let g:acp_enableAtStartup = 0
" Use neocomplete.
let g:neocomplete#enable_at_startup = 1
" Use smartcase.
let g:neocomplete#enable_smart_case = 1
" Set minimum syntax keyword length.
let g:neocomplete#sources#syntax#min_keyword_length = 3
let g:neocomplete#lock_buffer_name_pattern = '*ku*'

" ディレクトリ定義
let g:neocomplete#sources#dictionary#dictionaries = {
     'default' : '',
     'vimshell' : $HOME.'/.vimshell_hist',
     'scheme' : $HOME.'/.gosh_completions'
         }

" キーワード定義
if !exists('g:neocomplete#keyword_patterns')
    let g:neocomplete#keyword_patterns = {}
endif
let g:neocomplete#keyword_patterns['default'] = 'hw*'

" Plugin key-mappings.
inoremap <expr><C-g>     neocomplete#undo_completion()
inoremap <expr><C-l>     neocomplete#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 (pumvisible() ? "<C-y>" : "" ) . "<CR>"
  " For no inserting <CR> key.
  "return pumvisible() ? "<C-y>" : "<CR>"
endfunction
" <TAB>: completion.
inoremap <expr><TAB>  pumvisible() ? "<C-n>" : "<TAB>"
" <C-h>, <BS>: close popup and delete backword char.
inoremap <expr><C-h> neocomplete#smart_close_popup()."<C-h>"
inoremap <expr><BS> neocomplete#smart_close_popup()."<C-h>"


" Shell like behavior
set completeopt=menu,preview

" 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
if !exists('g:neocomplete#sources#omni#input_patterns')
  let g:neocomplete#sources#omni#input_patterns = {}
endif
" Perl用設定
let g:neocomplete#sources#omni#input_patterns.perl = 'hw*->hw*|hw*::'
autocmd BufNewFile,BufRead *.psgi   set filetype=perl
autocmd BufNewFile,BufRead *.t      set filetype=perl
" Enable snipMate compatibility feature.↲
let g:neosnippet#enable_snipmate_compatibility = 1
imap <C-k>     <Plug>(neosnippet_expand_or_jump)
smap <C-k>     <Plug>(neosnippet_expand_or_jump)
xmap <C-k>     <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
" Tell Neosnippet about the other snippets
let g:neosnippet#snippets_directory='~/.vim/snippets/snippets'
" Define dictionary.
let g:neocomplcache_dictionary_filetype_lists = { 'default'    : '', 'perl'       : $HOME . '/.vim/dict/perl.dict' }

" Java用設定
"SQLのJava文字リテラルへの整形(:Sqltoj, :Sqlfromj)
function! SQLToJava()
%s/^(.+)$/"1 " +/g

normal G$
execute "normal ?+&lt;CR&gt;"
normal xxggVG
echo "Convert to Java String is finished."
endfunction
command! Sqltoj :call SQLToJava()
function! SQLFromJava()
%s/^"(.+) " *+*$/1/g

normal ggVG
echo "Convert from Java String is finished."
endfunction
command! Sqlfromj :call SQLFromJava()

" Ruby用設定
" :makeでRuby構文チェック
au FileType ruby setlocal makeprg=ruby -c %
au FileType ruby setlocal errorformat=%m in %f on line %l

" Scala設定
augroup filetypedetect
autocmd! BufNewFile,BufRead *.scala setfiletype scala
autocmd! BufNewFile,BufRead *.sbt setfiletype scala
augroup END


" Hive設定
au BufNewFile,BufRead *.hql set filetype=hive expandtab
au BufNewFile,BufRead *.q set filetype=hive expandtab

" 行末、行の最初への移動のキーマップ設定
:map! <C-e> <Esc>$a
:map! <C-a> <Esc>^a
:map <C-e> <Esc>$a
:map <C-a> <Esc>^a

" Ctrl+dで$、Ctrl+aで@
inoremap <C-d> $
inoremap <C-a> @

"  + rでスクリプト実行
nmap <Leader>r <plug>(quickrun)

" 全角スペースのハイライトを設定
function! ZenkakuSpace()
  highlight ZenkakuSpace cterm=underline ctermfg=darkgrey gui=underline guifg=darkgrey
endfunction
if has('syntax')
  augroup ZenkakuSpace
    autocmd!
    " ZenkakuSpaceをカラーファイルで設定するなら次の行は削除
    autocmd ColorScheme       * call ZenkakuSpace()
    " 全角スペースのハイライト指定
    autocmd VimEnter,WinEnter * match ZenkakuSpace / /
  augroup END
  call ZenkakuSpace()
endif


"vim-refでalcを使う設定
let g:ref_source_webdict_cmd = 'lynx -dump -nonumbers %s'
let g:ref_source_webdict_use_cache = 1
let g:ref_source_webdict_sites = {
             'alc' : {
               'url' : 'http://eow.alc.co.jp/%s/UTF-8/'
               }
             }
function! g:ref_source_webdict_sites.alc.filter(output)
      return join(split(a:output, "n")[42 :], "n")
endfunction

" はてなブログ投稿設定
let g:hateblo_vim = {
     'user':         'opensuse',
     'api_key':      '************',
     'api_endpoint': 'https://blog.hatena.ne.jp/opensuse/opensuse.hatenablog.com/atom',
     'WYSIWYG_mode': 0,
     'always_yes':   0,
     'edit_command': 'edit'
 }

" Gmail設定
let g:gmail_imap = 'imap.gmail.com:993'
let g:gmail_smtp = 'smtp.gmail.com:465'
let g:gmail_user_name = ***@*****.co.jp

現在の.zshrc

いま現在の .zshrc はこんな感じ。

source ~/.zplug/zplug

# 「ユーザ名/リポジトリ名」で記述し、ダブルクォートで見やすく括る(括らなくてもいい)

# junegunn/dotfiles にある bin の中の vimcat をコマンドとして管理する
zplug "junegunn/dotfiles", as:command, of:bin/vimcat

# tcnksm/docker-alias にある zshrc をプラグインとして管理する
# as: のデフォルトは plugin なので省力もできる
zplug "tcnksm/docker-alias", of:zshrc, as:plugin

# frozen: を指定すると全体アップデートのときアップデートしなくなる(デフォルトは0)
zplug "k4rthik/git-cal", as:command, frozen:1



zplug 'yonchu/zsh-vcs-prompt'
zplug 'pasberth/promptway'
zplug 'knu/z'
zplug 'm4i/cdd'
zplug 'pasberth/slipd'
zplug 'zsh-users/zsh-completions'
zplug 'yonchu/grunt-zsh-completion'
# zplug 'nakamuray/zaw'
# zplug 'syohex/zaw-git-directories'
# zplug 'yonchu/zaw-src-git-log'
# zplug 'yonchu/zaw-src-git-show-branch'




# from: で特殊ケースを扱える
# gh-r を指定すると GitHub Releases から取ってくる
# of: で amd64 とかするとそれを持ってくる(指定しないかぎりOSにあったものを自動で選ぶ)
# コマンド化するときに file: でリネームできる(この例では fzf-bin を fzf にしてる)
zplug "junegunn/fzf-bin", 
    as:command, 
    from:gh-r, 
    file:fzf

# from: では gh-r の他に oh-my-zsh と gist が使える
# oh-my-zsh を指定すると oh-my-zsh のリポジトリにある plugin/ 以下を
# コマンド/プラグインとして管理することができる
zplug "plugins/git", from:oh-my-zsh

# ビルド用 hook になっていて、この例ではクローン成功時に make install する
# シェルコマンドなら何でも受け付けるので "echo OK" などでも可
zplug "tj/n", do:"make install"

# ブランチロック・リビジョンロック
# at: はブランチとタグをサポートしている
zplug "b4b4r07/enhancd", at:v1
zplug "mollifier/anyframe", commit:4c23cb60


# from: では gist を指定することができる
# gist のときもリポジトリと同様にタグを使うことができる
zplug "b4b4r07/79ee61f7c140c63d2786", 
    from:gist, 
    as:command, 
    of:get_last_pane_path.sh

# パイプで依存関係を表現できる
# 依存関係はパイプの流れのまま
# この例では emoji-cli は jq に依存する
zplug "stedolan/jq", 
    as:command, 
    file:jq, 
    from:gh-r 
    | zplug "b4b4r07/emoji-cli"

# check コマンドで未インストール項目があるかどうか verbose にチェックし
# false のとき(つまり未インストール項目がある)y/N プロンプトで
# インストールする
if ! zplug check --verbose; then
    printf "Install? [y/N]: "
    if read -q; then
        echo; zplug install
    fi
fi

# プラグインを読み込み、コマンドにパスを通す
zplug load --verbose

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

# ドット無しでもドッtファイルにマッチ
setopt globdots
# 補完時にヒストリを自動的に展開する。
setopt hist_expand
# カッコの対応などを自動的に補完する↲
setopt magic_equal_subst


# KEYBIND
bindkey -v
# ${fg[...]} や $reset_color をロード
autoload -U colors; colors
# プロンプトが表示されるたびにプロンプト文字列を評価、置換する
setopt prompt_subst
# 入力が右端まで来たらRPROMPTを消す
setopt transient_rprompt

# HISTORY
HISTFILE=~/.zsh_history
HISTSIZE=1000000
SAVEHIST=1000000
# story (fc -l) コマンドをヒストリリストから取り除く。
setopt hist_no_store
## すぐにヒストリファイルに追記する。
setopt inc_append_history
## 直前と同じコマンドをヒストリに追加しない
setopt hist_ignore_dups
## zsh の開始, 終了時刻をヒストリファイルに書き込む
setopt extended_history
## ヒストリを呼び出してから実行する間に一旦編集
setopt hist_verify
## ヒストリを共有
setopt share_history
## コマンドラインの先頭がスペースで始まる場合ヒストリに追加しない
setopt hist_ignore_space
## 補完候補を一覧表示
setopt auto_list
## TAB で順に補完候補を切り替える
setopt auto_menu
## 補完候補一覧でファイルの種別をマーク表示
setopt list_types
## カッコの対応などを自動的に補完
setopt auto_param_keys
## ディレクトリ名の補完で末尾の / を自動的に付加し、次の補完に備える
setopt auto_param_slash
## 補完候補のカーソル選択を有効に
zstyle ':completion:*:default' menu select=1
## 補完候補を詰めて表示
setopt list_packed
## スペルチェック
setopt correct
## ファイル名の展開でディレクトリにマッチした場合末尾に / を付加する
setopt mark_dirs
## 最後のスラッシュを自動的に削除しない
setopt noautoremoveslash
# 未分類
## コアダンプサイズを制限
limit coredumpsize 102400
## 出力の文字列末尾に改行コードが無い場合でも表示
unsetopt promptcr
## ビープを鳴らさない
setopt nobeep
## 内部コマンド jobs の出力をデフォルトで jobs -l にする
setopt long_list_jobs
## サスペンド中のプロセスと同じコマンド名を実行した場合はリジューム
setopt auto_resume
## cd 時に自動で push
setopt auto_pushd
## 同じディレクトリを pushd しない
setopt pushd_ignore_dups
## ファイル名で #, ~, ^ の 3 文字を正規表現として扱う
setopt extended_glob
## =command を command のパス名に展開する
setopt equals
## --prefix=/usr などの = 以降も補完
setopt magic_equal_subst
## ファイル名の展開で辞書順ではなく数値的にソート
setopt numeric_glob_sort
## 出力時8ビットを通す
setopt print_eight_bit
## ディレクトリ名だけで cd
setopt auto_cd
## {a-c} を a b c に展開する機能を使えるようにする
setopt brace_ccl
# PAGER
if type lv > /dev/null 2>&1; then
## lvを優先する。
export PAGER="lv"
else
## lvがなかったらlessを使う。
export PAGER="less"
fi

if [ "$PAGER" = "lv" ]; then
## -c: ANSIエスケープシーケンスの色付けなどを有効にする。
## -l: 1行が長くと折り返されていても1行として扱う。
## (コピーしたときに余計な改行を入れない。)
export LV="-c -l"
else
## lvがなくてもlvでページャーを起動する。
alias lv="$PAGER"
fi

# global aliases
alias -g T="| tee"
alias -g G="| grep"
alias -g L="|& $PAGER"
alias -g WC="| wc"
alias -g LC="| wc -l"
alias -g Z="| tail"

# 以下は.bashrcと共用

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'

alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias ls='ls -alh --color'
alias vi='vim'
alias vim='vim'

# my aliases
alias lt='ls -AltrF'
alias hi='history 1'
alias r=rails
alias g=git
alias rre="rbenv rehash"
alias be="bundle exec"

# jokey git alias
alias gtat='git status'
alias gdiff='git diff'
alias glog='git log'
alias gshow='git show'
alias gadd='git add *'
alias gcomi='git commit'
alias gcomm='git commit -m '
alias gbrah='git branch'
alias gcheo='git checkout'
alias gpull='git pull'

# Load RVM into a shell session *as a function*
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

# retter settings
export EDITOR=vim
export RETTER_HOME=`pwd`/my_letter

# peco + ghq連携
peco-src() {
    local selected
    selected="$(ghq list --full-path | peco --query="$READLINE_LINE")"
    if [ -n "$selected" ]; then
        READLINE_LINE="builtin cd $selected"
        READLINE_POINT=${#READLINE_LINE}
    fi
}

# Ctrl + rでコマンド履歴を出して絞り込み
setopt hist_ignore_all_dups

function peco_select_history() {
  local tac
  if which tac > /dev/null; then
    tac="tac"
  else
    tac="tail -r"
  fi
  BUFFER=$(fc -l -n 1 | eval $tac | peco --query "$LBUFFER")
  CURSOR=$#BUFFER
  zle clear-screen
}
zle -N peco_select_history
bindkey '^r' peco_select_history

# Ctrl + ]でghqでクローンしてきたレポジトリへの移動
function peco-src () {
  local selected_dir=$(ghq list -p | peco --query "$LBUFFER")
  if [ -n "$selected_dir" ]; then
    BUFFER="cd ${selected_dir}"
    zle accept-line
  fi
  zle clear-screen
}
zle -N peco-src
bindkey '^]' peco-src

 fe() {
  local file
  file=$(fzf --query="$1" --select-1 --exit-0)
  [ -n "$file" ] && ${EDITOR:-vim} "$file"
}

# fd - cd to selected directory
fd() {
  local dir
  dir=$(find ${1:-*} -path '*/.*' -prune 
                  -o -type d -print 2> /dev/null | fzf +m) &&
  cd "$dir"
}

# fh - repeat history
fh() {
  eval $(([ -n "$ZSH_NAME" ] && fc -l 1 || history) | fzf +s | sed 's/ *[0-9]* *//')
}

# fkill - kill process
fkill() {
  ps -ef | sed 1d | fzf -m | awk '{print $2}' | xargs kill -${1:-9}
}


function do_enter() {
    if [ -n "$BUFFER" ]; then
        zle accept-line
        return 0
    fi
    echo
    ls -alGt
    # ↓おすすめ
    # ls_abbrev
    if [ "$(git rev-parse --is-inside-work-tree 2> /dev/null)" = 'true' ]; then
        echo
        echo -e "e[0;33m--- git status ---e[0m"
        git status -sb
    fi
    zle reset-prompt
    return 0
}
zle -N do_enter
bindkey '^m' do_enter
export GOPATH=$HOME/.golang
export GOROOT=$( go env GOROOT )
export PATH=$GOPATH/bin:$PATH:/usr/local/bin:/usr/bin

現在のHomeBrew設定

Macパッケージ管理にHomeBrewを使っているので、これもを10月下旬の新型Mac発売前に整理したいと思っています。

さすがにbrew cask installでのGUIアプリの構成管理はバージョンが古すぎるものが多いので今はやっていないですが。

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew install ruby
brew install rbenv
brew install ruby-build
brew install coreutils
brew tap sanemat/font
brew install ricky
brew install --vim-powerline ricty
brew install nkf
brew install editorconfig
brew install tig
brew install tree
brew install imagemagick
brew install font forge
brew install ghq
brew install lua
brew install vim --with-lua
brew install peco
brew install brew-cask
brew install git
brew install hg
brew install ag
brew install gist
brew install gibo
brew install hub
brew install pyenv
brew install perl
brew install tmux
brew install wemux
brew install tree
brew install openssl
brew install readline
brew install cmake
brew install fish
brew install zsh
brew install wget
brew install curl
brew install cmake
brew install libtool
brew install automake
brew install nmap
brew install svn
brew install gcc
brew install fontforge
brew install phantomjs
brew install llvm
brew install jq
brew install go
brew install plenv perl-build
brew install cpanminus
brew install clisp
brew install python3
brew install erlang
brew install leiningen
brew install clojurescript
brew install ruby-build  
brew install rbenv
brew install heroku-toolbelt
brew install opam
brew install scala
brew install sbt
brew install dmd
brew install dub
brew install plt-racket
brew install haskell-platform
brew install cpanminus
brew install wget
brew install docker
brew install ansible
brew install nginx
brew install mariadb
brew install sqlite
brew install mongodb
brew install memcached
brew install elasticsearch
brew install cmake
brew install nap
brew install emacs
brew install elixir
brew tap mcuadros/homebrew-hhvm
brew install hhvm

どこからスリム化していこう…(^_^;)