最低限の開発環境を整えるには - -3mm 計算機科学実験及演習 3

最低限の開発環境を整えるには
計算機科学実験及演習 3 ソフトウェア ミニ補講
古川 孝太郎
音声メディア分野 M2
2014 年 06 月 20 日 (金)
1 / 23
はじめに (1/4)
.
TA をしているとよく見かける開発環境 :
.
• 別のプログラムを実行する度に小さいウィンドウを開閉
• マウスでカチカチしながら選択・移動・編集
. • 誤ってウィンドウを消すと未保存の内容は消滅
.
.
「その環境、不便じゃないですか?」
2 / 23
はじめに (2/4)
.
.
便利なツールを導入して生産性を上げよう!
.
このミニ補講の内容
.
1 章 : Tmux の導入
2 章 : Emacs の基本的な使い方
3 章 : Emacs のカスタマイズ方法
.
4 章 : 付録 : よく使うキーバインド集
3 / 23
はじめに (3/4)
.
Tmux とは
.
CUI 操作による端末切替器 1)
• モニタを広く/分割して使用可能
. • ssh 越しに作業する際にセッションを保持
.
Emacs とは
.
高機能なテキストエディタ 2)
• コーディングの補助機能が充実
. • カスタマイズが容易で拡張性が高い
.
.
いずれもキーバインド (連続的なキー操作の関数への対応) が重要
1)
2)
cf. Screen
cf. Vim
4 / 23
はじめに (4/4)
.
キーバインドの表記
.
.
C-
: 「Ctrl を押しながら」
M-
: 「Alt を押しながら」または「Esc を押した後に」
RET : 「Enter 」
SPC : 「Space 」
Tab : 「Tab 」
.
例
.
C-x s
.
: 「Ctrl と x を押した後に s を押す」
C-x C-s : 「Ctrl と x を押した後に Ctrl と s を押す」
C-M-a
: 「Ctrl と Alt と a を押す」
C-x RET f utf-8 : 「Ctrl と x, Enter , f, utf-8 と順に入力」
5 / 23
Tmux の導入 (1/5)
.
インストールと設定
.
1.
ソースを取得してビルド
wget http://downloads.sourceforge.net/tmux/tmux-1.9a.tar.gz
tar zxvf tmux-1.9a.tar.gz
cd tmux-1.9a
./configure
make
2.
Tmux の設定ファイルを編集する (後述)
˜$ emacs ˜/.tmux.conf
3.
シェルの rc ファイルに記述
˜$ emacs ˜/.*shrc
if (! test $TMUX); then tmux; fi
4.
.
rc ファイルの再読込み
˜$ source ˜/.*shrc
6 / 23
Tmux の導入 (2/5)
.
基本的な使い方
.
key
C-b
or
C-b
:
function
ウィンドウ分割, 移動, スクロール, . . .
.
.
※ C-b はプレフィックス (tmux へキーコードを送る)
※ キーバインドは変更可能
一覧は
C-b ?
で見ることができる
.
7 / 23
Tmux の導入 (3/5)
ペイン
ウィンドウ
ステータスバー
8 / 23
Tmux の導入 (4/5)
.
よく使う機能
.
• new-window
: ウィンドウ (仮想端末) を新しく開く
C-b c
• split-window
C-b %,
: ウィンドウを分割 (オプション -v, -h)
C-b ¨
• select-window : 指定のウィンドウに移動 (-t :window-name)
C-b (0-9), C-b ´ window-name
• select-pane
: 指定のペインに移動 (-U, -D, -L, -R)
C-b ↑, C-b ↓, C-b →, C-b ←
• copy-mode
: スクロール (戻る: C-c)
C-b [
• detach-client : デタッチ
C-b d
•
attach-session
: アタッチ (-t session-name)
.
9 / 23
Tmux の導入 (5/5)
.
Tmux の設定ファイル (˜/.tmux.conf) の書き方
.
set-option -g status-keys emacs
set-window-option -g mode-keys emacs
..
.
unbind-key C-b
bind-key C-z send-prefix
..
.
1.
色や文字コードなどのパラメータを設定
set-option -g param value
2.
キーバインドを解除
unbind-key key
3.
.
キーバインドを新しく設定
bind-key key function
10 / 23
Emacs の基本的な使い方 (1/3)
.
概要
.
1.
端末上で emacs を起動する
$ emacs -nw
2.
ファイルを開く
C-x C-f filename
3.
編集する
4.
保存する
C-x C-s
5.
emacs を終了する
. C-x C-c
11 / 23
Emacs の基本的な使い方 (2/3)
ウィンドウ
バッファ
文字コードなど
ファイル名
モード名
ミニバッファ
12 / 23
Emacs の基本的な使い方 (3/3)
.
編集のモード
.
• モード : 特定の種類のファイル編集に特化した機能
• メジャーモード : 1 バッファにつき 1 つ指定できる特化機能
• マイナーモード : 組み合わせ可能な汎用の便利機能
.
まず大切なのはメジャーモード
.
メジャーモードの切り替え方
.
M-x
mode-name
• 通常はファイルを開いたときに自動で切り替わる
. • プリセットとして: c-mode, c++-mode, lisp-mode, latex-mode, ...
13 / 23
Emacs のカスタマイズ方法 (1/5)
.
.
Emacs はカスタマイズして使いやすく!
.
Emacs の設定ファイル群の構成と利用
.
• ˜/.emacs
: 起動時に読み込まれる
• ˜/.emacs.d : .emacs から呼び出される設定, 一時ファイルなど
1.
設定ファイルを編集 (後述)
˜$ emacs ˜/.emacs
(Web 等から取得した .el ファイル群は.emacs.d へ)
2.
.
emacs 上で設定ファイルを再読込み
M-x load-file ˜/.emacs
14 / 23
Emacs のカスタマイズ方法 (2/5)
.
キーバインドの追加
.
(global-set-key "key" ’function-name)
(global-unset-key "key")
• 例 : C-x b, C-x C-b でバッファメニューを表示
(global-set-key ¨\C-xb¨ ’buffer-menu)
(global-set-key ¨\C-x\C-b¨ ’bs-show)
• 例 : 矢印キーで左右ウィンドウ間のカーソル移動
(global-set-key [right] ’window-right)
(global-set-key [left] ’window-left)
.
※ キーの書き方癖があるので注意
※ 端末上で取得可能なキーコードは GUI より少ない
※ キーバインド一覧の確認は
M-x describe-bindings
15 / 23
Emacs のカスタマイズ方法 (3/5)
.
フック
.
.
フック : 特定のタイミングで関数を呼び出す仕組み
.
フックの追加
.
• 例 : ファイル保存時に行末の半角スペースを消去
(add-hook ’before-save-hook ’delete-trailing-whitespace)
• 例 : c-mode でのインデントを調整
(add-hook ’c-mode-hook
’(lambda ()
(setq c-basic-offset 2)
(setq c-tab-width 2)
(setq c-indent-level 2)
(setq tab-width 2)
.
(setq-default tab-width 2)))
16 / 23
Emacs のカスタマイズ方法 (4/5)
.
モードの追加
.
例 : lex ファイル編集モード flex-mode を導入する
• .el ファイルを用意する
˜$ wget http://ftp.sunet.se/pub/gnu/emacs-lisp/incoming/flex-mode.el
˜$ mv flex-mode.el ˜/.emacs.d/
• 起動時にロードするように .emacs に設定
(add-to-list ’load-path ¨˜/.emacs.d¨)
(require ’flex-mode)
• ファイルオープン時に拡張子で判別してモードに入るよう設定
.
(add-to-list ’auto-mode-alist ’(¨\\.l$¨ .
flex-mode))
17 / 23
Emacs のカスタマイズ方法 (5/5)
.
実験を進める上で役に立つモード
.
• flex-mode
: Lex ファイルの編集
http://www.emacswiki.org/emacs/FlexMode
• bison-mode : Yacc ファイルの編集
http://www.emacswiki.org/emacs/BisonMode
• auctex
: Tex ファイルの編集, 自動コンパイル
http://www.emacswiki.org/emacs/AUCTeX
http://oku.edu.mie-u.ac.jp/˜okumura/texwiki/?AUCTeX
• multi-term : emacs 上で複数立ち上げ可能な端末3)
http://www.emacswiki.org/emacs/MultiTerm
.
3)
cf. term, eshell
18 / 23
付録 : よく使うキーバインド集 (1/)
.
終了
.
.
C-x C-c : emacs を終了
.
キャンセル
.
.
C-g
: 操作をキャンセル
.
ファイル操作
.
C-x C-f : ファイルを開く
C-x C-s : 編集中のバッファを (上書き) 保存
.
C-x C-w : 編集中のバッファを別名で保存
19 / 23
付録 : よく使うキーバインド集 (2/)
.
カーソル移動
.
.
C-p
: カーソルを 1 行上へ移動
C-n
: カーソルを 1 行下へ移動
C-f
: カーソルを 1 文字進める
C-b
: カーソルを 1 文字戻す
C-a
: カーソルを行頭へ移動
C-e
: カーソルを行末へ移動
M-<
: カーソルをバッファの先頭へ移動
M->
: カーソルをバッファの末尾へ移動
C-x o : 次のウィンドウに移動
20 / 23
付録 : よく使うキーバインド集 (3/)
.
テキスト編集
.
C-/ : Undo/Redo
C-k : 行末まで切取り
C-w : 選択領域を切取り
C-y : 貼付け
C-s string : 検索 (下に)
C-s string : 検索 (上に)
C-t : 前後の文字を置換
M-u : 次の単語をすべて大文字に
M-l : 次の単語をすべて小文字に
.
M-c : 次の単語の先頭を大文字に
21 / 23
付録 : よく使うキーバインド集 (/)
.
ウィンドウ操作
.
C-x 1 : ウィンドウを 1 つに
C-x 2 : ウィンドウを縦に 2 つ二分割
C-x 3 : ウィンドウを横に 2 つに分割
.
C-x 0 : ウィンドウを消す
.
そのほか
.
C-x RET f encode : 編集中のバッファの文字コードを変更
M-%
: 逐次置換 (次: n, 置換: SPC)
C-x h : 全選択
.
C-i
: インデント
C-q
: キーコードをそのまま入力
22 / 23
参考文献
.
Tmux
SourceForge tmux:
http://tmux.sourceforge.net/
Manual Pages: tmux(1):
http://www.openbsd.org/cgi-bin/man.cgi?query=tmux
Emacs
GNU Emacs - GNU Projects:
http://www.gnu.org/software/emacs/
EmacsWiki:
http://www.emacswiki.org/
.
23 / 23