LoginSignup
5
4

More than 5 years have passed since last update.

C言語のプロトタイプ宣言を楽に追加するVimプラグイン - C-prototype.vim

Last updated at Posted at 2015-11-30

こんにちは、皆さん。VimでC言語してますか? 僕は大学でCプログラミングの授業があってやってます。面白いもので、気づけば時間が結構経っているものです。でも、周りにVimmerが全くと言っていいほどいないのです。大学が安易に Emacs を勧めやがって・・・
それはさておき、僕は大学の授業でもっぱらVimでしてますが、一つ面倒なことがあります。僕は自前の関数を main の後に書く派なので、関数プロトタイプ宣言が必要となります。
:(行数)yy:(main関数の位置)p$r;
としているのですが、これ、どうにかなりませんかね??正直面倒です。

そこで、Vim Scriptの乏しい知識を使って自前でプラグインを作ってみました。その名も、C-prototype.vimです。

導入

shima-529/C-prototype.vim で公開してるのでこちらからどうぞ。
NeoBundle を使っている方なら、以下を .vimrc やらに追加すれば動くはずです。

.vimrc
NeoBundleLazy 'shima-529/C-prototype.vim', {
    \ 'autoload' : {'filetypes' : ['c', 'cpp']}
    \ }

使い方・設定

簡単にこのプラグインの使い方を紹介します。いずれもノーマルモードで作動します。
まずは使うためにはキーバインドの設定が必要です。

  1. プロトタイプの追加・更新
    nmap <任意のキー> <Plug>(c-prototype-make).vimrc に記述してください。デフォルトでは z に割り当てられています。
  2. プロトタイプの削除
    nmap <任意のキー> <Plug>(c-prototype-delete).vimrc に記述してください。デフォルトでは dz に割り当てられています。

さらに、デフォルトのキーを利用しない場合(キーバインドの変更をした場合・キーバインドを一切使用しない場合)、let g:c_prototype_no_default_keymappings = 1 も追加してください。

1. プロトタイプの追加・更新

関数プロトタイプ宣言を追加できます。追加位置は main 関数の直前です。空行 + 関数プロトタイプ宣言 + 空行 が追加されます。上のキーを押して実行してもいいですし、:CPrototypeMake を打ち込むことでも実行できます。
e.g.

Before
#include <stdio.h>
int main(void){
    ...
}

void f1()
{
    ...
}

double f2(int param){
    ...
}

After
#include <stdio.h>

void f1();
double f2(int param);

int main(void){
    ...
}

void f1()
{
    ...
}

double f2(int param){
    ...
}

なお、下の関数自体の引数や型を変更した場合も、このタイミングで z を押せば更新されます。

2. プロトタイプの削除

追加した関数プロトタイプ宣言を削除できます。これは1.のコマンドで作成した関数プロトタイプ宣言だけではなく、手打ちで追加したものも削除してくれます。:CPrototypeDelete を打ち込むことでも実行できます。

動作している様子

proto.gif
キーボード叩くの遅ぇよ!って感じですがご容赦ください。

最後に

いやぁ〜、自分の書いたプログラムが動くなんて最高ですね!コードが幼稚でも頭のなかの構想と実際の挙動が一致した時の快感はヤバイです。かくいう僕は進振りで情報系に進む気ゼロですがね。

僕はこの C-prototype.vim で色々とコードを書いてますが、今のところ不具合はありません。このプラグインが少しでもあなたのプログラミングの一助になれば、これ以上の幸せはないです。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4