vimでユーザー定義コマンドを置き換える vim-altercmd

vimmerのみなさま、こんにちは。vimのカスタマイズははかどっていますか?

vimを便利にカスタマイズしていく際に、便利なコマンドを自分で定義することがあります。

独自のコマンドを定義できることはとてもありがたいことなのですが、、、
vimで独自のコマンドを定義する際には、そのコマンドの先頭は大文字で始まらなければならないという制約があります。

vimでコマンドを使用する際には:(コロン)を打ち、その後にコマンドを入力しますが、このユーザー定義コマンドは大文字から始まらなければならない制約のせいで、いちいちシフトまで指を運ばなければならず、これが案外面倒臭かったりします。

そこで今回は、ユーザー定義コマンドを小文字始まりのコマンドで置き換えて、タイプの手間を省こうというお話です。

 

参考:私が使用している便利なプラグイン一覧
vim とても強力なプラグインたち

 

vimの制約 ユーザー定義コマンドは先頭が大文字

vimで独自のコマンドを定義することが多々あると思います。

このようなカスタマイズを行なっている方はすでにご存知だと思いますが、vimでコマンドを定義する際には、そのコマンドの先頭は大文字でなければならないという制約があります。

つまり、Myroboticsというコマンドは定義できてもmyroboticsというコマンドは定義できません。

 

実際に例をみてみましょう。
以下のように、’Hello!’という文字列を表示する関数をコマンドとして割り当ててみます。

function! ShowHello()
	echo 'Hello!'
endfunction

command! Greeting call ShowHello()   ---> 大文字で始まっているのでOK
command! greeting call ShowHello()   ---> 小文字で始まっているのでNG

このようにShowHello()という関数を呼び出すコマンドを Greeting、 greeting の2パターンで定義してみると、先頭が大文字のものは大丈夫なのですが、先頭が小文字のものを定義すると、以下のようなエラーメッセージが表示されます。

E183: User defined commands must start with an uppercase letter

 

先頭が大文字で始まるコマンドしか定義できないのは、おそらく、既存のコマンドを上書きできないようにするためのvim側の配慮だと思いますが、、、

このためにわざわざShiftキーまで指を運ぶのが結構面倒臭かったりします。

 

コマンドを置換してくれるプラグイン vim-altercmd

そこで登場するのが、コマンドを置換してくれるプラグイン、kana/vim-altercmdになります。
gitにて公開されており、簡単に使うことができます。

使い方としては、一度先頭が大文字のコマンドを定義しておき、その後にvim-altercmdにてそのコマンドを先頭が小文字のものに置換するといった流れになります。

 

vim-altercmdの使い方

例を見せた方が早いと思いますので、以下にサンプルを載せておきます。

例えば、プラグイン管理ツールdeinを使っている方はこのようになります。

[[plugins]]
repo = 'kana/vim-altercmd'
hook_add = '''
	call altercmd#load()
	AlterCommand greeting Greeting
'''

neobundleやその他プラグイン管理ツールを使用している方は、そちらの書式に合わせてご使用ください。

 

使い方はいたってシンプルです。

call altercmd#load()
最初に、altercmdを使いますよ。という宣言をします。

AlterCommand <置換コマンド> <置換対象>
あとはこのような書式に従って、置換したいコマンドを列挙していくだけです。
置換コマンドはもちろん小文字から始まっていても大丈夫です。

 

 

以上、vim-altercmdの使い方についてでした。

 

参考:私が使用している便利なプラグイン一覧
vim とても強力なプラグインたち