きっとVimが好きになる！【Vimの始め方】

#はじめに
金沢スマートフォンアプリプロジェクトの第1回Vim勉強会で使用した資料です。
授業ではterapadを使用していますが、その**10倍**...いや**100倍**の操作性・拡張性をもつVimの始め方・使い方を教えます。
さあ、快適なプログラミングライフに向けて、その環境を整えていきましょう^ω^!
#想定する読者
terapadってなんか味気ない・面白くないと思っている人
Vimのインストールを終えた人

[まだの人]
Macはターミナル→vimと入力
[Windowの方はこちらから](http://www.kaoriya.net/software/vim/)
#ゴール
**Vimを好きになる**
少しづつお互いのことを知って、距離を縮めていきましょう。
ベタですが、あらかじめディズニーランドに行く約束をしてあげると発展しやすいです。

第1回では、Vimの大まかな理解~カスタマイズ(小)をゴールとします。
できれば授業の課題や個人開発でも使用して、すこしづつ慣れて頂けたらなと思います。

#Vimとは何か
主にUnix系OSに標準でインストールされている**オープンソース**のエディタ
キーボードのみで操作することを前提としています。
ちなみにVimは1987年生まれの**28歳**...むしろストライクゾーンだよね?

##どういうところが好きなのか
・カスタマイズ性が高い。
・**CUI**である。
→他のCUIとの親和性が高い (tmux, Ruby on Rails)
→起動が軽快(メモリ不足でXcodeが動かない...←よく分からない)
#Vim操作に慣れよう
操作とか言ってはいけませんね。扱い方です。
授業の課題ファイルなどをVimで開いて、動作の確認してみましょう。

以下を参考にやっていきます。
[Vimキーマップ](http://qiita.com/susan_mamma/items/755cfbb0e97d48280775)

+で普段よく使うコマンドを紹介します。

|コマンド|内容|
|---|---|
|yy| 1行コピー|
|p| ペースト|
|u|１つ前に戻る|
|ctr+r|uの反対|

# Vimをカスタマイズしよう
現時点での私のVim...terapadがどうだとか言えませんね。
Vimの設定は`~/.vimrc`に記述していきます。(Windowsの方は*1へ)

`vim .vimrc`で開き、何か書かれている場合はdを長押しして全部削除してしまいましょう。(0からカスタマイズ！)
無ければ各自、ファイルを作成してください。`vim .vimrc`でok!(訳: vimで.vimrcを開く(無ければ作成))

(*1)ダウンロードしてきたフォルダの中にvim.exeの生存を確認してください。
確認できたら、そのフォルダと同じ欄に`vimrc`というファイルがあるので、それを開きます。

|コード|内容|
|---|---|
| set number |行番号表示 |
| set expandtab |Tabキーを空白に変換 |
|set laststatus=2  |常にステータスラインを表示|

上記のコードを記述して保存して終了`:wq`します。
再度、`vim .vimrc`で開いてみると、Vimの左側に行番号が追加されていることが確認できます。

上記の他にも文字色を変えたり..のカスタマイズ方法は様々です。
各自Webで調べるなどして、自分色に手を加えてみてください。

なんかぐちゃぐちゃして分かんねえ！という方
Vimにはノーマルモードと挿入モードがあります。
通常、vimでファイルを開いた時はノーマルモードになっており、主にカーソル移動を主とします。
何か文字を入力したいとなれば、挿入モードに移ることで入力できます。

**カーソル移動はノーマルモード**、**入力は挿入モード**と覚えておくと良いでしょう。

|ノーマルモード→挿入モード|挿入モード→ノーマルモード|
|---|---|
| **i**  (insertの頭文字) |ctr+[ |

保存して終了ってどうやるの？と思われた方は、ノーマルモードの状態で`:`を打つと
vimの下あたりに入力が移ることを確認してください。
そこで`wq`と打つと保存して終了することができます。

ノーマルモードへの切り替えは、capslockをctrに設定すると捗りますよ..ﾎﾞｿｯ  by vim
以上までが第１回Vim勉強会の内容になります。


#+α(次回) プラグインを導入してみよう
NeoBundleを使用します。
NeoBunldeとは、vimプラグインのパッケージマネージャーです。

[NeoBundleを利用してVimプラグインを一元管理する]
(http://qiita.com/kazu0620/items/819679ef006d973c6c22)
Neobundleそのもののインストール等、詳しくは上記のリンクにまとめられているので、参考にしてください。
Neobundleを使用するためには`~/.vimrc`を開いて、以下のように記述します。
はじめは練習も兼ねて、neobundle自体をneobundleで管理します。

```
""---------------------------
" プラグイン管理 Neobundle
"---------------------------

" bundleで管理するディレクトリを指定
set runtimepath+=~/.vim/bundle/neobundle.vim/

" ここからNeobundleを書いていく場所だよ:
call neobundle#begin(expand('~/.vim/bundle/'))



" neobundle自体をneobundleで管理
NeoBundleFetch 'Shougo/neobundle.vim'



 " ここでNeobundleで管理するのは終わりね:  
call neobundle#end()                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                        
 filetype plugin indent on                                                                                                                                                 
                                                                                                                                                                          
NeoBundleCheck
```



Vimを保存して終了し、再度Vimを開こうとするとこのプラグインをインストールするか？とVimに尋ねられます。y(yes)を押して、インストールしましょう。

いやいや聞かれないぞ！というWindowsの方
`set runtimepath+=`後と`call neobundle#begin(expand`後を絶対パスにする必要があります。
[参考 - neobundleのインストール](http://ylgbk.hatenablog.com/entry/2015/01/07/120000)


## 快適ファイル移動！Uniteのインストール
ファイルを開くとき、コマンドラインで`cd ../`,`vim .vimrc`とかやるの疲れませんか？
それらのファイル移動をvim内で快適に行うプラグインです！

`call neobundle#begin(expand('~/.vim/bundle/'))`から`call neobundle#end()`の間に
以下を記述しましょう。

```
NeoBundle 'Shougo/unite.vim'

```

再度vimを開いて、:Unite fileと書くと実行できます。
[参考 - うまくいくとこのようになります]
(https://github.com/Shougo/unite.vim)

できましたか？困ったことがあればコメント欄にて質問をどうぞ！
これでVimのもつ拡張性が伝わればなと思います！



#おわりに
第２回をお楽しみに！