こんにちは、皆さん。VimでC言語してますか? 僕は大学でCプログラミングの授業があってやってます。面白いもので、気づけば時間が結構経っているものです。でも、周りにVimmerが全くと言っていいほどいないのです。大学が安易に Emacs を勧めやがって・・・
それはさておき、僕は大学の授業でもっぱらVimでしてますが、一つ面倒なことがあります。僕は自前の関数を main
の後に書く派なので、関数プロトタイプ宣言が必要となります。
:(行数)
→yy
→:(main関数の位置)
→p
→$
→r;
としているのですが、これ、どうにかなりませんかね??正直面倒です。
そこで、Vim Scriptの乏しい知識を使って自前でプラグインを作ってみました。その名も、C-prototype.vim
です。
導入
shima-529/C-prototype.vim で公開してるのでこちらからどうぞ。
NeoBundle
を使っている方なら、以下を .vimrc
やらに追加すれば動くはずです。
NeoBundleLazy 'shima-529/C-prototype.vim', {
\ 'autoload' : {'filetypes' : ['c', 'cpp']}
\ }
使い方・設定
簡単にこのプラグインの使い方を紹介します。いずれもノーマルモードで作動します。
まずは使うためにはキーバインドの設定が必要です。
-
プロトタイプの追加・更新
nmap <任意のキー> <Plug>(c-prototype-make)
を.vimrc
に記述してください。デフォルトではz
に割り当てられています。 -
プロトタイプの削除
nmap <任意のキー> <Plug>(c-prototype-delete)
を.vimrc
に記述してください。デフォルトではdz
に割り当てられています。
さらに、デフォルトのキーを利用しない場合(キーバインドの変更をした場合・キーバインドを一切使用しない場合)、let g:c_prototype_no_default_keymappings = 1
も追加してください。
1. プロトタイプの追加・更新
関数プロトタイプ宣言を追加できます。追加位置は main
関数の直前です。空行 + 関数プロトタイプ宣言 + 空行 が追加されます。上のキーを押して実行してもいいですし、:CPrototypeMake
を打ち込むことでも実行できます。
e.g.
# include <stdio.h>
int main(void){
...
}
void f1()
{
...
}
double f2(int param){
...
}
↓
# include <stdio.h>
void f1();
double f2(int param);
int main(void){
...
}
void f1()
{
...
}
double f2(int param){
...
}
なお、下の関数自体の引数や型を変更した場合も、このタイミングで z
を押せば更新されます。
2. プロトタイプの削除
追加した関数プロトタイプ宣言を削除できます。これは1.のコマンドで作成した関数プロトタイプ宣言だけではなく、手打ちで追加したものも削除してくれます。:CPrototypeDelete
を打ち込むことでも実行できます。
動作している様子
最後に
いやぁ〜、自分の書いたプログラムが動くなんて最高ですね!コードが幼稚でも頭のなかの構想と実際の挙動が一致した時の快感はヤバイです。かくいう僕は進振りで情報系に進む気ゼロですがね。
僕はこの C-prototype.vim
で色々とコードを書いてますが、今のところ不具合はありません。このプラグインが少しでもあなたのプログラミングの一助になれば、これ以上の幸せはないです。