最低限の開発環境を整えるには
計算機科学実験及演習 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)
cf. Screen
2)
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)
.
基本的な使い方
..
......
C-b key
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 : ウィンドウを分割 (オプション -v, -h)
C-b %, 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-xC-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

最低限の開発環境を整えるには

  • 1.
    最低限の開発環境を整えるには 計算機科学実験及演習 3 ソフトウェアミニ補講 古川 孝太郎 音声メディア分野 M2 2014 年 06 月 20 日 (金) 1 / 23
  • 2.
    はじめに (1/4) . TA をしているとよく見かける開発環境: .. ...... • 別のプログラムを実行する度に小さいウィンドウを開閉 • マウスでカチカチしながら選択・移動・編集 • 誤ってウィンドウを消すと未保存の内容は消滅 . ...... 「その環境、不便じゃないですか?」 2 / 23
  • 3.
    はじめに (2/4) . ...... 便利なツールを導入して生産性を上げよう! . このミニ補講の内容 .. ...... 1章 : Tmux の導入 2 章 : Emacs の基本的な使い方 3 章 : Emacs のカスタマイズ方法 4 章 : 付録 : よく使うキーバインド集 3 / 23
  • 4.
    はじめに (3/4) . Tmux とは .. ...... CUI操作による端末切替器 1) • モニタを広く/分割して使用可能 • ssh 越しに作業する際にセッションを保持 . Emacs とは .. ...... 高機能なテキストエディタ 2) • コーディングの補助機能が充実 • カスタマイズが容易で拡張性が高い . ...... いずれもキーバインド (連続的なキー操作の関数への対応) が重要 1) cf. Screen 2) cf. Vim 4 / 23
  • 5.
    はじめに (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
  • 6.
    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
  • 7.
    Tmux の導入 (2/5) . 基本的な使い方 .. ...... C-bkey or C-b : function ウィンドウ分割, 移動, スクロール, . . . . ...... ※ C-b はプレフィックス (tmux へキーコードを送る) ※ キーバインドは変更可能 一覧は C-b ? で見ることができる 7 / 23
  • 8.
  • 9.
    Tmux の導入 (4/5) . よく使う機能 .. ...... •new-window : ウィンドウ (仮想端末) を新しく開く C-b c • split-window : ウィンドウを分割 (オプション -v, -h) C-b %, 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
  • 10.
    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
  • 11.
    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
  • 12.
  • 13.
    Emacs の基本的な使い方 (3/3) . 編集のモード .. ...... •モード : 特定の種類のファイル編集に特化した機能 • メジャーモード : 1 バッファにつき 1 つ指定できる特化機能 • マイナーモード : 組み合わせ可能な汎用の便利機能 まず大切なのはメジャーモード . メジャーモードの切り替え方 .. ...... M-x mode-name • 通常はファイルを開いたときに自動で切り替わる • プリセットとして: c-mode, c++-mode, lisp-mode, latex-mode, ... 13 / 23
  • 14.
    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
  • 15.
    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-xC-b¨ ’bs-show) • 例 : 矢印キーで左右ウィンドウ間のカーソル移動 (global-set-key [right] ’window-right) (global-set-key [left] ’window-left) ※ キーの書き方癖があるので注意 ※ 端末上で取得可能なキーコードは GUI より少ない ※ キーバインド一覧の確認は M-x describe-bindings 15 / 23
  • 16.
    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
  • 17.
    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
  • 18.
    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
  • 19.
    付録 : よく使うキーバインド集(1/) . 終了 .. ...... C-x C-c : emacs を終了 . キャンセル .. ...... C-g : 操作をキャンセル . ファイル操作 .. ...... C-x C-f : ファイルを開く C-x C-s : 編集中のバッファを (上書き) 保存 C-x C-w : 編集中のバッファを別名で保存 19 / 23
  • 20.
    付録 : よく使うキーバインド集(2/) . カーソル移動 .. ...... C-p : カーソルを 1 行上へ移動 C-n : カーソルを 1 行下へ移動 C-f : カーソルを 1 文字進める C-b : カーソルを 1 文字戻す C-a : カーソルを行頭へ移動 C-e : カーソルを行末へ移動 M-< : カーソルをバッファの先頭へ移動 M-> : カーソルをバッファの末尾へ移動 C-x o : 次のウィンドウに移動 20 / 23
  • 21.
    付録 : よく使うキーバインド集(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
  • 22.
    付録 : よく使うキーバインド集(/) . ウィンドウ操作 .. ...... 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
  • 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