プログラミング演習1 Tips

ここでは,プログラミング演習にとどまらない,先を見据えたプログラミング環境構築のためのTipsを紹介する.

※受講生の皆さんへ,TAは,必ずしもこのページの内容を熟知していない可能性があります.

基本知識

この基本知識に書いてあるぐらいの内容は,演習1が終わるころには身についているはずです.

工学基礎実験実習のことも思い出してください.

  • C-xは,Ctrlキーを押しながら,xキーを押す,という意味

  • M-xは,Altキーを押しながら,xキーを押す,という意味

  • 様々な箇所で,TABキーを押すことで入力補間ができる(ファイル名補間,コマンド補間,etc.)

Linux

  • Linuxの端末では:

    • ls -alは,ディレクトリ内のファイル一覧を表示

    • cdは,カレントディレクトリの移動 (change directory)

      • /は,ディレクトリの区切り記号.eop1/db-sample.cは,eop1というディレクトリ内のdb-sample.cというファイル,という意味.

      • ~は,自分のホームディレクトリ

      • .は,カレントディレクトリ

      • ..は,親ディレクトリ.例えば,~/eop1/../db-sample.cは,~/db-sample.cと同じ.

    • mvは,ファイルやディレクトリの移動/リネーム (move)

    • rmは,ファイルの削除 (remove)

  • Linuxの端末上で何かコマンドを実行しているとき:

    • C-c強制終了

    • C-z一時停止

      • fgコマンド (foreground) で,実行を再開する.

      • bgコマンド (background) で,バックグラウンドで実行する.(参照:&

      • jobsコマンドで,実行中のコマンドの一覧を表示する.

    • C-d入力ストリームを閉じる(=キーボードからの入力を終了する)

Emacs

$ emacs . &
# あるいは
$ emacs my-program.c &

画面最下部のエコーエリアにも注意しつつ...

  • C-gキャンセル  ※困ったらC-gで,大体はキャンセルできる

  • C-x C-s保存

  • C-x C-c終了

  • C-s検索

Gcc

$ gcc -Wall -o my-program my-program.c

LaTeX

$ edu-uplatex reportA_09B22xxx.tex

自習環境でedu-uplatexがない場合は,

$ uplatex reportA_09B22xxx.tex
$ uplatex reportA_09B22xxx.tex
$ dvipdfmx reportA_09B22xxx.dvi

uplatexの実行時にエラーが発生し,?の様に何らかの入力を求められる状態になったときは,xと回答すると,終了できる.

Emacsのカスタマイズ(1)

基本設定

  • ~/.emacsというファイルがある場合は,消すか,中身を~/.emacs.d/init.elに書き写すべし.

  • 教育用計算機のページを読み,まずは最低限の設定をしておこう

  • 余裕がある人は,以下もやっておくとさらに便利・・・かも?

Emacs - 禁断の(?)CUA-mode

Menuバーの Options --> Use CUA Keys にチェックを入れると,一部のキーバインドが変更され,Windowsでよく使う操作が利用できます.いわゆる,Ctrl + z, x, c, v あたりのキーです.

GUIで変更した設定は,Options --> Save options で保存すると,次回以降も有効なままとなります.

直接設定を書く場合は,以下の通りです.(GUIで設定変更すると,set-variables の中に書かれます.)

(cua-mode t)

CUA mode では,以下のキーバインドが有効になります.

やりたいこと

Emacs標準キー

CUA mode有効時

文字列の選択(1)

Shift押しながら矢印キーで移動

(同左)

文字列の選択(2)

C-spaceで選択モード開始,矢印キーで移動

(同左)

コピー

M-w

C-c

カット

C-w

C-x

ペースト

C-y

C-v

アンドゥ

C-\

C-z

よく使うC-xC-cを上書きしており,ドキッとするかもしれません.ですが,これらは,文字列選択状態でのみ,効果を発揮するので,C-x C-cで問題なく終了できます.

とはいえ,キーバインドを大幅に変えた環境に慣れてしまうと,未カスタマイズの環境で極端に作業効率が落ちがちなので,要注意です...(なので,本ページの見出しには禁断の(?),とつけています)

頑張らない Emacs の使いこなし術

Emacsには多くのショートカットキーがあり,カスタマイズすることで,より便利になります(なるそうです?).例えば,遠隔地のサーバにsshでログインしてプログラムを書いて・・・なんて場合には,GUIでマウスは使えません.

キーボード入力のみでの作業が必須になります.

が・・・覚えるのは大変ですよね.まずは,いろんな機能を使いこなすことから初めて,少しずつショートカットキーを覚えていきましょう.

Emacsを起動しよう

ファイル名を指定して起動,もいいですが,こんなコマンドを覚えておくと,便利かも?

$ emacs . &       # .というディレクトリ(=カレントディレクトリ)を開く
# あるいは
$ emacs eop/ &    # eopというディレクトリを開く

Emacsでディレクトリ名を指定して起動すると,ディレクトリ内のファイル一覧表示(ls -alに似た表示)が開かれます.ファイル名をクリックするか,カーソルを動かして Enter キーを押せば,ファイルを開けます.

(ディレクトリ一覧のバッファは残っています.バッファが何か?は後述.)

&を付けそびれた・・・という人は,焦らずに.端末内でC-z,そのあとで,bgコマンドを実行しましょう.

プログラミングの作業中,Emacs のフレーム(アプリウィンドウ)を閉じる必要は,ほぼありません.

バッファと表示窓(ウィンドウ)

WindowsやMac的な意味での『アプリのウィンドウ』は,Emacsでは「フレーム」と呼びます(名前は覚えなくてもいい).

  • Emacsでファイルを開くと,「バッファ」内にファイルの内容が書き出されます.

  • 「バッファ」の中身は,「ウィンドウ」に表示させることで,内容を編集することもできるようになります.

  • File -> Close で,「バッファ」が閉じます.「ウィンドウ」は閉じません.

  • 逆に,「ウィンドウ」を閉じても,「バッファ」は閉じません.

画面下部に注目しましょう.ファイル名が見える,色がついたエリアがモードラインです.

_images/Emacs_ModeLine1.png

Figure 12 Emacsのモードライン

  • ファイル名を左クリックすると,次のバッファに移ります.(C-x b)

    • 右クリックで,前のバッファ.

    • ヘルプの mouse-1 は左クリック,mouse-2は中クリック,mouse-3は右クリックの意味.

  • モードラインの何もないところを右クリックすると,その表示窓を閉じます.(C-x 0)

    • 閉じたい表示窓の下にあるモードラインを右クリック,です.

    • 上述の通り,バッファは閉じていません(ややこしいですが,裏では開いたまま,ということです.)

「フレーム」内に,2つの「ウィンドウ」で,同じファイルを開くことも,今回のようなプログラミング作業では有効です.

  • File --> New Window Below (C-x 2) あるいは,on Right (C-x 3) を選ぶ

  • 同じファイルが2つの「ウィンドウ」で開くので,例えば・・・

    • 1つ目のウィンドウでは,関数定義を表示

    • 2つ目のウィンドウでは,関数を利用する場所を表示

数百行もあるソースコードを持つファイルに対して,画面スクロールをして上下のコードを見比べるのではなく,機能を上手く活用して,楽をしましょう.

Semantic minor mode の有効化

ちょっと動作が重いのですが,皆さんの開発を手助けしてくれるはずです.

  • Tools --> Source Code Parsers (Semantic) を有効にする

    • Menuバーに,Development が追加されます.

  • Show Tag Summaries: 関数を利用する記述をするときに,エコーエリア(最下部)に注目!ヒントが現れます.

  • Show Tag Completion: 関数や変数名の補間をしてくれます.例えば,strまで打ち込んで少し待ってみましょう.エコーエリアにも注目.Enterで確定,TAB で切り替えです.

  • Decorate Tags: 関数や構造体の定義場所が,ちょっと目立つようになります.

Speedbar の表示

Semantic mode との連携になりますが,こちらも便利.M-x speedbarで,表示されます(M-x speedぐらいまで入力してから,TABで補完しましょう)

Speedbar 上の空いた場所を右クリック--> Displays から,Files か Buffers のお好みで選んでおきましょう.

  • ファイル切り替えやバッファ切り替えが,一覧を見ながらマウス操作できるので,楽になるはず.

  • Speedbar 上のファイル名の上で,右クリック Speedbar --> Expand File Tags (=) を選択

    • Variables や Functions が表示される場合は,その左の + アイコンをクリックする

_images/Emacs-Speedbar1.png

Figure 13 Emacs の Speedbar.ファイル名の上で = を押すと...

LaTeX の設定とショートカット

上述の別ページで説明した設定をしていれば,メニューの TeX から以下の処理が見つけられるはず.

  • C-c C-fタイプセット (PDF作成)

  • C-c C-vプレビュー

これはショートカットを覚えよう.作業が早くなります.

まとめ

Semantic + Speedbar に関する情報は,CEDET で調べると,より高度な利用方法が見つけられると思います.自分なりの方法を身に着けておきましょう.