vim-altercmdの設定にハマった
そもそもvim-altercmdとは
vim-altercmdとは, vimのExコマンドを独自のコマンドに置き換えることができるようになるプラグイン
長ったらしいコマンドを短縮したものに置換することができる(๑╹ڡ╹๑)べんりぃ〜
今回は, よく打つ上に長い:NeoBundleInstall
を例にしていく.
:NeoBundleInstall -> :ni " pluginのコマンドを短縮することができる
vim-altercmdは2つある
kana/vim-altercmdとtyru/vim-altercmdの2つがあり,
- kana : オリジナル
- tyru : kana/をforkし改良したもの
だそう.
僕が使ってるのはtyruさんの方です. 詳しくはこちら. オリジナルのkana版とtyru版の違い / tyruさんのblog
やりたかったこと
tyru/vim-altercmdを使って.vimrc内からコマンドを短縮する.
:NeoBundleInstallを
を :ni
に置換したい.
altercmdでガッツリはまった
様々なサイトを巡回して設定方法を調べると下のような例が出てきた.
.vimrc
NeoBundle 'tyru/vim-altercmd' call altercmd#load() # vim-altercmdを有効にする AlterCommand NeoBundleInstall ni # コマンドの設定
vimを再起動する.
line 63: E117: Unknown function: altercmd#load line 64: E492: Not an editor command: AlterCommand NeoBundleInstall ni
call altercmd#load()
なんて関数知らないと言われてしまう.
しかも, AlterCommand
はvimコマンドじゃねぇ って言われてる...orz
altercmd#load()
そもそも使えないんじゃないかと思って調べた結果, このサイトの方法で設定すると上手く行くことが判明.
最近導入したvimプラグインをまとめる
以下, 抜粋
.vimrc
" call altercmd#load() autocmd User Rails AlterCommand r R autocmd User Rails AlterCommand rc Rcontroller autocmd User Rails AlterCommand rm Rmodel autocmd User Rails AlterCommand rv Rview
autocmd User Rails
はrailsプロジェクトでのみ動作するよってこと.
altercmd#load()をコメントアウトすると,この設定はエラーもなく上手くいった.
どうやらautocmd
がミソらしい.
autocmd
についてはここを参考にした.
autocmd
は何らかのeventが起きた時にpat(正規表現)で指定されたファイル形式であれば自動でcmdを行うコマンドだそう.
:au[tocmd] [group] {event} {pat} [nested] {cmd} {pat} 正規表現に一致するファイル. {event}のときに自動的に実行するコマンドのリストに、{cmd} を加える. {cmd} は常に既存の自動コマンドの後に追加されるので、自動コマンドは指定された順に実行される. ## [group]と[nested]は使わないので省略. ##
今回は, 新しいfile / 既存fileが読み込まれた時{event:BufRead},どのようなファイル{pat:*.*}であってもコマンド{cmd}を有効にしたい.
そこで, 上記サイトを参考にしながら以下の設定を行った.
.vimrc
" call altercmd#load() エラーを吐くのでコメントアウト autocmd BufRead *.* AlterCommand ni NeoBundleInstall
保存後, vimを再起動.
これで, :NeoBundleInstall
が:ni
だけで実行できる.
もちろん, 他のコマンドでも適応できる. 半日くらいこれで飛んでしまった...
autocmdの勉強にもなったので時間の無駄ではなかったかな.
vimrcを拡張していくのは時間を忘れてしまうʕ̡̢̡ʘ̅͟͜͡ʘ̲̅ʔ̢̡̢