SEしゅん君の雑記帳

若手SEのしゅんが、システム開発、資格、心理学について綴ります。

サクラエディタでC言語での開発を行う際、知っていると便利な機能と使い方のコツ!

 

こんにちは。しゅんです。

 

私は現在、仕事でC言語を用いた開発を行っています。

そこでは、プログラミングの際、IDEを用いていません。

ですので、テキストエディタでソースコードをファイルに直書きしています。

 

私は以前のプロジェクトでは、IDEを使ってC#やjavaの開発を行っていました。

開発には、IDEを用いるのが当然だと思っていました。

  

ですので、IDEを使わないと聞いたとき、

・関数の定義元に飛びたいときにはどうするんだ?

 IDEならファンクションキー一つで定義元にジャンプできるけど。。。

 まさか、全部のファイルを開くしかないのか?

・関数の参照元を調べるにはどうするんだ?以下同上。。。

といったことが真っ先に浮かびました。

 

しかし、テキストエディタの一つであるサクラエディタには、プログラミングを手助けする機能が搭載されています。また、無償であることもうれしいところです。

 

私はサクラエディタの使い方を学び、現在では問題なく開発ができています。

 

システム開発の現場において、プロジェクトによっては、IDEではなく、テキストエディタを使って開発することもあると思います。

 

そこで、この記事ではサクラエディタの便利な機能と使い方のコツを紹介します。

(C言語を例に説明します。) 

 

意識しているかどうかで差がつく細かいポイントも紹介します。

サクラエディタを長年使っている方も、新たな気づきがあるかもしれませんよ!

サクラエディタをおすすめする理由

 

テキストエディタには、他にも、「メモ帳」や「秀丸エディタ」等があります。

 

なぜ、サクラエディタが良いのでしょうか。

 

まず、「秀丸エディタ」は基本的に、有料です。

「基本的に」と書いたのは、実は無料で使い続けることも可能だからです。

 

秀丸エディタは試用期間が過ぎると、起動後に以下の画面が表示されるようになります。

秀丸エディタ

秀丸エディタ

しかし、毎回上の画面で、「私はまだ秀丸エディタをそれほど使い込んでいません。」をクリックするのは心苦しいので、小心者には向いていません。

それに、正直毎回画面が表示されるのはうっとうしいです。

 

また、Windowsに標準搭載の「メモ帳」は、IDEの代わりとなるような機能がそもそもありません。

 

例えば、現在開いているファイル内での文字列検索くらいはできますが、開いていないファイルも含めた文字列検索などができません。

 

それと、メモ帳では同じファイルを複数の異なる画面で開くことができてしまいます。

その際、少しまずいことが起こりえます。

 

試しに以下の操作をしてみましょう。

 

メモ帳でsample.txtというファイルを作成し、保存します。

そのファイルをダブルクリックして開いた後、再度ダブルクリックして開きます。

同じファイルを違う画面で開いた状態になるわけです。

 

サンプル2画面

サンプル2画面

 

片方の画面で文字を打ち込み、保存します。(例「ああああああ」)

 

サンプルあああ

サンプルあああ

 

もう片方の画面で違う文字を打ち込み、保存します。(例「いいいいいい」)

 

サンプルいいいいいい

サンプルいいいいいい

両方の画面を閉じます。

再度、sample.txtを開いてみましょう。

すると以下のように後の画面で保存した内容「いいいいいい」になっており、先の画面で保存した「ああああああ」は失われてしまいました。

 

いいい

いいい

これは、「ああああああ」で保存したときは、確かに「ああああああ」になるのですが、「いいいいいい」の保存時に上書きされてしまったわけです。

メモ帳だとこのようなミスが起こりえます。実際、私も経験があります。

 

サクラエディタであれば、同じファイルを複数回ダブルクリックしても、既に開いている場合、別画面を立ち上げないので安全です。

 

サクラエディタをお勧めする理由をお分かりいただけたでしょうか。 

 

サクラエディタの便利機能

 

さて、いよいよサクラエディタの便利機能を紹介していきます。

 

特定の文字列を含むファイルを検索する方法

 

Grepという機能があります。 

指定したフォルダの配下から、指定した文字列を含むファイルを検索する機能です。

 

この機能を使えば、C言語の関数や構造体の定義元や、それを使用している箇所があるファイルを調べることができます。

 どのファイルの何行目にあるかも教えてくれるので便利です。

 

ボタンは下記の箇所にあります。

Grep機能

Grep機能

 

ボタンを押すと、以下の画面が表示されます。

Grep条件入力

Grep条件入力

・条件

 検索したい文字を入力します。

 

・ファイル

 検索対象のファイル名、拡張子を指定します。

 *.*の場合、すべてのファイルが対象になります。

 

・フォルダ

 検索対象のファイルが存在する可能性のあるフォルダを指定します。

 

ここで、ポイントがあります。

「ファイル」の欄を、最初から設定されている *.* に設定したまま検索しないでほしいのです。なぜなら、効率が悪いからです。

 

考えてみてください。

検索したい文字列が記述されたファイル名は分からなくても、拡張子はある程度推測できるはずです。

なぜなら、文字列を記述するファイルの拡張子は限られているからです。

代表的なのは、.txt でしょう。

C言語のソースファイルであれば、拡張子が.c や.hのファイルが対象になるでしょう。仮に、画像ファイルもソースとして組み込んでいる場合でも、そもそも.png等の拡張子のファイルが、文字列検索の対象になるはずがありません。

 

私は使い始めの頃、この点を意識しておらず、毎回 *.* のままで検索していました。

時間のロスをしていました。

使うのに慣れたと思っても、意識していないと気づかないものですね。

 

したがって、必ず拡張子は絞るようにしてください。

 

