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

More Related Content

PDF
Vimはこわくない
PDF
neobundle.vimについて+おまけ
PDF
Tech oyaji ksmakoto_presen
ODP
Vimperator abc
PDF
Unite vim
PDF
VBScriptのダメなところ~その1~
PDF
WSHで遊ぼう!
PDF
Cygwin 1.7 の紹介
Vimはこわくない
neobundle.vimについて+おまけ
Tech oyaji ksmakoto_presen
Vimperator abc
Unite vim
VBScriptのダメなところ~その1~
WSHで遊ぼう!
Cygwin 1.7 の紹介

What's hot (19)

PDF
Vim = VM
PDF
Shougoの開発環境
PDF
neovim = VM
PDF
NanoStrand
PDF
Contao Open Source CMS / Contao 3.3に向けて
PDF
Happy status Coding
ODP
Lt
PDF
汎用apiサーバの構築
PDF
そろそろSublime Text 2を熱く語ろうと思う
PDF
Nodejsによるapiサーバ構築事例
PDF
Ruby on FreeBSD 2020
PDF
俺のGentooがこんなに可愛いわけがない
PDF
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
PDF
SDK for NFC Starter Kit(2) 使ってみる
PDF
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
ODP
PHP With Windows binary
PDF
Tide - SmalltalkでSPA
PPTX
Argosの紹介 #x86study
Vim = VM
Shougoの開発環境
neovim = VM
NanoStrand
Contao Open Source CMS / Contao 3.3に向けて
Happy status Coding
Lt
汎用apiサーバの構築
そろそろSublime Text 2を熱く語ろうと思う
Nodejsによるapiサーバ構築事例
Ruby on FreeBSD 2020
俺のGentooがこんなに可愛いわけがない
FreeBSD と xrdp と私 〜FreeBSD developerになるまで〜
SDK for NFC Starter Kit(2) 使ってみる
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
PHP With Windows binary
Tide - SmalltalkでSPA
Argosの紹介 #x86study
Ad

Viewers also liked (9)

PDF
Vim script と vimrc の正しい書き方@nagoya.vim #1
PDF
すごいVimでhaskellを書こう@なごやまつり
PDF
(初心者向け) Vim の機能紹介@nagoya.vim #1
PDF
Vim の開発環境
PDF
Using xvim with macvim
PDF
VimConf 2014 from deris0126
PDF
Let's talk about neovim
PDF
Auto closing parenthesis @vim conf2014
PDF
かなりすごい発表(かなり) at VimConf2014
Vim script と vimrc の正しい書き方@nagoya.vim #1
すごいVimでhaskellを書こう@なごやまつり
(初心者向け) Vim の機能紹介@nagoya.vim #1
Vim の開発環境
Using xvim with macvim
VimConf 2014 from deris0126
Let's talk about neovim
Auto closing parenthesis @vim conf2014
かなりすごい発表(かなり) at VimConf2014
Ad

Similar to Nagoya vim #1 about plugins (20)

PDF
Goでかんたんソースコードの静的解析
PDF
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
 
PPTX
Golang tokyo #7 qtpm
PDF
kyotovim#1
PDF
Vim の話
PDF
#logstudy 01 rsyslog入門
PPTX
20130316 プログラミング言語Go
PPTX
Gstreamer Basics
PDF
Programming camp 2008, Codereading
PPT
メタプログラミングって何だろう
PDF
ネットワークコマンド入力に対応したツール事例
PPTX
Packerで自動化
PDF
ソフトウェア工学2023 14 ビルド
PDF
Plugman code-reading
PDF
Al mininum 47redmine-2nd
PPTX
20140926 mt cloud_handson_seminar
PPT
MRTGの導入と運用
ODP
サンドボックス化によるセキュアなプログラミング
PDF
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
PDF
アクセス・ログ取得システム導入の考察(完全版)
Goでかんたんソースコードの静的解析
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
 
Golang tokyo #7 qtpm
kyotovim#1
Vim の話
#logstudy 01 rsyslog入門
20130316 プログラミング言語Go
Gstreamer Basics
Programming camp 2008, Codereading
メタプログラミングって何だろう
ネットワークコマンド入力に対応したツール事例
Packerで自動化
ソフトウェア工学2023 14 ビルド
Plugman code-reading
Al mininum 47redmine-2nd
20140926 mt cloud_handson_seminar
MRTGの導入と運用
サンドボックス化によるセキュアなプログラミング
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
アクセス・ログ取得システム導入の考察(完全版)

Nagoya vim #1 about plugins