Vim
Zsh
Terminal
開発環境

こんにちは。
締め切り15分前に書き始める系エンジニアのぐりです。

この記事は呉高専エンジニア勉強会 Advent Calendar 2017の11日目の記事です。
昨日の記事はether0x2caさんの学術論文のすゝめでした。
論文の種類、公開されているサイトとその紹介が書かれていて、論文読んでみようかなって思う記事でした。
Slackグループ作ったら是非参加したいですね。

さて、この記事は僕の.zshrc.vimrcのお話です。
それぞれのイチオシの設定とプラグインを紹介していきます。

.zshrc

oh-my-zsh

# Path to your oh-my-zsh installation.
export ZSH=/Users/username/.oh-my-zsh

zshの設定の管理にはoh-my-zshを使ってます。
あんまり使いこなしてはないので特にここがいいとは言えません。
お好みで導入して下しあ。

Powerlevel9k

ZSH_THEME="powerlevel9k/powerlevel9k"
POWERLEVEL9K_MODE='nerdfont-complete'

POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(time dir vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=()
POWERLEVEL9K_DISABLE_RPROMPT=true

POWERLEVEL9K_TIME_FORMAT="%D{%m\/%d %H:%M}"
POWERLEVEL9K_TIME_FOREGROUND='white'
POWERLEVEL9K_TIME_BACKGROUND='background'

POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
POWERLEVEL9K_RPROMPT_ON_NEWLINE=false
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=""
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="\u25B8 "

POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR=''
POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR=''

見た目をちょっとイケてる感じにするのはpowerlevel9k
インストールが若干めんどくさいのが玉に瑕ですが、公式のドキュメントが充実してるのでつまずくことはないと思います。
みんなの作例がまとめてあるのでそれを見るのも面白です。
ちなみに僕のはこんな感じです。色々試しましたが、結局シンプルなのに落ち着きました。
Screen Shot 2017-12-11 at 1.49.23.png
lsがきれいになってるのはcolorlsのおかげです。若干表示されるまで時間がかかりますがおすすめです。

alias

alias v="nvim"
alias g="git" 
alias gp="g push"
alias ls="colorls -a -sd"
alias vz="v ~/.zshrc"
alias n="nim c -r"
alias soen="source ./env.sh"
alias sozh="source /Users/username/.zshrc"
alias be="bundle exec"
alias rub="rubocop"
alias ruba="rubocop --auto-correct"
alias rid="rails ridgepole:dry"
alias rida="rails ridgepole:apply"
alias r="rails"

お次はエイリアス。
よく使うものは最初の一文字でエイリアスをかけてます。

.vimrc

dein

" dein settings {{{
" dein自体の自動インストール
let s:cache_home = empty($XDG_CACHE_HOME) ? expand('~/.cache') : $XDG_CACHE_HOME
let s:dein_dir = s:cache_home . '/dein'
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
if !isdirectory(s:dein_repo_dir)
  call system('git clone https://github.com/Shougo/dein.vim ' . shellescape(s:dein_repo_dir))
endif
let &runtimepath = s:dein_repo_dir .",". &runtimepath
" プラグイン読み込み&キャッシュ作成
let s:toml_file = '~/.dein.toml'
let s:lazy_toml_file = '~/.dein_lazy.toml'
if dein#load_state(s:dein_dir)
  call dein#begin(s:dein_dir)
  call dein#load_toml(s:toml_file)
  call dein#load_toml(s:lazy_toml_file, {'lazy': 1})
  call dein#end()
  call dein#save_state()
endif
" 不足プラグインの自動インストール
if has('vim_starting') && dein#check_install()
  call dein#install()
endif

暗黒の力を与えられしプラグインマネージャー
その名もdein.vim

以下を参考(コピペ)にして設定しました。
別ファイルに読み込むプラグインをまとめて書いてます。
dein.vimによるプラグイン管理のマイベストプラクティス
NeoBundle から dein.vim に乗り換えたら爆速だった話

syntastic

" syntastic_mode_mapをactiveにするとバッファ保存時にsyntasticが走る
" active_filetypesに、保存時にsyntasticを走らせるファイルタイプを指定する
let g:syntastic_mode_map = { 'mode': 'passive', 'active_filetypes': ['ruby'] }
let g:syntastic_ruby_checkers = ['rubocop']

rubyのスタイルガイドであるrubocopを、保存時に走らせる用に設定しました。
非同期なのでaleの方が良さげです。
参考
Rubocopをsyntasticを使ってVimから自動実行する

emmet-vmi

let g:user_emmet_settings = {
      \  'lang' : 'ja'
      \}

HTMLが爆速でかけるemmetのvim用プラグイン
emmet-vim

vim-easymotion

let g:EasyMotion_do_mapping = 0 "Disable default mappings
nmap <Leader>s <Plug>(easymotion-overwin-f2)

画面内の移動がめちゃくちゃ早くなるめちゃくちゃオススメなプラグイン
vim-easymotion。おすすめです。

NERDTree

map <C-n> :NERDTreeToggle<CR>
let NERDTreeShowHidden=1

皆さんご存知NERDTree
まあこれの紹介はいいでしょう。

カラースキーマ

" set color scheme
let g:hybrid_custom_term_colors = 1

目に優しい感じのカラースキーマ
Screen Shot 2017-12-11 at 1.48.06.png

キーバインド

inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-h> <Left>
inoremap <C-l> <Right>
inoremap <C-f> <Delete>
inoremap <C-d> <BS>
inoremap <C-e> <C-o>$
inoremap <C-a> <C-o><C-0>
nnoremap <SPACE> <Nop>
map <SPACE> <leader>
nnoremap <C-s> :%s/
nnoremap j gj
nnoremap k gk
nnoremap gj j
nnoremap gk k
nnoremap s <Nop>
nnoremap sj <C-w>j
nnoremap sk <C-w>k
nnoremap sl <C-w>l
nnoremap sh <C-w>h
nnoremap ; :
nnoremap : ;
nnoremap <S-h> <C-0>
nnoremap <S-l> $
nnoremap <CR> A<CR><ESC>
nnoremap == gg=G
nnoremap <Leader>w :w<CR>
nnoremap <Leader>q :wq<CR>

インサートモードでも移動や削除ができるようにしてたり、ペイン間の移動を楽にしてたりしてます。
個人的に一番役に立ったのはこれです。

nnoremap ; :
nnoremap : ;

よく使う:をシフトキー無しで押せるようになってます。

以上です。
最後に全コード貼っておきますね。
.zshrc
.vimrc