Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

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

$
0
0

こんにちは。皆さん、VimでC言語してますか?
僕は大学の授業でもっぱら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']}
    \ }

C++は、クラス内メソッドがあるので今のところ使用しないほうがいいです(この理由はこのプラグインのコードを見てもらえれば分かります)。

使い方

簡単にこのプラグインの使い方を紹介します。いずれもノーマルモードで作動します。

1. zコマンド

このキーを押すことで、関数プロトタイプ宣言を追加できます。追加位置は #で始まる最後の文の下です。空行 + 関数プロトタイプ宣言 が追加されます。
e.g.

Before
#include <stdio.h>intmain(void){...}voidf1(){...}doublef2(intparam){...}

After
#include <stdio.h>voidf1();doublef2(intparam);intmain(void){...}voidf1(){...}doublef2(intparam){...}

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

2. dzコマンド

見ればわかると思いますが、関数プロトタイプ宣言を削除するコマンドです。これは zコマンドで作成した関数プロトタイプ宣言だけではなく、手打ちで追加したものも削除してくれます。

動作している様子

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

既存のバグ

  • ファイル内にプリプロセッサ処理をする文がないと、実行時に追加された部分の末尾が {のままとなる。それ故、更に zを押すとその部分が無限増殖する   ← 11/30 18:40頃修正
  • zコマンドを叩いた後にUndoしたいときは、zを叩いた回数分 uしなくてはならないので面倒 (現状、知識不足なので解決不可)

最後に

いやぁ〜、自分の書いたプログラムが動くなんて最高ですね!コードが幼稚でも頭のなかの構想と実際の挙動が一致した時の快感はヤバイです。かくいう僕は進振りで情報系に進む気ゼロですがね。
使ってて何かやばそうなバグとか、ここのコードはこうした方がいいよ〜とかあったら是非コメントまでどうぞ。できる範囲で対応したいと思います。
あと、コードを見てもらえれば分かる通り、ひっどいコードです。一般性はないわ、正規表現は怪しいわ、関数で分けてないわで、僕が見てもウンコードです。これからの課題は、まず正規表現関数呼び出しだと分かりました。

あ、いや、これは別に「使わないほうが良いョ」って言う訳ではありません。むしろ使ってください。色々なコードを書いてますが、今のところ不具合はありません。このプラグインが少しでもあなたのプログラミングの一助になれば、これ以上の幸せはないです。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>