Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。
Vim Advent Calendar 2011 43日目の記事です。というかもう2012年ですね! あけましておめでとうございます。この度は前回の続き。本当は翌日にでも書くつもりだったけど伸ばしに伸びたWeb屋のためのVim特集をお送りします。初めに言っときますが、3部作です。つまりこの記事は2/3。どうしてこうなった。
Demo: Vim Starter-Kit from sigwyg on Vimeo.
はい、けっきょく作ってしまったんですよ。初心者導入キット。黒い画面恐怖症の方々のためにGit依存しないように作ったらNeoBundleでもVundleでもなくPathogen管理となり、Uniteの代わりにNERDTreeとなりました。できればUnite.vim使って欲しい。でもまずVimそのものに慣れてからのほうが良いと思うんだよね。
ファイル構成は以下のようになってます。
.vim ├── autoload │ └── pathogen.vim ├── bundle │ ├── QuickBuf │ ├── Sass │ ├── endtagcomment.vim │ ├── gundo.vim │ ├── html5.vim │ ├── jslint.vim │ ├── matchit.vim │ ├── neocomplcache │ ├── nerdtree │ ├── scss-syntax.vim │ ├── snipmate.vim │ ├── vim-alignta │ ├── vim-css3-syntax │ ├── vim-fontzoom │ ├── vim-qfreplace │ ├── vim-surround │ └── zencoding-vim └── colors └── ir_black.vim
インストール
僕はMacなのでMac環境前提で作ってます。Mac/Linuxであれば、ユーザフォルダに置くだけ(ex. /Users/sigwyg/.vimrc)。Winであれば、.vimrcを_vimrcにリネームするなど配置に若干の手間が掛かります。まあ、そこは追々...
導入したプラグイン
HTMLを編集するデザイナ/コーダーを想定して作ってます。pathogen管理なのは非Git環境を想定したためであり、Uniteが無いのは右も左も判らないうちにUniteを使うのは避けるべきだと思うからです。大事なことなので2度言いました。
pathogen.vim | [解説記事] | プラグイン管理用のプラグインです。Vimプラグインを、プラグイン単位のディレクトリで管理できるようになります。この利点については過去の記事で。 |
---|---|---|
ir_black.vim | [解説記事] | カラースキーマです。デフォルトがir_blackなのは趣味。お好みのカラースキーマを見つけたら、colorsフォルダにぶち込んで「colorscheme ir_black 」とでも書いて置けば宜しい。 |
QuickBuf | [解説記事] | 現在開いているバッファの一覧を出したり、移動したり削除したりが簡単にできるプラグインです。 |
Sass | [解説記事] | Sass記法用のシンタックスハイライトです。 |
endtagcomment.vim | [解説記事] | HTMLの閉じタグにコメントを追加するスクリプト。@hokacchaが作成し、@kosei27がfolkしています。 |
gundo.vim | [解説記事] | VimのUndoツリーを視覚化するプラグインです。利用するにはPythonのパスが通っている必要がありますが、MacVimやGVimを使っているなら特に問題は無いでしょう。 |
html5.vim | [解説記事] | HTML5のタグや属性のコード補完とハイライトを提供するプラグインです。 |
jslint.vim | [解説記事] | Javascriptのエラーチェックができるプラグインです。エラー箇所をQuickfixウィンドウから確認することができます。 |
matchit.vim | [解説記事] | %キー移動を拡張して、対応するタグにも移動できるようになります。Vim標準でパッケージされてますが、デフォルトでは有効になっていません。(:h matchit-install ) |
neocomplcache | [解説記事] | 定番の自動補完プラグインです。 |
NERDTree | [解説動画] | ツリー型のファイラーです。 |
scss-syntax.vim | [解説記事] | scssファイルのシンタックスハイライトを提供します。 |
snipmate.vim | [解説動画] | 自由度の高いスニペット・プラグイン |
vim-alignta | [解説記事] | コード整形用のプラグイン。マルチバイト対応。 |
vim-css3-syntax | [解説記事] | CSS3用のシンタックスハイライト。 |
vim-fontzoom | [解説記事] | プレゼン用。文字サイズを変更します。Macだとcommand+等で代用できますが、デフォルトの文字サイズに戻す「:Fontzoom! 」が地味に重宝します。 |
vim-qfreplace | [解説記事] | Quickfixウィンドウを利用して複数ファイルの置換を行います。 |
vim-surround | [解説動画] | Vimのテキストオブジェクトを拡張します。(この解説動画はちょいと古い。現在のキーマップはsでなくS) |
zencoding-vim | [解説記事] | CSSセレクタからHTMLタグを一括生成したりします。 |
おすすめ設定
ざっとキーマップ等をご紹介。あくまで参考なので、納得したら適当に弄っちゃってください。
noremap <Up> <Nop> noremap <Down> <Nop> noremap <Left> <Nop> noremap <Right> <Nop> inoremap <Up> <Nop> inoremap <Down> <Nop> inoremap <Right> <Nop>
- 練習用に、矢印キーを消してあります。hjklを使ってくださいねー
nnoremap zl zL nnoremap zh zH
- 水平方向の移動を簡単にしてます。nowrapな時に便利。
noremap j gj noremap k gk
- 行移動を見た目上に行うようにしています。wrap指定している場合、見た目上は数行に改行されていても内部的には1行なので。
noremap gh gT noremap gl gt
- タブ移動です。tは遠いよね ==)
noremap <CR> i<CR><ESC>
- normalモードでもカーソル位置で改行できるようにしてます。
inoremap {} {}<LEFT> inoremap [] []<LEFT> inoremap () ()<LEFT> inoremap "" ""<LEFT> inoremap '' ''<LEFT> inoremap <> <><LEFT> inoremap []5 [% %]<LEFT><LEFT><LEFT> inoremap {}5 {% %}<LEFT><LEFT><LEFT>
- ブラケット入力時にスムーズに編集できるように。最近びみょーかもと思い始めてますが。
nnoremap n nzz nnoremap N Nzz nnoremap * *zz nnoremap # #zz nnoremap g* g*zz nnoremap g# g#zz
- 検索結果に移動したとき、その位置を画面の中央にします。上端とかに移動しても気付きにくいので。
cnoremap
/ getcmdtype() == '/' ? '\/' : '/' - 検索時、「/」の入力をエスケープします。
nnoremap <silent> <S-Left> :5wincmd <<CR> nnoremap <silent> <S-Right> :5wincmd ><CR> nnoremap <silent> <S-Up> :5wincmd -<CR> nnoremap <silent> <S-Down> :5wincmd +<CR>
- ウィンドウ分割時にウィンドウサイズを調節する設定です。Shiftキー+矢印キー。
nnoremap bb :b#<CR> nnoremap bp :bprevious<CR> nnoremap bn :bnext<CR> nnoremap bd :bdelete<CR>
- バッファの一覧・移動・削除です。QuickBuf使うまでもないときに。
nnoremap gc `[v`] vnoremap gc :<C-u>normal gc<CR> onoremap gc :<C-u>normal gc<CR>
- 「最後に編集したテキスト」を選択するキーマップ。コピペ後などに重宝。「gv」と似て非なる使い勝手。
nnoremap <Space>r :<C-u>execute "source " expand("%:p")<CR>
- 表示中のバッファをVimスクリプトと見なして再読込。.vimrc変更後など。
nnoremap <Space>v :<C-u>source $MYVIMRC \| if has('gui_running') \| source $MYGVIMRC \| endif <CR>
- vimrcとgvimrcを再読込。vimrc変更後など。Starter-Kitにはgvimrcが含まれていないことに留意されたし。
noremap ; : noremap : ;
- 「:」と「;」を入れ替えるキーマップ。コロンは使用頻度の高いキーの1つなので、特にUSキーボードだとすげー楽になります。
inoremap jj <Esc>
- 「jj」をEscとして使用するキーマップ。別にjjでなくても良いんだけど、エスケープキーは最も使用頻度の高いキーなので(以下略
あと気がついたものがあればREADMEに追記していきます。
Next Step!
Vimの操作に慣れたら、Unite.vimに挑戦してみましょう! 連携が強力なVimFilerやneobundle.vim、非同期処理に必須なvimprocを加えると尚よし。
- NERDTreeは、:Unite file あるいはVimFiler に
- QuickBufは、:Unite buffer に
- pathogenは、neobundle.vim に、それぞれ代替することができます。
あとプリインストールには含めませんでしたが、YankRingっていうYank(コピー)履歴からコピペを選べるプラグインもありまして、そこそこ人気なのですが、これも:Unite history/yank
で代替できます。というかだから入れませんでした。何を言っているのかわからねーと思うが...
上記も参考までに。Enjoy! (^^)/ !
Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。