プラグインって何? おいしいの?

VimM#2
kana <http://whileimautomaton.net/>

予定

プラグインとは何か

プラグインの種類

global plugin

filetype plugin

compiler plugin

プラグインのファイル構成

doc/{plugin}.txt
ドキュメント(:helpで読める)
plugin/{plugin}.vim
プラグイン本体(普通は)
その他いろいろ

プラグインのインストール方法

doc/{plugin}.txt
-->  ~/.vim/doc/{plugin}.txt
plugin/{plugin}.vim
-->  ~/.vim/plugin/{plugin}.vim

help tagsの更新

:helptags ~/.vim/doc

プラグインの使い方

Exコマンド編

Exコマンドとは

  • :edit:writeなどのこと
  • (:e:wの方が馴染み深い?)
  • (単に「コマンド」だとNormal modeのコマンドと区別が付かない)

サンプル: narrow

http://www.vim.org/scripts/script.php?script_id=2097

プラグイン独自のExコマンドが提供される

:{range}Narrow
指定範囲のみを表示
:Widen
:Narrowの解除

Key mappings編

Key mappingsとは

  • (短い答) キーバインドのようなもの
  • (長い答) あるキーシーケンスを別のキーシーケンスに変換する機能、あるいはその変換規則
  • 詳細: Vim: Key mappingを極める

サンプル: surround (1)

http://www.vim.org/scripts/script.php?script_id=1697

プラグイン独自のkey mappingsが提供される

cs'"
カーソル位置を括る「'」を「"」に変更
ysi})
「{...}」の内側を「(」「)」で括る

サンプル: surround (2)

カスタマイズなど

<Plug>Ysurround
プラグイン独自の機能を表す架空のキー(シーケンス)
利用例
nmap s  <Plug>Ysurround

関数編

関数とは

  • Exコマンドの羅列をまとめたもの
  • 値を返せる (Exコマンドは返せない)
  • 引数の授受が簡単 (Exコマンドでは困難)

サンプル: smartchr (1)

http://www.vim.org/scripts/script.php?script_id=2290

プラグイン独自の関数が提供される

smartchr#one_of(...)
カーソル付近のテキストに応じた値を返す

サンプル: smartchr (2)

inoremap <expr> =
\ smartchr#one_of(' = ',
\                 ' == ',
\                 '=')
  • =で「 = 」、「 == 」、「=」が順々に入力される

autocmd編

autocmdとは

  • 各種イベントに応じて自動的に実行されるコマンドのこと

サンプル: netrw

http://www.vim.org/scripts/script.php?script_id=1075 (標準添付)

何もしなくても自動的に有効になっている

:edit http://www.vim.org/
http:/www.vim.org/を編集
:write scp://host/path/file
SSH経由で保存

より詳しい使い方

プラグインの探し方

www.vim.org (Vimの公式サイト)
あらゆるプラグインは十中八九ここにある
Ratingやダウンロード数も参考に
便利なプラグインはrateする(重要)
口コミ情報
はてブの注目エントリーなど
lingr.vim-users.jpで聞く (宣伝)

まとめ

質疑応答