また、 「サブフォルダからも検索する」にチェックを入れることで、サブフォルダからも検索できます。

システムのソースファイルのように、フォルダ階層が深く、ファイルの数も多い場合、基本的にチェックを入れて使うことがほとんどだと思います。

 

さて、前置きが長くなりましたが、実際に検索してみましょう!

 

今回は、sourceフォルダの中から、「method」という文字列が記述されたファイルを検索します。

その場合、下の図のように入力します。

 

Grep実演

Grep実演

「ファイル」欄には、スペースを空けることで、複数の条件を指定しています。

入力できたら、「検索」ボタンをクリックします。

 

結果は以下のようになります。

 

Grep結果

Grep結果

「method」を持つファイルは、図の二つだったようです。

 

ここで、sample.cを開きたい場合、直接11行目をクリックしてください。

すると、sample.cを開いてくれます。

 

わざわざ該当のフォルダに移動しなくてもよいので楽ですね。

 

以上、Grep機能でした。

 

複数行の途中の一部分を切り出す方法

 

コピーしたい箇所が、複数の行にまたがっており、かつ、そのうちの一部分のみコピーしたいという場面があると思いませんか?

 

例えば、下の図のような場合です。 

矩形選択例

矩形選択例

data[ ]内の0xBBの部分だけをdata2[ ]の0xAAと0xCCが3行にまたがっている箇所に挿入したいというケースです。

 

このとき普通にマウスでドラッグすると以下のように0x00の部分も選択されてしまいます。

通常選択

通常選択

そのときに役立つのが、「矩形(くけい)選択」です。

やり方は簡単です。

Altキーを押しながら、該当箇所をマウスでドラッグして選択するだけです。

Altキーを先に押すことに注意してください。

 

以下のように該当箇所だけ選択できます。

矩形選択後

矩形選択後

 

選択したら、Cntl + C でコピーし、data2[ ]の左上の0xCCにカーソルを当て、Cntl + Vで貼り付けます。

 

貼り付け後

貼り付け後

サクラエディタは賢いので、挿入先が複数行にまたがっている場合でも、挿入先の行を崩さずに、貼り付けてくれます。

 

簡単にデータを挿入することができましたね!

 

また、矩形選択は以下のような使い方もできます。

以下の図を見てください。

 

「以下はC言語のバイナリデータです。・・・」から始まる3行があります。

この部分はソースコードではないので、コメントアウトしないとコンパイルでエラーになります。

コメントアウトするには、行の頭に「//」をつければいいのですが、複数のすべての行に「//」を手で一つ一つ入れるのは面倒くさいですよね。

 

このとき、矩形選択が力を発揮します。

 

まず、24行目にカーソルを当てて、Altキーを押しながら、24行目から26行目までをマウスでドラッグします。

 

コメントアウト

コメントアウト

 

そうすると、サクラエディタの画面の左下に

0 col (opt) * 3 lines selected.

と表示されます。

 

選択後

選択後

これは、3行を0列選択した、つまり、3行の各行の先頭を選択したことになります。

 

そして、「//」と入力します。

 

コメントアウト後

コメントアウト後

 

見事、3行に一括で「//」を入力することができました。

 

シェルスクリプトの場合は「#」 がコメント文字なので、同じ方法で「#」を入れれば、複数行を一括でコメントアウトできます。

 

また、コメント文字を削除したいときは、各行の頭のコメント文字を矩形選択して、Delキーを押せば、一括でコメントアウトを解除できます。

 

インデント文字の設定方法

 

インデント文字とは、タブを押したときに入力される文字のことです。

デフォルトでは、「^」になっています。

 

このとき、「^」のままだとシステム開発で困ることがあります。

 

システム開発では、SVNやGit等でソース管理を行うのが通常です。

サーバーにあるソースファイルのインデント文字が「^」ではなく、半角スペース4文字分になっているのに、ローカルのファイルのインデントが「^」であると、その箇所も差分として表示されてしまいます。

 

かといって後になって変換するのは面倒です。

事前に設定しておきましょう。

 

「設定」メニューの「タイプ別設定」をクリックします。

タイプ別設定

タイプ別設定

 

表示された画面の「TAB表示」の箇所を「文字指定」を選択し、右のテキストボックスの「^」と入力されているところを削除します。

このとき半角スペースが残らないようにしてください。

 

タイプ別設定画面

タイプ別設定画面

以降、サクラエディタ上でTabキーを押すと、「^」なしで半角スペース4つ分右に

移動することができるようになります。

 

入力補完機能

 

単語の最初の数文字を入力しただけで、候補となる単語のリストを表示できる機能です。

例えば、defineと入力したいとき、「d」と入力した後、「Ctrl」を押しながら「Space」を押すと、「d」から始まる単語の一覧を表示することができます。

そして、候補から「define」を選択してEnterを押せば確定できます。

 

入力補完C言語

入力補完C言語


ただし、C言語で使われる予約語を候補に表示させたい場合は、事前にファイルの拡張子を .c に変換しておく必要があります。

 

また、現在開いているファイルに既に存在する単語も候補に表示させることができます。

 

まず、「編集中のファイル」にチェックを入れます。

 

編集中のファイル

編集中のファイル

そして、既に存在する文字を先頭から何文字か入力し、「Ctrl」を押しながら「Space」を押します。

下記の例では、「me」と入力しました。

 

入力補完同じファイル内

入力補完同じファイル内

このファイルには、「method」と「method2」という文字列が存在するので、候補にはこの二つが表示されました。

 

いかがでしたでしょうか。

 

この記事を読んでくださるあなたは、IDEを使用しないプロジェクトにアサインされた際、必ずサクラエディタなどの開発に便利なエディタを使うようにしましょうね。

 

↓C言語のプロジェクトに配属されたときに僕を救ってくれたのがこの本です。