vimライトユーザの俺が説明する実践vim入門編
対象者
: これからvimを使い始めようという人、開発者やwebデザイナ期待される成果
: vimが少しでも好きになる
vimとは何か
私の貧弱な語彙ではとても表しきれないので一言で言うと、高機能なテキストエディタ
だ。
使うまでに幾分かの修行を必要とすると言われているほど多機能、特殊な動作をする。
そんなツンツンのvimを使っているとそのうちデレてきて、私たちはvimからひと時も離れたくなくなるだろう。
何はともあれインストール
なるべく簡単に用意できる方法を選んでいます。
自前でソースコードからビルドするよっていう方はmercurial
を使って世代管理するといいかと思います。
コマンド内の> と $
は入力不要です
- Windows
香り屋 KaoriYaからダウンロードして使うのが吉。Windows+r
を押してファイル名を指定して実行からcmd
と打ち込みEnter→コマンドプロンプトが起動されます。
フォルダをC:\App
フォルダに解凍したのであれば以下のようにPATHを追加します。
>setx PATH "%PATH%";C:\App\vim74-kaoriya-win32
- Mac
Homebrewを使います。
Homebewのインストールはここを参考にしてパッケージ管理システム HomebrewCtrl+Space
を押してterminal
と入力してEnter→Terminal.appが起動されます。
$ brew update
$ brew install lua
$ brew install macvim --devel --with-lua
$ echo$PATH#で/usr/local/binが無い場合$ export PATH="/usr/local/bin:$PATH"
brew update で私が作業した時に出たxcodeのライセンス同意しろよってエラー
$ brew update
Warning: You have not agreed to the Xcode license.
Builds will fail! Agree to the license by opening Xcode.app or running:
xcodebuild -license
$ sudo xcodebuild -license #文章が表示されるので agree と入力してEnter
- Debian,Ubuntu
$ sudo aptitudo vim
使ってみよう
$ vim ~/.vimrc
vimにはモードという概念があります。
通常時のノーマルモードと入力時のインサートモードです。
どっちのモードか分からなくなったら即esc
キーを入力してノーマルモードに戻りましょう。
vimではインサートモード中は普通カーソル移動しません。
入力漏れなどを発見した場合はノーマルモードに戻ってカーソルを移動しましょう。
早速使っていきます。最初は入力速度がべらぼうに落ちますが我慢します。
以下に簡単な入力操作の簡易表を用意しました。
操作 | vim |
---|---|
↑ | k |
↓ | j |
← | h |
→ | l |
一文字削除 | x |
インサートモードへ | i |
次行を新規行として挿入してインサートモードへ | o |
現在行に新しい行を追加してインサートモードへ | O |
ノーマルモードへ | (インサートモードで)esc |
最初は上記のカーソル移動を見ながらでもいいので打ってみてください。
filetype plugin indent onsyntaxonsetnowrapsethlsearchsetignorecasesetsmartcasesetautoindentsetrulersetnumbersetlistsetwildmenusetshowcmdsetshiftwidth=4setsofttabstop=4setexpandtabsettabstop=4setsmarttabsetclipboard=unnamed
最後にノーマルモードで:w
と入力してください。
これは保存です。同じく:q
でvimでの編集を終了します。
以下に似た操作を列挙しておきます。
操作 | vim |
---|---|
上書き保存 | :w |
名前をつけて保存 | :w ファイル名 |
編集終了 | :q |
保存して終了 | :wq または :x |
ファイルを開く | :e ファイル名 |
ただしvimでは上書き保存していない編集中のファイルを閉じようとすると保存してませんぜって言われます。
編集をしたけどやっぱり保存しないといった場合は:q!
のように最後に!
を付けることによって強制的に上述した表の操作を行なうことが出来ます。
ちなみに上で保存したファイルはvimの設定ファイルです。
自分なりにこれは必須だと思うものをあげました。
設定した内容については次回投稿する記事で取り扱う予定です。
でもって何が便利なのか
今のところ普通のエディタやIDE(eclipseやvisual stusioなどの統合開発環境)に比べて使いづらい印象をウケていると思います。
今のところはそれでいいと思います。
こっからvimの操作での強みであるモーション(移動)とオペレータ(操作)について説明します。
今度は移動のチートシートです。移動はノーマルモードで行ないます。
ここから登場するC-
はControl
と同時押しで、2文字続いているものは続けて打ってください。
vim | 意味 |
---|---|
w | 次の単語の先頭へ |
e | 単語の最後へ |
b | 前の単語の先頭へ |
0 | 行頭へ |
$ | 行末へ |
gg | ファイルの先頭へ |
G | ファイルの最終行へ |
% | マッチする文字へ移動(対応する[]や()への移動) |
C-f | 次のページへ |
C-b | 前のページへ |
まぁこんな感じでしょうか。
続いて操作です。
vim | 意味 |
---|---|
y | ヤンク(コピー) |
Y | 行をヤンク |
p | ペースト |
P | 現在位置にペースト |
x | カーソル下の一文字を削除 |
d | 削除 |
D | 行内のカーソル以降を削除 |
dd | 行を削除 |
u | 元に戻す |
C-R | 操作を進める |
r | 変更(一文字) |
R | 変更(入力したもの全部) |
c | 一文字消してインサートモードへ |
C | 一行消してインサートモードへ |
A | 行末に移動してインサートモードへ |
a | カーソルの一つ右からインサートモードへ |
I | 行の始まり(文字の開始位置)からインサートモードへ |
> | 右へインデント |
< | 左へインデント |
gu | 小文字へ |
gU | 大文字へ |
移動も操作も他にもいっぱいあるけど私が良く使うのはこんなところです。
では実際に操作してみましょう。
テストデータを用意したのでコピーしてvimでペーストしてください。
vimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvimvim
[indent hoge [foo hoge] hoge]
(indent hoge (foo hoge) hoge)
[indent hoge [foo hoge] hoge]
(indent hoge (foo hoge) hoge)
[indent hoge [foo hoge] hoge]
(indent hoge (foo hoge) hoge)
少し気持ち悪いですが気にしないでください。洗脳じゃないです。
まずはw
,e
,b
などで移動を試してください。
ついでにで%
を押して対応する括弧に移動することを確認してください。
チートシートにありませんでしたがf[アルファベット]
で行内の[アルファベット]の部分に移動します。/[word]
で検索を行なえます。/vim
と打ってください。n
,N
でそれぞれ次と前の検索へ移動することができます。
操作は移動と組み合わせて使うことができます。dw
で次の単語の先頭まで削除が行なえます。
更に操作やモーションは回数指定が可能です。10dd
では10行削除可能です。
もう一つ強力な機能としてテキストオブジェクトというものがあります。
例えば操作+iw
で単語に対して操作を行ないます。diw
ではカーソルの位置に関係なく単語を消せます。
以下によく使いそうなテキストオブジェクトのチートシートを示します。
vim | 意味 |
---|---|
iw | 単語(以降iの部分はaでも代用可能です) |
iW | 単語(空白含む) |
is | 文 |
it | タグ |
i] | 括弧("",'',(),<>,{})なども対応可能です) |
テストデータの(indentあたりでyi)
とすると括弧内をヤンクできます。
どっかでp
でペーストしてみてください。20i
でvim
と入力した後にescでノーマルモードに戻るとこの気持ち悪いテストデータの作り方が...。
最後にdis
とするとすごいことになるのでやってみて。
最後に
vimrcと追加プラグインによってvimはIDEに匹敵する、あるいはそれ以上の使い心地になる可能性を秘めています。
この記事の内容はかなり搔い摘んだ話です。
更にvimの基礎を深めたい方はターミナルでvimtutor
と入力してvimのチュートリアルレッスンを開始できます。
テキストを読み進めながらいろいろやってみてください。
次回以降は今回扱えなかったビジュアルモードやコマンド、vimrc、プラグインの話に入っていく予定です。