Nagoya vim #1 about plugins

5,165 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,165
On SlideShare
0
From Embeds
0
Number of Embeds
2,462
Actions
Shares
0
Downloads
11
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Nagoya vim #1 about plugins

  1. 1. Vim プラグインについて 2013/09/07 @sgur
  2. 2. 自己紹介 ● sgur ● Vim歴5年くらい ● 名古屋で働く組み込み屋さん ● 最近の仕事はASP.NET
  3. 3. お題 ● プラグインの種類 ● プラグインロードのしくみ ● プラグインのインストール ● プラグインの紹介
  4. 4. プラグインの種類 ● 汎用プラグイン ● ファイル形式に関係なく使用されるもの ● ファイルタイププラグイン ● 特定のファイル形式の時のみロードされるもの ● 例えば: – シンタックス定義 – Omni補完 ● カラースキーム ● その他
  5. 5. プラグインロードのしくみ ● runtimepath ● スクリプトが読み込まれるディレクトリのカンマ区切りの リスト – UnixライクOS: $HOME/.vim,$VIM/vimfiles, $VIMRUNTIME,$VIM/vimfiles/after,$HOME/.vim/after – Windows: $HOME/vimfiles,$VIM/vimfiles,$VIMRUNTIME, $VIM/vimfiles/after,$HOME/vimfiles/after ● ユーザーディレクトリ – Windows では %HOME%vimfiles、それ以外の場合は ~/.vim ● runtimepath の各ディレクトリを基準にplugin/, doc/, ftplugin/ といったディレクトリ以下の *.vim ファイルがロードされる
  6. 6. スクリプトのロード ● :scriptnames ● スクリプトを読み込まれた順に一覧する ● プラグインが正常なタイミングでロードされたか確認す るのに便利 – ファイルタイププラグインなのに起動時にロードされた – ファイルを開いたけどプラグインがロードされていない ● autoload ● 関数が実際に呼び出されたタイミングでスクリプトを ロードする仕組み ● 起動時間を短縮できる ● 詳しくは :help autoload
  7. 7. プラグインのインストール(1) ● 単一ファイル ● ~/.vim 以下のフォルダに保存するだけ ● プラグインの場合は plugin/ ● ファイルタイププラグインの場合は ftplugin/ ● カラースキームの場合は colors/ ● シンタックスの場合は syntax/ ● VimBall ● 自動インストールパッケージ ● :source <ファイル名>
  8. 8. プラグインのインストール(2) ● Pathogenフレンドリな形式 ● プラグインのディレクトリをruntimepathに追加すればそ のまま使える形式 foo-bar-plugin/ ● plugin/ ● ftplugin/ ● autoload/ ● … ● github等で公開されているプラグインは大体この形 ● プラグイン毎に runtimepath に手動で追加するの は面倒い…
  9. 9. プラグインマネージャー ● pathogen ● プラグインのロード補助 ● ~/.vim/bundle 以下に保存したプラグインを探索して runtimepath に追加する ● Vundle ● pathogen と同様のロード機能 ● プラグインをメニューから選択してインストールできる ※ https://github.com/vim-scripts/ でホストしているものの み ● NeoBundle ● Vundle をベースに Fork して多機能にしたもの ● 並列アップデート、遅延ロードなど
  10. 10. プラグイン紹介
  11. 11. ヘルプ日本語版 ● いれましょう! ● https://github.com/vim-jp/vimdoc-ja ● kaoriya版 vim には標準でインストール済み
  12. 12. キー操作拡張 (1) Vimのキー操作の基本 (operator){motion}をそれ ぞれ拡張するプラグイン ● vim-operator-user – (operator) の拡張をサポート ● vim-operator-replace … {motion} で指定した領域を置換 ● vim-operator-sort … {motion}で指定した領域をソート ● vim-textobj-user – {motion} のうち、テキストオブジェクトの拡張をサポート ● vim-textobj-indent … 同一インデント ● vim-textobj-comment … コメント部分 ● vim-textobj-between … 任意の1文字に挟まれた領域 ● vim-surround – {motion} の周囲の文字に対して挿入・変更・削除
  13. 13. キー操作拡張 (2) ● f,t,F,T キーの挙動を改善する ● clever-f.vim – f;;… を f連打可能にする ● WiseMan-f – f キー的に移動した後、<C-f>/<C-b>で微調整できる ● easymotion – 「ここらへん」でジャンプ可能 ● * キーの挙動を改善する ● vim-visualstar – ビジュアル領域で選択したテキストで * を実行
  14. 14. 短縮入力 ● smartchr ● 同一キー入力で、入力内容をトグルしたりする ● 例: '.' 入力時に '.' '→'⇔ をトグルする ● smartinput ● smartchrの高機能版 ● ファイルタイプやカーソル位置の文字をベースにより複 雑なルール定義が可能 ● Emmet (ZenCoding) ● Emmet (ZenCoding) の機能を提供する
  15. 15. テキスト整形 ● コメントプラグイン ● caw.vim ● vim-commentary ● tcomment.vim ● テキスト整形 ● vim-alignta ● LastModified 挿入 ● autodate.vim
  16. 16. ファイルタイププラグイン ● シンタックス系 ● キーワード定義 ● インデント設定 ● include, path 等の自動設定など ● 各種言語向けにたくさんあります… ● Omni補完 ● ファイルタイプ別の補完プラグイン ● 外部パーサー等を利用したセマンティック補完 ● Jedi (Python), Tern (Javascript), OmniSharp (C#), gocode (go), ghc-mode-vim(haskell), Vaxe(Haxe) な ど
  17. 17. バッファセレクタ ● FuzzyFinder ● 昔有名だった ● unite.vim ● 国内で主流 ● 多機能 ● プラグインたくさん (grep, 各種ヒストリ, …) ● ctrlp.vim ● コンパクト ● レスポンスが速い ● プラグイン利用可能 (unite.vimほどいろいろない)
  18. 18. ファイラー ● Vimからファイルの一覧、操作が可能 ● NerdTree ● ツリー表示のサイドバー ● VimFiler ● 「あふ」とか「dired」のようなファイラー ● 一括リネームとかができて便利 ● unite.vimが必要 (連携している)
  19. 19. QuickRun ● Vim から使える REPL のようなもの ● バッファ中のコードを直に(コンパイル&)実行可能 ● ファイル形式毎にプリセットが用意されている ● コード中の選択領域のみ実行することも可能 ● 例 ● コードを書きながらビルド&テストして動作を確認 ● Markdownを書きながらpandocでHTMLに変換しブラ ウザで表示
  20. 20. 自動補完 ● トリガキー(<C-n>/<C-p>)なしに補完を開始 ● 独自の補完エンジンを実装したものが主流 ● Neocomplete (neocomplcache) ● vimscript + if_lua で実装 ● 複数の入力ソースから候補を合成できる – 例) 編集中バッファ、tags、インクルードファイル、シンタック ス、etc… ● キャッシュファイルを利用して高速化 ● カスタマイズ対象が多い ● YouCompleteMe ● 補完エンジンが C++ + if_python で実装されており高
  21. 21. スニペット ● コードスニペットを入力するプラグイン ● プレースホルダ間のジャンプ ● スクリプトの評価結果の挿入 ● neosnippet.vim ● neocomplete と連携して自動で候補表示 ● UltiSnips ● if_python で実装 ● YouCompleteMeと連携して自動で候補表示
  22. 22. シンタックスチェック ● コード編集中にエラーを左端のsign領域に表示 ● ファイルタイプ毎に設定が用意されている ● Syntastic ● Watchdogs ● QuickRun を利用
  23. 23. ステータスライン拡張 ● ステータスラインをカラフルに表示する ● 各種プラグインのバッファ専用の色付け ● vim-powerline ● obsolete ● powerline ● python を使って汎用的に実装されている ● airline
  24. 24. バージョン管理 ● vim-fugitive ● 編集中のバッファに対してgitのコマンドを適用できる ● index とのDiffを取って差分毎に git add -p 相当が可 能 ● Gitv ● gitk を vim プラグインとして実装 ● lawrencium ● fugitiveのMercurial版
  25. 25. その他のプラグイン ● https://gist.github.com/sgur/6434642

×