iTerm2 + zsh + tmux + vim で快適な256色ターミナル環境を構築する
こんにちわ。債務者ことゆろよろです。家買いました。
さて、最近こんなまとめが話題になりました。自分もコメントしましたが、すごい情報量になってます。
これ知らないプログラマって損してんなって思う汎用的なツール #JavaScript #PHP #Ruby #Python #HTML - Qiita
【まとめ】これ知らないプログラマって損してんなって思う汎用的なツール 100超 #PHP #JavaScript #Python #Ruby #HTML - Qiita
で、自分のコメントにも書いたのだけど、基本的に仕事はターミナルでssh接続して、Vimでコード書いてるので、この辺の環境構築についてまとめてみた。最近Terminal.appからiTerm2に移行して、screenからtmuxに乗り換えたので、その辺も含めて導入方法を書いておく。
手元の端末はMBPでOSX Lionだけど、ほぼ同じ設定でUbuntu11.10/CentOS5.6/Sientific-Linux6.2で使い回してる。
手っ取り早く設定するには
この記事にある手順で、Vimの導入まで進めます。設定ファイルは、以下のように$HOMEに、自分が公開してるdotfilesをcloneして、setup.shを叩けばよいです。
git clone https://github.com/yuroyoro/dotfiles.git cd dotfiles ./setup.sh
setup.shでは、各設定ファイルへのシンボリックリンクを生成するのですが、すでにファイルが存在する場合はlnコマンドが失敗するので、その場合は適宜対処してください。
tmuxとmac osxのクリップボード連携を行うために、 reattach-to-user-namespaceコマンドを導入します。
git clone https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard.git cd tmux-MacOSX-pasteboard make reattach-to-user-namespace && cp reattach-to-user-namespace ~/bin
Vimを使うには、もう少し設定が必要です。
まず、~/.vim/bundleディレクトリを作成し、そこにvubdle.vimをcloneします。
cd ~/.vim mkdir bundle cd bundle git clone https://github.com/gmarik/vundle.git
次に、vimコマンドででvimを起動します。最初はエラーが出ますが無視してください。で、":"を押してコマンドモードに入り、BundleInstallを実行します。
すると、利用するプラグインがダウンロードされます。
最後に、vim-procをmakeします。
cd ~/.vim/bundle/vimproc/ make -f make_mac.mak
vim-powerlineを使うので、フォントにパッチを当てないとステータスラインがちゃんと表示されません。フォントにパッチ当てるの面倒だったりするなら、
.vimrc.statuslineにある以下の行をコメントアウトしてください。
" vim-powerlineでフォントにパッチを当てないなら以下をコメントアウト let g:Powerline_symbols = 'fancy'
では、各ツールの導入手順・使い方など。
iTerm2の導入
ターミナルは一番長い時間使う、もっとも重要なソフトウェアです。今まではTerminal.appでしたが、vim-poewlineがiTerm2じゃないと動かないので移行しました。
まずはiTerm2をダウンロー丼してインスコしてください。
iTerm2 - Mac OS Terminal Replacement
設定などはそんなにいじってないけど、基本はウィンドウを5枚くらいあげていて、タブとか使わないし存在意義もよくわからないので、cmd + 数字キーでウィンドウを切り替えられるようにした。
あと、設定したフォントによっては、vimのステータスラインが再描画されなかったりするので、'Treat ambigous-width characters as double width'のチェックを外した。
homebrew
パッケージ管理にはhomebrewを使います。macportsとかなにそれ?
Homebrew — MacPorts driving you to drink? Try Homebrew!
インスコは、ここに書いてあるとおり、以下のコマンドで。あ、XCode入れておいてね。
mkdir homebrew && curl -L https://github.com/mxcl/homebrew/tarball/master | tar xz --strip 1 -C homebrew
インスコが終わったら、とりあえず必要そうなアレをbrewで入れます。適当に列挙してありますので、必要に応じて。最低限、zsh git tmux tig ctags curl readline coreuilts proctools wget くらいは入れておきましょう。
brew install binutils cmake coreutils ctags curl gdbm gettext git glib imagemagick irssi jpeg libevent libffi libiconv libpng libtiff lv lynx ncftp neon nkf nmap parallel pcre pcre++ pip pkg-config potrace proctools readline tig tmux tree w3m wget zsh
zsh
もはやzshなしでは生きられない体になってしまってるので、zsh入れます。
【コラム】漢のzsh (1) 最強のシェル、それは「zsh」 | エンタープライズ | マイナビニュース
macだったら'brew install zsh'で入ります。設定などはgithubを見てください。わりとコメントも書いてあるので見れば分かるはず。
dotfiles/.zshrc at master · yuroyoro/dotfiles · GitHub
.zshrcは、本体の他に、oxs固有の設定を行う.zshrc.osxとlinuxで使う.zshrc.linuxに別れてます。あと、alias関係は.zshrc.aliasにまとめてあります。
zshを使っている一番の理由は、なんと言っても強力なコマンドライン補完です。例えば、以下の用に'vim zsh'まで入力してTABを押すと、一致するファイル名を補完してくれますし。
C-p, C-nでヒストリから途中まで入力したコマンドに一致するモノを検索してくれたり、gitのサブコマンドも補完してくれたりで、もう手放せません。
git
dotfilesもgithubで管理してるし、もはやgitが無いと何もできませんわ。'brew install git'で入ってるはず。
設定に関しては、.gitconfigと.gitignoreを見てください。
dotfiles/.gitconfig at master · yuroyoro/dotfiles · GitHub
dotfiles/.gitignore at master · yuroyoro/dotfiles · GitHub
あと、前にこんなエントリも書いたので参考までに。
.gitconfigに設定してるaliasなどのまとめ - ゆろよろ日記
git-now
git nowは、tempコマンドのための独自サブコマンドで、このgit nowで細かくコミットして、git rebase -iでコミットをまとめる、というスタイルで開発してます。
tmp コミットのための独自サブコマンド git-now - アジャイルSEを目指すブログ
'brew install https://github.com/iwata/git-now/raw/master/git-now.rb'で入ります。
tig
tigはコマンドラインから利用できるgit brwoserです。なんとなくログを見るのに便利です。
コンソールから使える git ブラウザ、tig が超便利 - #生存戦略 、それは - subtech
Tig(text-mode interface for git)を使う | Kwappa研究開発室
tigに関しては、ひとつ重要な設定があります。デフォルトのtigのkey-bindでは、'G'でgit gcが走ってしまって色々と取り返しがつかないことになるので、.gitconfigに以下の用に設定しておきます。
[tig "bind"] generic = g move-first-line generic = G move-last-line
tmux
ターミナルマルチプレクサtmuxです。今まではscreenを利用していたのですが、色々あって移行しました。
tmuxを使う一番の利点は、ssh接続がネットワークの不調で切れてしまったり、間違ってCmd+wを押してウィンドウを閉じてしまっても、元の作業状態にすぐに復元できる点です。なので、sshでサーバに入ってコード書くときも、macでコード書くときも必ずtmuxを使ってます。
.tmux.confをごにょごにょする - mizchi log
tmuxも、'brew install tmux'で入ります。で、設定ファイルは"~/.tmux.conf"です。
dotfiles/.tmux.conf at master · yuroyoro/dotfiles · GitHub
tmuxは、tmuxコマンドで起動します。
tmuxのデフォルトは緑生い茂るステータスバーですが、自分は青ベースに設定しました。
プレフィックスキーをtに設定しています。その他のキーバインドもほぼscreen互換になるように設定してます。なので、&tl;Ctrl-t>の後にcで新しいウィンドウを生成、<Ctrl-c><Space>で次のウィンドウへ、<Ctrl-c><BS>で前のウィンドウへ移動します。
tmuxのキーバインド(プレフィックスキー:t)は、このような設定しました。
キーバインド | コマンド |
---|---|
C-t ? | ショートカットキーのリストを表示 |
C-t c | 新しいウィンドウを作成 |
C-t n | 次のウィンドウへ移動 |
C-t SPACE | 次のウィンドウへ移動 |
C-t p | 前のウィンドウへ移動 |
C-t BS | 前のウィンドウへ移動 |
C-t w | ウィンドウの選択メニューを表示 |
C-t d | セッションのデタッチ |
C-t : | コマンドプロンプトの開始 |
C-t [ | コピーモードの開始 |
C-t ] | バッファ内容のペースト |
C-t q | ペインのインジケータを表示 |
C-t % | ウィンドウを左右のペインに分割 |
C-t o | 次のペインへ移動 |
C-t { | ペインの入れ替え |
C-t } | ペインの入れ替え(逆順) |
C-t l | ペインの左右分割位置を左へ移動 |
C-t h | ペインの左右分割位置を右へ移動 |
C-t x | ペインの破棄 |
あと、copy-modeに入るのには<Ctrl-t>]なのですが、デフォルトの設定では<Ctrl-t>を押した後にControllキーから指を離して[を押す必要があって、素早くcopy-modeに入れません。なので、Controllキーから指を離さずに[を押してもcopy-modeに入れるように設定してあります。
# copy-mode ^[ unbind ^"[" bind -r ^"[" copy-mode unbind ^] bind -r ^] paste-buffer
mac osxでは、tmuxとクリップボードの連携に一手間必要なので、以下の記事を参考に、 reattach-to-user-namespaceコマンドを導入します。
Mac の tmux でクリップボードを使う。 - こせきの技術日記
しかし、.tmux.confに以下の用に.tmux.confに書いてしまうと、linux環境でtmuxが起動しなくなってしまいます。
# コレを.tmux.confに書いてしまうとlinux環境で使えなくなる…… set-option -g default-command "reattach-to-user-namespace -l zsh"
そこで、osxの時だけ上記の設定を行うラッパーコマンドtmuxxを導入します。
このコマンドを~/binなどPATHの通った場所に実行権を与えて配置しておき、.zshrcなどでtmuxにaliasを設定します。これで、osxのときだけ"reattach-to-user-namespace"が有効になります。
# tmux alias tmux='tmuxx' alias tm='tmuxx' alias tma='tmux attach' alias tml='tmux list-window'
.tmux.confについては、以下も参考にしました。
.tmux.confをごにょごにょする - mizchi log
dotfiles/.tmux.conf at master · tokorom/dotfiles · GitHub
Vim
まずは、vim本体をMacVim-KaoriYaにします。
MacVimに対して、香り屋パッチの統合、ローカライズ、MacVim固有の設定、日本語文字コード自動判別、必要なshared library、Perl/Python/Rubyのdynamic loading、Objective-C対応ctags、などを追加しています。インストールしてすぐ使えるのが目標です。もちろんTerminal.app、iTerm.app上で動くコンソール版Vimとしても使用できます。
macvim-kaoriya -
MacVim KaoriYa - Google Project Hosting
ダウンロードしてきて、MacVim.appをApplicationsディレクトリに放り込みましょう。俺は、gVimはあまり使わずにTerminal.appからvimを起動する派なので、.bashrcや.zshrcなどで環境変数EDITORとaliasに設定をしておきます。
export EDITOR=/Applications/MacVim.app/Contents/MacOS/Vim alias vi='env LANG=ja_JP.UTF-8 /Applications/MacVim.app/Contents/MacOS/Vim "$@"' alias vim='env LANG=ja_JP.UTF-8 /Applications/MacVim.app/Contents/MacOS/Vim "$@"'
.vimrcについて
じゃあ、肝心のvimの設定に入ります。
そのまえに、「Vim テクニックバイブル」を買いましょう。Vim使いならこの本は持ってないとダメです。
で、俺の.vimrcはここで公開していて、コメントもできるだけ書いてあるのでまぁ参考にしてください。
みてわかるとおり、設定自体はは分割されていて、.vimrc本体からそれぞれの設定ファイルを読み込む形になってます。
dotfiles/.vimrc at master · yuroyoro/dotfiles · GitHub
"vunlde.vimで管理してるpluginを読み込む source ~/dotfiles/.vimrc.bundle "基本設定 source ~/dotfiles/.vimrc.basic "StatusLine設定 source ~/dotfiles/.vimrc.statusline "インデント設定 source ~/dotfiles/.vimrc.indent "表示関連 source ~/dotfiles/.vimrc.apperance "補完関連 source ~/dotfiles/.vimrc.completion "Tags関連 source ~/dotfiles/.vimrc.tags "検索関連 source ~/dotfiles/.vimrc.search "移動関連 source ~/dotfiles/.vimrc.moving "Color関連 source ~/dotfiles/.vimrc.colors "編集関連 source ~/dotfiles/.vimrc.editing "エンコーディング関連 source ~/dotfiles/.vimrc.encoding "その他 source ~/dotfiles/.vimrc.misc "プラグインに依存するアレ source ~/dotfiles/.vimrc.plugins_setting
プラグイン管理にvundle.vimを使う
以前はpathogen.vimを使っていたのですが、vundle.vimに乗り換えました。今ならneovundleのほうがいいかも?
Vim-users.jp - Hack #215: Vundle で plugin をモダンに管理する
gmarik/vundle · GitHub
Vim-users.jp - Hack #238: neobundle.vim で plugin をモダンに管理する
vundleは基本的にpathogen.vimと同様に、.vim/bundleに以下にプラグインを放り込むようになっています。pathogen.vimと異なるのは、gitのsubmoduleではなく、明示的に.vimrcにBundle 'plugin-name'のように利用するプラグインを指定するようになっている点です。.vimrcでコメントアウトすることで、気軽にプラグインの有効/無効を切り替えることが可能です。
"vunlde.vimで管理してるpluginを読み込む filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " Edit {{{ " NERD_commenter.vim :最強コメント処理 (<Leader>c<space>でコメントをトグル) Bundle 'scrooloose/nerdcommenter.git' " 自動閉じタグ " Bundle 'yuroyoro/vim-autoclose' " -- でメソッドチェーン整形 Bundle 'c9s/cascading.vim'
vundleの導入は、.vimディレクトリにgit cloneするだけです。vundleが有効になった状態で、コマンドで"BundleInstall plugin-name"と指定する事で、vim-script.orgやgithubからプラグインをダウンロードします。
補完にneocomplecacheを使う
vimでの補完と言えば、AutoComplePopが有名ですが、今は色々と高機能なneocomplecache.vimを使っています。
neocomplecacheの使い方や設定は、VimテクニックバイブルやVim-users.jp - neocomplcacheなどに詳しく解説があるので省きます。自分は、Scala用のディクショナリを設定してscalaのLibraryからクラス名などが補完されるようにしています。
neocomplecache関連の設定ファイルはコレです。
unite.vim
unite.vimは、バッファやファイルなど様々な入力ソースを検索し、ファイルを開いたりディレクトリに移動したりyankしたりできます。
例えば、:Unite fileとコマンドを入力すると、このようにカレントディレクトリ以下からファイルを選択するバッファが開きます。
ここで、ファイル名などを入力することで絞り込みが行われます。ファイルやディレクトリを選択した状態でTABを押すと、可能なアクションが表示されます。
例えば、exというアクションを選択すると、選んだファイル名が入力された状態でコマンドモードに入ります。
自分は、uniteのプレフィックスキーはfに設定しています。ノーマルモードでfmを押すと、最近使ったファイルが一覧ででます。他にもffでカレントディレクトリ以下から、fdでそのバッファのあるディレクトリからファイルを選択できるようにしてます。
nnoremap [unite] <Nop> nmap f [unite] " 分割しないでuniteのbufferを表示する nnoremap [unite]u :<C-u>Unite -no-split<Space> " 全部乗せ nnoremap <silent> [unite]a :<C-u>UniteWithCurrentDir -no-split -buffer-name=files buffer file_mru bookmark file<CR> " ファイル一覧 nnoremap <silent> [unite]f :<C-u>Unite -no-split -buffer-name=files file<CR> " バッファ一覧 nnoremap <silent> [unite]b :<C-u>Unite -no-split buffer<CR> " 常用セット nnoremap <silent> [unite]u :<C-u>Unite -no-split buffer file_mru<CR> " 最近使用したファイル一覧 nnoremap <silent> [unite]m :<C-u>Unite -no-split file_mru<CR> " 現在のバッファのカレントディレクトリからファイル一覧 nnoremap <silent> [unite]d :<C-u>UniteWithBufferDir -no-split file<CR>
通常は、uniteのバッファは新しいウィンドウが作成されて開くのですが、縦分割してたりtaglist.vimのウィンドウが出てたり、MiniBufferExplorerがあったりすると、uniteのウィンドウを閉じた後のウィンドウサイズがうまく復元されませんでした。なので、今カーソルのあるウィンドウを再利用してuniteのバッファを出すように、--no-splitオプションをつけています。
vim-powerlineでカッコイイステータスラインを使う
Lokaltog/vim-powerline · GitHub
今回、iTerm2に移行したのは、このvim-poewlineがTerminal.appでは上手く表示されないからです。このvim-poewlineを導入すると、こんな感じでステータスラインがカッコよくなります。
このように、モードによって色が変わったりもします。カコイイ。
ですが、このような表示するには、フォントにパッチを当てる必要があります。githubのwikiに方法が書いてあるので、基本的になこの通りに普段使ってるフォントにパッチを当てればオーケーです。
また、すでにパッチ適用済みのフォントも配付されています。面倒であればこれらを使うのがよいでしょう。
Patched fonts · Lokaltog/vim-powerline Wiki · GitHub
では、パッチ適用の手順です。俺は あずきフォントとS2Gうにフォントにパッチを当てました。ふつうにプログラミングにつかうなら、Rictyなんかがいいんじゃないかと思います。
【Vim】Powerline でリッチなステータスラインを使う
- blog.remora.cx
この記事では、cygwin環境での方法が書いてあります。mac osxでは、以下の手順でパッチを当てます。
fontforgeをインストールする
brew install fontforge
githubにあるvim-powerlineをcloneする
git clone https://github.com/Lokaltog/vim-powerline.git
fontpatcherで、好みのフォントにパッチをあてる
cd vim-powerline/fontpatcher ./fontpatcher MyFontFile.ttf
パッチをあてるとfont名-Poewline.ttfとかいうファイル名でパッチをあてたフォントファイルが生成されるので、それをフォントディレクトリにコピーするなり、Fontbookでインストールするナリします。
cp MyFontFile-Powerline.otf ~/Library/Fonts
で、パッチを当てたフォントを使用するように、iTerm2に設定します。
あとは、.vimrcに以下の設定を加えればオーケーです。
let g:Powerline_symbols = 'fancy'
taglist.vim
taglist.vim : ソースコード上のメソッド宣言、変数宣言の一覧を表示 — 名無しのvim使い
taglist.vimは、ctagsの結果をアウトラインとして表示してくれるプラグインです。このように表示されます。
mac osxにデフォルトで入ってるctagsは、Exuberant Ctagsではないので、そのままではtaglist.vimを利用できません。brewでctagsをインストールし、デフォルトの/usr/bin/ctags は削除するなりしてしまいましょう。
vimshell
Vimの中でShell機能を実現するプラグインです。スゴすぎる…!
このように、vimの中でシェルが動いていて、zshのように扱えます(下のウィンドウがVimShellです)。
insert modeでコマンド入力、normal modeでは通常のvimと同じように、Visual modeで選択できたり検索できたりします。さらに、neocomplecacheによる補完ができたりと強力です。
screentとvim間での連携がいまいちな感じですので、VimShelleでコマンドをほげほげしてyankしたりとか夢がひろがりんぐです。これから活用したいと思います。
その他のプラグイン
導入しているプラグインは、.vimrc.bundleに書いてあります。
dotfiles/.vimrc.bundle at master · yuroyoro/dotfiles · GitHub
"vunlde.vimで管理してるpluginを読み込む filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " Edit {{{ " NERD_commenter.vim :最強コメント処理 (<Leader>c<space>でコメントをトグル) Bundle 'scrooloose/nerdcommenter.git' " 自動閉じタグ " Bundle 'yuroyoro/vim-autoclose' " -- でメソッドチェーン整形 Bundle 'c9s/cascading.vim' " visually indent guide Bundle 'nathanaelkane/vim-indent-guides' " XMLとかHTMLとかの編集機能を強化する Bundle 'xmledit' " Align : 高機能整形・桁揃えプラグイン Bundle 'Align' " フィルタリングと整形 Bundle 'godlygeek/tabular' " マルチバイト対応の整形 Bundle 'h1mesuke/vim-alignta' " YankRing.vim : ヤンクの履歴を管理し、順々に参照、出力できるようにする Bundle 'YankRing.vim' " undo履歴を追える (need python support) Bundle 'Gundo' " surround.vim : テキストを括弧で囲む/削除する Bundle 'tpope/surround.vim' " smartchr.vim : ==などの前後を整形 Bundle 'smartchr' " vim-operator-user : 簡単にoperatorを定義できるようにする Bundle 'operator-user' " operator-camelize : camel-caseへの変換 Bundle 'operator-camelize' " operator-replace : yankしたものでreplaceする Bundle 'operator-replace' " textobj-user : 簡単にVimエディタのテキストオブジェクトをつくれる Bundle 'textobj-user' " vim-textobj-syntax : syntax hilightされたものをtext-objectに Bundle 'kana/vim-textobj-syntax.git' " vim-textobj-plugins : いろんなものをtext-objectにする Bundle 'thinca/vim-textobj-plugins.git' " vim-textobj-lastpat : 最後に検索されたパターンをtext-objectに Bundle 'kana/vim-textobj-lastpat.git' " vim-textobj-indent : インデントされたものをtext-objectに Bundle 'kana/vim-textobj-indent.git' " vim-textobj-function : 関数の中身をtext-objectに Bundle 'kana/vim-textobj-function.git' " vim-textobj-fold : 折りたたまれたアレをtext-objectに Bundle 'kana/vim-textobj-fold.git' Bundle 'textobj-rubyblock' " vim-textobj-entire : buffer全体をtext-objectに Bundle 'textobj-entire' " 「foo」 or 【bar】などをtext-objectに Bundle 'textobj-jabraces' " 改造したmonday.vim(git rebase -i とかtrue/falseとか) " Bundle 'yuroyoro/monday' " <C-a>でtrue/false切替。他色々 Bundle 'taku-o/vim-toggle' " }}} " Completion {{{ " 補完 autocomplpop.vim : insertmodeで自動で補完をpopup " Bundle 'AutoComplPop' " 補完 neocomplcache.vim : 究極のVim的補完環境 Bundle 'Shougo/neocomplcache' " rubyでrequire先を補完する " Bundle 'ujihisa/neco-ruby' " A neocomplcache plugin for English, using look command " Bundle 'ujihisa/neco-look' " }}} " Searching/Moving{{{ " smooth_scroll.vim : スクロールを賢く Bundle 'Smooth-Scroll' " vim-smartword : 単語移動がスマートな感じで Bundle 'smartword' " camelcasemotion : CamelCaseやsnake_case単位でのワード移動 Bundle 'camelcasemotion' " <Leader><Leader>w/fなどで、motion先をhilightする Bundle 'EasyMotion' " matchit.vim : 「%」による対応括弧へのカーソル移動機能を拡張 Bundle 'matchit.zip' " ruby用のmatchit拡張 Bundle 'ruby-matchit' " grep.vim : 外部のgrep利用。:Grepで対話形式でgrep :Rgrepは再帰 Bundle 'grep.vim' " eregex.vim : vimの正規表現をrubyやperlの正規表現な入力でできる :%S/perlregex/ Bundle 'eregex.vim' " open-browser.vim : カーソルの下のURLを開くor単語を検索エンジンで検索 Bundle 'tyru/open-browser.vim' " }}} " Programming {{{ " quickrun.vim : 編集中のファイルを簡単に実行できるプラグイン Bundle 'thinca/vim-quickrun' " perldocやphpmanual等のリファレンスをvim上で見る Bundle 'thinca/vim-ref' " SQLUtilities : SQL整形、生成ユーティリティ Bundle 'SQLUtilities' " vim-ruby : VimでRubyを扱う際の最も基本的な拡張機能 Bundle 'ruby.vim' " rails.vim : rails的なアレ Bundle 'tpope/vim-rails' " Pydiction : Python用の入力補完 Bundle 'Pydiction' " ソースコード上のメソッド宣言、変数宣言の一覧を表示 Bundle 'taglist.vim' " tagsを利用したソースコード閲覧・移動補助機能 tagsファイルの自動生成 Bundle 'Source-Explorer-srcexpl.vim' " NERD_tree, taglist, srcexpl の統合 Bundle 'trinity.vim' " }}} " " Syntax {{{ " haml Bundle 'haml.zip' " JavaScript Bundle 'JavaScript-syntax' " jQuery Bundle 'jQuery' " nginx conf Bundle 'nginx.vim' " markdown Bundle 'tpope/vim-markdown' " coffee script Bundle 'kchmck/vim-coffee-script' " python Bundle 'yuroyoro/vim-python' " scala Bundle 'yuroyoro/vim-scala' " syntax checking plugins exist for eruby, haml, html, javascript, php, python, ruby and sass. Bundle 'scrooloose/syntastic' " }}} " Buffer {{{ " DumbBuf.vim : quickbufっぽくbufferを管理。 "<Leader>b<Space>でBufferList Bundle 'DumbBuf' " minibufexpl.vim : タブエディタ風にバッファ管理ウィンドウを表示 Bundle 'minibufexpl.vim' " NERDTree : ツリー型エクスプローラ Bundle 'The-NERD-tree' " vtreeexplorer.vim : ツリー状にファイルやディレクトリの一覧を表示 Bundle 'vtreeexplorer' " }}} " Encording {{{ Bundle 'banyan/recognize_charcode.vim' " }}} " Utility {{{ " vimshell : vimのshell Bundle 'Shougo/vimshell.git' " vimproc : vimから非同期実行。vimshelleで必要 Bundle 'Shougo/vimproc.git' " vim-altercmd : Ex command拡張 Bundle 'tyru/vim-altercmd' " vim Interface to Web API Bundle 'mattn/webapi-vim' " cecutil.vim : 他のpluginのためのutillity1 Bundle 'cecutil' " urilib.vim : vim scriptからURLを扱うライブラリ Bundle 'tyru/urilib' " ステータスラインに顔文字を表示 " Bundle 'mattn/hahhah-vim' " utillity Bundle 'L9' " Buffer管理のLibrary Bundle 'thinca/vim-openbuf' " vimdoc 日本語 Bundle 'yuroyoro/vimdoc_ja' " vim上のtwitter client Bundle 'TwitVim' " Lingrのclient Bundle 'tsukkee/lingr-vim' " vimからGit操作する Bundle 'tpope/vim-fugitive' " ステータスラインをカッコよくする Bundle 'Lokaltog/vim-powerline' " }}} " ColorSchema{{{{ " color schema 256 Bundle 'desert256.vim' Bundle 'mrkn256.vim' Bundle 'tomasr/molokai' Bundle 'yuroyoro/yuroyoro256.vim' " }}} " Unite {{{{ " unite.vim : - すべてを破壊し、すべてを繋げ - vim scriptで実装されたanythingプラグイン Bundle 'Shougo/unite.vim' Bundle 'tsukkee/unite-help' Bundle 'h1mesuke/unite-outline' " Bundle 'Sixeight/unite-grep' Bundle 'basyura/unite-rails' Bundle 'thinca/vim-unite-history' Bundle 'tsukkee/unite-tag' Bundle 'choplin/unite-vim_hacks' " }}} " Bundle 'gmarik/vundle' filetype plugin indent on
その他オヌヌメのvim設定
以前書いた記事からサルベージした、特にオヌヌメの設定を紹介しますぁ。
カーソル行のハイライト
ふつーにset cursorlineと設定すると、ウィンドウを分割した場合にフォーカスが当たっていないウィンドウもハイライトされてしまって見にくいので、カレントウィンドウのみに罫線を引くように設定します。
" カーソル行をハイライト set cursorline " カレントウィンドウにのみ罫線を引く augroup cch autocmd! cch autocmd WinLeave * set nocursorline autocmd WinEnter,BufRead * set cursorline augroup END hi clear CursorLine hi CursorLine gui=underline highlight CursorLine ctermbg=black guibg=black
こんなように、右側のみに罫線がでるようになります。わかりにくいかもしれませんが、右のウィンドウに罫線が引かれてます。
検索ハイライトの消去
/hogeなどで検索したキーワードのハイライトを、ESC2回押しでクリアするようにします。
"Escの2回押しでハイライト消去 nmap <ESC><ESC> ;nohlsearch<CR><ESC> .vimrc<e3><82><92>"nnoremap"で検索したときで、
ここでESC2回押すとクリアされますお。
helpを素早くひく
" Ctrl-iでヘルプ nnoremap <C-i> :<C-u>help<Space> " カーソル下のキーワードをヘルプでひく nnoremap <C-i><C-i> :<C-u>help<Space><C-r><C-w><Enter>
保存時の空白除去
「私は行末のスペースを許さないっ!!」ので、buffer保存時に行末のスペースを削除するようにしてます。あとタブではなくスペース派なので、タブもスペースに変換してます。ftpluginでfiletype毎に設定するのがいんじゃないでしょうか?
" 保存時に行末の空白を除去する autocmd BufWritePre * :%s/\s\+$//ge " 保存時にtabをスペースに変換する autocmd BufWritePre * :%s/\t/ /ge
コマンド入力を素早く
これは';'キーと':'キーを入れ替えることで、素早くコマンドモードに入れるようにしています。特に、US配列だと':'を入力するのにShiftキーが必要になるため、俺に取っては必須の設定です。この設定にしてから生産性が向上した気がする……。
" ;でコマンド入力( ;と:を入れ替) noremap ; :
ウィンドウ移動を楽に
俺はわりとウィンドウを分割する派で、ウィンドウ間をよく移動するので、CTRL-hjklでウィンドウを移動できるようにしてま
" CTRL-hjklでウィンドウ移動 nnoremap <C-j> :<C-w>j nnoremap <C-k> :<C-k>j nnoremap <C-l> :<C-l>j nnoremap <C-h> :<C-h>j