Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Emacs上のターミナルを最強に
伊奈 林太郎
2012-10-20 @ 関西 Emacs#x06
伊奈 林太郎 Emacs 上のターミナルを最強に 1
ターミナル使ってますか?
◮ 素のターミナル
◮ 標準的なターミナルエミュレータ
xterm, gnome-terminal, Terminal.app, ...
◮ マルチプレクサ
screen, tmux, ...
◮ ssh といっしょに...
ターミナル使ってますか?
◮ 素のターミナル
◮ 標準的なターミナルエミュレータ
xterm, gnome-terminal, Terminal.app, ...
◮ マルチプレクサ
screen, tmux, ...
◮ ssh といっしょに...
ターミナルとEmacs
ターミナルエミュレータを使う理由
◮ ncurses アプリもちゃんと動いてほしい
◮ 素の端末を触るときにパニくらない
Emacs との共存
◮ Emacs は別窓で
◮ ウィンドウが増えてうざい
◮ 端末とのコピペが...
screenのままならないところ
◮ 改造しにくい
◮ CJK ambiguous width
◮ 問題の切り分けが難しくなる
◮ (X などの) クリップボードとの連携
◮ 面倒なハックが必要
◮ 環境変数の引き渡し
◮ 外部からのコマンド発...
すべてEmacsでやる
◮ CJK, クリップボード
なども OK
◮ detach もできる
(emacs --daemon)
◮ Emacs 本体と連携 ⊚
◮ 操作性を一体に
◮ Lisp で改造しまくり
伊奈 林太郎 Emacs 上のタ...
Emacs内端末エミュレータterm.el
使い方
M-x term, M-x ansi-term
特徴 — 2 つのモード
◮ term-char-mode
◮ 打ったものがそのまま端末へ
◮ term-line-mode
◮ Emacs の...
term.elのいけてないところ
◮ キーがほぼすべて端末に持っていかれる
◮ M-x とかきかない
◮ でも ESC とかどっちで認識すべき?
◮ 端末が 1 つしか開けない
(内部的には可能だけどインタフェースが無い)
◮ 色が 8 色しか...
term+.el — term.elを強化する
主な機能
◮ 256 色対応 / xterm 互換性向上
◮ キーバインド強化
◮ 編集機能の強化
◮ ログ機能
◮ マルチプレクサ (+ マルチセッション)
◮ シェル連携強化
伊奈 林太郎 E...
term+.elをとりあえず使ってみる
ダウンロード → 真っ新な状態でのお試し
° git clone git://github.com/tarao/term-plus-all.git
° cd term-plus-all
° git sub...
デモ
伊奈 林太郎 Emacs 上のターミナルを最強に 10
term+.el — term.elを強化する
主な機能
◮ 256 色対応 / xterm 互換性向上
◮ キーバインド強化
◮ 編集機能の強化
◮ ログ機能
◮ マルチプレクサ (+ マルチセッション)
◮ シェル連携強化
伊奈 林太郎 E...
256色対応 / xterm互換性
(require ³xterm-256color)
256 色対応
◮ 256 色表示の制御シーケンスの解釈を実装
◮ ついでに斜体 , 取り消し線等にも対応
◮ 原理的には 24bit 色に対応可能 (cf...
term+.el — term.elを強化する
主な機能
◮ 256 色対応 / xterm 互換性向上
◮ キーバインド強化
◮ 編集機能の強化
◮ ログ機能
◮ マルチプレクサ (+ マルチセッション)
◮ シェル連携強化
伊奈 林太郎 E...
キーバインド強化 [1/2]
(require ³term+)
端末に奪わせないキーを定義
◮ term+char-mapに 
define-key
定義 するだけ
(multi-term.elでもできますね)
◮ 定義済みのキー (M-x d...
キーバインド強化 [2/2]
(require ³key-intercept)
後続のキーがあるかどうかで意味が違う!
ESC 端末へ ESC を送る
M-x ふつうの M-x
C-c 0.5 秒間何も入力がなければ端末へ C-c
直後に何か入...
term+.el — term.elを強化する
主な機能
◮ 256 色対応 / xterm 互換性向上
◮ キーバインド強化
◮ 編集機能の強化
◮ ログ機能
◮ マルチプレクサ (+ マルチセッション)
◮ シェル連携強化
伊奈 林太郎 E...
編集機能強化 [1/2]
(require ³term+)
編集モード (term-line-mode)中は
◮ 入力フィールド外では読取専用
◮ SPC で選択開始
もう一度 SPC で範囲コピー → 編集モード終了
◮ RET, ESC で...
編集機能強化 [1/2]
(require ³term+)
編集モード (term-line-mode)中は
◮ 入力フィールド外では読取専用
◮ SPC で選択開始
もう一度 SPC で範囲コピー → 編集モード終了
◮ RET, ESC で...
編集機能強化 [2/2]
(require ³multi-mode-util)
入力フィールドだけ別モード
◮ あらかじめどのモードにするか指定 (後述)
◮ 編集モードに入ると 
indirect buffer
間接バッファ を作成
◮ mu...
term+.el — term.elを強化する
主な機能
◮ 256 色対応 / xterm 互換性向上
◮ キーバインド強化
◮ 編集機能の強化
◮ ログ機能
◮ マルチプレクサ (+ マルチセッション)
◮ シェル連携強化
伊奈 林太郎 E...
ログ機能
(require ³term+)
term-start-output-log
◮ term.elに元からある (ほぼデバッグ用)
term+hardcopy (C-c h)
◮ 一画面だけテキスト保存 (追記可)
◮ screenの:...
term+.el — term.elを強化する
主な機能
◮ 256 色対応 / xterm 互換性向上
◮ キーバインド強化
◮ 編集機能の強化
◮ ログ機能
◮ マルチプレクサ (+ マルチセッション)
◮ シェル連携強化
伊奈 林太郎 E...
マルチプレクサ [1/3]
(require ³term+mux)
やりたいこと
◮ 複数の端末をタブ表示
(tabbar.el, emux.elでもできますね)
◮ 編集モード以外のときはモードラインをタブに
◮ セッション (ユーザ/ホスト...
マルチプレクサ [2/3] タブグループ
(require ³term+mux)
実装: tab-group.el
◮ https://github.com/tarao/tab-group-el
◮ 車輪の再発明
◮ tabbar.elでできる...
マルチプレクサ [3/3] セッション管理
(require ³term+mux)
M-x term+mux-new
◮ 現在のセッションで (or 選択して) 端末を開く
M-x term+mux-new-command
◮ 現在のセッション...
term+.el — term.elを強化する
主な機能
◮ 256 色対応 / xterm 互換性向上
◮ キーバインド強化
◮ 編集機能の強化
◮ ログ機能
◮ マルチプレクサ (+ マルチセッション)
◮ シェル連携強化
伊奈 林太郎 E...
シェル連携
できること
◮ 編集モード
◮ 編集モードでのメジャーモード指定
◮ バッファ内容を引き継いで編集モードへ
◮ ユーザ/ホスト/ディレクトリ通知
◮ ファイル転送 (open / view / get / put)
◮ シェルコマン...
シェル連携 [1/6] 編集モード
M-i で sh-modeの編集モードへ (zsh)
function switch-to-line-mode-insert () {1
local buf="°BUFFER"2
zle kill-buffe...
シェル連携 [2/6] セッション情報
ユーザ名/ホスト名を通知
host= hostname # ホスト名10
echo -ne "e]51;host;°hoste" > /dev/tty11
user= id -run # ユーザ名12
e...
シェル連携 [3/6] ファイル転送
function o() { # シェルで見えてるファイルを開く20
echo -ne "e]51;open;°1e" > /dev/tty }21
function v() { # シェルで見えてるファイ...
シェル連携 [4/6] 履歴選択
C-r で履歴選択 (zsh)
echo -ne "e]51;histfile;°HISTFILEe" >/dev/tty #一回だけ29
30
function history-search-eterm ()...
シェル連携 [5/6] マルチプレクサ
タブタイトル変更
◮ screen の ekSTR e 形式
◮ tmux の e]2;STRe 形式
参考 https://raw.github.com/tarao/dotfiles/master/.z...
シェル連携 [6/6] カスタマイズ
定義済みの特殊制御コマンドを調べる
◮ M-x des-fun, term-emulate-terminal
◮ M-x term+control-command-list
新しい特殊制御コマンドを定義する...
まとめ
Emacs 上でだって端末機能をフルに使いたい!
◮ 256 色対応
◮ xterm 互換性向上
◮ キーバインド
Emacs なのをいいことに魔改造
◮ 編集機能の強化
◮ ログ機能
◮ マルチプレクサをまるごと実装
◮ シェル連携し...
参考URL
伊奈林太郎.
このスライド.
http://up.orezdnu.org/papers/kansai-emacs/%23x06/slide/slide.pdf.
INA Lintaro.
term+.el のソースリポジトリ.
ht...
おわり
Upcoming SlideShare
Loading in …5
×

Emacs上のターミナルを最強に

6,201 views

Published on

2012-10-20 @関西Emacs#x06

Published in: Software
  • Be the first to comment

Emacs上のターミナルを最強に

  1. 1. Emacs上のターミナルを最強に 伊奈 林太郎 2012-10-20 @ 関西 Emacs#x06 伊奈 林太郎 Emacs 上のターミナルを最強に 1
  2. 2. ターミナル使ってますか? ◮ 素のターミナル ◮ 標準的なターミナルエミュレータ xterm, gnome-terminal, Terminal.app, ... ◮ マルチプレクサ screen, tmux, ... ◮ ssh といっしょになってるもの PuTTY, Tera Term, ... ◮ Emacs 上 term.el ◮ 使ってない eshell.el, ... ◮ その他 伊奈 林太郎 Emacs 上のターミナルを最強に 2
  3. 3. ターミナル使ってますか? ◮ 素のターミナル ◮ 標準的なターミナルエミュレータ xterm, gnome-terminal, Terminal.app, ... ◮ マルチプレクサ screen, tmux, ... ◮ ssh といっしょになってるもの PuTTY, Tera Term, ... ◮ Emacs 上 term.el ◮ 使ってない eshell.el, ... ◮ その他 伊奈 林太郎 Emacs 上のターミナルを最強に 2
  4. 4. ターミナルとEmacs ターミナルエミュレータを使う理由 ◮ ncurses アプリもちゃんと動いてほしい ◮ 素の端末を触るときにパニくらない Emacs との共存 ◮ Emacs は別窓で ◮ ウィンドウが増えてうざい ◮ 端末とのコピペが面倒 ◮ screenの中で Emacs ◮ キーボードだけでコピペ ◮ Emacs ごと detach 伊奈 林太郎 Emacs 上のターミナルを最強に 3
  5. 5. screenのままならないところ ◮ 改造しにくい ◮ CJK ambiguous width ◮ 問題の切り分けが難しくなる ◮ (X などの) クリップボードとの連携 ◮ 面倒なハックが必要 ◮ 環境変数の引き渡し ◮ 外部からのコマンド発行で解決 (要開発版) # この辺は tmux でも同じですね 伊奈 林太郎 Emacs 上のターミナルを最強に 4
  6. 6. すべてEmacsでやる ◮ CJK, クリップボード なども OK ◮ detach もできる (emacs --daemon) ◮ Emacs 本体と連携 ⊚ ◮ 操作性を一体に ◮ Lisp で改造しまくり 伊奈 林太郎 Emacs 上のターミナルを最強に 5
  7. 7. Emacs内端末エミュレータterm.el 使い方 M-x term, M-x ansi-term 特徴 — 2 つのモード ◮ term-char-mode ◮ 打ったものがそのまま端末へ ◮ term-line-mode ◮ Emacs のバッファに近い編集 しくみ ◮ process-filterで制御シーケンスを解釈 ◮ バッファに put-text-propertyしながら表示 伊奈 林太郎 Emacs 上のターミナルを最強に 6
  8. 8. term.elのいけてないところ ◮ キーがほぼすべて端末に持っていかれる ◮ M-x とかきかない ◮ でも ESC とかどっちで認識すべき? ◮ 端末が 1 つしか開けない (内部的には可能だけどインタフェースが無い) ◮ 色が 8 色しかない ◮ term-line-modeがちょっと貧弱 ◮ コードがレガシーで拡張しにくい ◮ 関数がでかい ◮ hook も少ない ◮ 遅い 伊奈 林太郎 Emacs 上のターミナルを最強に 7
  9. 9. term+.el — term.elを強化する 主な機能 ◮ 256 色対応 / xterm 互換性向上 ◮ キーバインド強化 ◮ 編集機能の強化 ◮ ログ機能 ◮ マルチプレクサ (+ マルチセッション) ◮ シェル連携強化 伊奈 林太郎 Emacs 上のターミナルを最強に 8
  10. 10. term+.elをとりあえず使ってみる ダウンロード → 真っ新な状態でのお試し ° git clone git://github.com/tarao/term-plus-all.git ° cd term-plus-all ° git submodule update --init ° make emacs # or make term # or make EMACS=emacs-snapshot term 注意点 ◮ Emacs 24.1.50 で開発してます ◮ 22 はサポートしません ◮ 23 は細かいところが不安定かも ◮ 24.2 はおそらく OK ◮ 24.3 (24.2.50) の term.elの変更には未対応 伊奈 林太郎 Emacs 上のターミナルを最強に 9
  11. 11. デモ 伊奈 林太郎 Emacs 上のターミナルを最強に 10
  12. 12. term+.el — term.elを強化する 主な機能 ◮ 256 色対応 / xterm 互換性向上 ◮ キーバインド強化 ◮ 編集機能の強化 ◮ ログ機能 ◮ マルチプレクサ (+ マルチセッション) ◮ シェル連携強化 伊奈 林太郎 Emacs 上のターミナルを最強に 11
  13. 13. 256色対応 / xterm互換性 (require ³xterm-256color) 256 色対応 ◮ 256 色表示の制御シーケンスの解釈を実装 ◮ ついでに斜体 , 取り消し線等にも対応 ◮ 原理的には 24bit 色に対応可能 (cf. Konsole) (24bit 色表示しようとするアプリはあるのか?) xterm 互換性 (TERM=xterm-256color) ◮ TERM=eterm-256colorを定義すればよい? ◮ たいていのアプリは terminfo なんか見てない ◮ xterm を騙れば 256 色表示しようとしてくれる ◮ 騙るからには xterm 制御シーケンスを処理 (不完全) 伊奈 林太郎 Emacs 上のターミナルを最強に 12
  14. 14. term+.el — term.elを強化する 主な機能 ◮ 256 色対応 / xterm 互換性向上 ◮ キーバインド強化 ◮ 編集機能の強化 ◮ ログ機能 ◮ マルチプレクサ (+ マルチセッション) ◮ シェル連携強化 伊奈 林太郎 Emacs 上のターミナルを最強に 13
  15. 15. キーバインド強化 [1/2] (require ³term+) 端末に奪わせないキーを定義 ◮ term+char-mapに  define-key 定義 するだけ (multi-term.elでもできますね) ◮ 定義済みのキー (M-x des-fun, term-char-mode) C-q 後続のキーをそのまま端末に渡す C-y 端末へ貼り付け M-RET 編集モード (term-line-mode)へスイッチ ESC 端末へ ESC を送る C-c 0.5 秒間何も入力がなければ端末へ C-c 直後に何か入力すればプレフィックスキー ◮ Emacs 本体で実行 (nil をマップ): M-x, M-:, C-x 伊奈 林太郎 Emacs 上のターミナルを最強に 14
  16. 16. キーバインド強化 [2/2] (require ³key-intercept) 後続のキーがあるかどうかで意味が違う! ESC 端末へ ESC を送る M-x ふつうの M-x C-c 0.5 秒間何も入力がなければ端末へ C-c 直後に何か入力すればプレフィックスキー 実装: key-intercept.el ◮ https://github.com/tarao/key-intercept-el ◮ プレフィックスキーにもコマンドを割り当てる http://d.hatena.ne.jp/tarao/20120427/1335527960 伊奈 林太郎 Emacs 上のターミナルを最強に 15
  17. 17. term+.el — term.elを強化する 主な機能 ◮ 256 色対応 / xterm 互換性向上 ◮ キーバインド強化 ◮ 編集機能の強化 ◮ ログ機能 ◮ マルチプレクサ (+ マルチセッション) ◮ シェル連携強化 伊奈 林太郎 Emacs 上のターミナルを最強に 16
  18. 18. 編集機能強化 [1/2] (require ³term+) 編集モード (term-line-mode)中は ◮ 入力フィールド外では読取専用 ◮ SPC で選択開始 もう一度 SPC で範囲コピー → 編集モード終了 ◮ RET, ESC で編集モード終了 ◮ 入力フィールド内ではふつうのバッファ ◮ ただし RET で端末に送信 ◮ ふつうの改行は C-j ◮ 別のメジャーモードにもできる e.g. シェルのプロンプトに sh-modeで入力 伊奈 林太郎 Emacs 上のターミナルを最強に 17
  19. 19. 編集機能強化 [1/2] (require ³term+) 編集モード (term-line-mode)中は ◮ 入力フィールド外では読取専用 ◮ SPC で選択開始 もう一度 SPC で範囲コピー → 編集モード終了 ◮ RET, ESC で編集モード終了 ◮ 入力フィールド内ではふつうのバッファ ◮ ただし RET で端末に送信 ◮ ふつうの改行は C-j ◮ 別のメジャーモードにもできる e.g. シェルのプロンプトに sh-modeで入力 伊奈 林太郎 Emacs 上のターミナルを最強に 17
  20. 20. 編集機能強化 [2/2] (require ³multi-mode-util) 入力フィールドだけ別モード ◮ あらかじめどのモードにするか指定 (後述) ◮ 編集モードに入ると  indirect buffer 間接バッファ を作成 ◮ multi-mode.el http://www.loveshack.ukfsn.org/emacs/multi-mode.el ◮ multi-mode-util.el https://github.com/tarao/multi-mode-util 伊奈 林太郎 Emacs 上のターミナルを最強に 18
  21. 21. term+.el — term.elを強化する 主な機能 ◮ 256 色対応 / xterm 互換性向上 ◮ キーバインド強化 ◮ 編集機能の強化 ◮ ログ機能 ◮ マルチプレクサ (+ マルチセッション) ◮ シェル連携強化 伊奈 林太郎 Emacs 上のターミナルを最強に 19
  22. 22. ログ機能 (require ³term+) term-start-output-log ◮ term.elに元からある (ほぼデバッグ用) term+hardcopy (C-c h) ◮ 一画面だけテキスト保存 (追記可) ◮ screenの:hardcopy相当 term+start-buffer-log (C-c l) ◮ いままでの累積テキストを保存 ◮ 表示限界 (2048 行) を超えた分も保存 term+start-record (C-c r) ◮ 端末の制御シーケンスを時系列で保存 ◮ ttyrec互換 (ttyplayで再生可) 伊奈 林太郎 Emacs 上のターミナルを最強に 20
  23. 23. term+.el — term.elを強化する 主な機能 ◮ 256 色対応 / xterm 互換性向上 ◮ キーバインド強化 ◮ 編集機能の強化 ◮ ログ機能 ◮ マルチプレクサ (+ マルチセッション) ◮ シェル連携強化 伊奈 林太郎 Emacs 上のターミナルを最強に 21
  24. 24. マルチプレクサ [1/3] (require ³term+mux) やりたいこと ◮ 複数の端末をタブ表示 (tabbar.el, emux.elでもできますね) ◮ 編集モード以外のときはモードラインをタブに ◮ セッション (ユーザ/ホストの別) ごとにグループ化 ◮ 同一セッションからは 1 つだけバッファ一覧に ◮ セッション内の選択中のタブが代表 ◮ 一覧中ではバッファ名ではなくセッション名 伊奈 林太郎 Emacs 上のターミナルを最強に 22
  25. 25. マルチプレクサ [2/3] タブグループ (require ³term+mux) 実装: tab-group.el ◮ https://github.com/tarao/tab-group-el ◮ 車輪の再発明 ◮ tabbar.elでできることはだいたいできる ◮ モードラインにも表示できる ◮ バッファをひとまとめにできる ◮ かっこいいタブ選択 UI ◮ D&D でタブ移動 伊奈 林太郎 Emacs 上のターミナルを最強に 23
  26. 26. マルチプレクサ [3/3] セッション管理 (require ³term+mux) M-x term+mux-new ◮ 現在のセッションで (or 選択して) 端末を開く M-x term+mux-new-command ◮ 現在のセッションで指定のコマンドを実行 M-x term+mux-remote-session ◮ ユーザ/ホストを指定してセッションを作成 ◮ シェル端末も 1 つ開く ◮ ローカルで root なら sudo する ◮ リモートなら ssh する 伊奈 林太郎 Emacs 上のターミナルを最強に 24
  27. 27. term+.el — term.elを強化する 主な機能 ◮ 256 色対応 / xterm 互換性向上 ◮ キーバインド強化 ◮ 編集機能の強化 ◮ ログ機能 ◮ マルチプレクサ (+ マルチセッション) ◮ シェル連携強化 伊奈 林太郎 Emacs 上のターミナルを最強に 25
  28. 28. シェル連携 できること ◮ 編集モード ◮ 編集モードでのメジャーモード指定 ◮ バッファ内容を引き継いで編集モードへ ◮ ユーザ/ホスト/ディレクトリ通知 ◮ ファイル転送 (open / view / get / put) ◮ シェルコマンド履歴選択 ◮ マルチプレクサ ◮ タブタイトル設定 ◮ cdd (別タブの現在ディレクトリを取得) 方法 ◮ 端末内から特殊な制御コマンドを送る 伊奈 林太郎 Emacs 上のターミナルを最強に 26
  29. 29. シェル連携 [1/6] 編集モード M-i で sh-modeの編集モードへ (zsh) function switch-to-line-mode-insert () {1 local buf="°BUFFER"2 zle kill-buffer3 zle -R # reset command line4 echo -ne "e]51;mode;sh-modee" > /dev/tty5 echo -ne "e]52;i;°bufe" > /dev/tty6 }7 zle -N switch-to-line-mode-insert8 bindkey ³^[i³ switch-to-line-mode-insert9 参照 https://raw.github.com/tarao/dotfiles/master/.zsh/eterm.zsh 伊奈 林太郎 Emacs 上のターミナルを最強に 27
  30. 30. シェル連携 [2/6] セッション情報 ユーザ名/ホスト名を通知 host= hostname # ホスト名10 echo -ne "e]51;host;°hoste" > /dev/tty11 user= id -run # ユーザ名12 echo -ne "e]51;user;°usere" > /dev/tty13 ディレクトリ通知 (zsh) function precmd_eterm_cwd () {14 local dir; dir= pwd15 echo -ne "e]51;cd;°dire" > /dev/tty16 }17 typeset -Uga precmd_functions # これは一回だけ18 precmd_functions+=precmd_eterm_cwd19 ◮ Emacs 側の default-directoryが変更される ◮ TRAMP でリモートファイルも開ける 伊奈 林太郎 Emacs 上のターミナルを最強に 28
  31. 31. シェル連携 [3/6] ファイル転送 function o() { # シェルで見えてるファイルを開く20 echo -ne "e]51;open;°1e" > /dev/tty }21 function v() { # シェルで見えてるファイルを view-mode で開く22 echo -ne "e]51;view;°1e" > /dev/tty }23 function get() { # シェルで見えてるファイルを手元にコピー24 echo -ne "e]51;get;°1e" > /dev/tty }25 function put() { # シェルで見えてる場所に26 # ファイルを選択してコピー27 echo -ne "e]51;put;e" > /dev/tty }28 ◮ セッション情報を通知しておく必要あり ◮ get/put は FTP と同じ向き ◮ put するとミニバッファでファイルを訊く ◮ dired インタフェースでの複数選択も可 伊奈 林太郎 Emacs 上のターミナルを最強に 29
  32. 32. シェル連携 [4/6] 履歴選択 C-r で履歴選択 (zsh) echo -ne "e]51;histfile;°HISTFILEe" >/dev/tty #一回だけ29 30 function history-search-eterm () {31 local buf="°BUFFER"32 zle kill-buffer33 echo -ne "e]52;h;°bufe" > /dev/tty }34 zle -N history-search-eterm35 bindkey ³^R³ history-search-eterm36 ◮ 類似: zsh の履歴検索に anything.elを使う http://d.hatena.ne.jp/tarao/20100429/1272509893 伊奈 林太郎 Emacs 上のターミナルを最強に 30
  33. 33. シェル連携 [5/6] マルチプレクサ タブタイトル変更 ◮ screen の ekSTR e 形式 ◮ tmux の e]2;STRe 形式 参考 https://raw.github.com/tarao/dotfiles/master/.zsh/screen-title.zsh cdd ◮ 他のタブの pwd に移動する ◮ オリジナルは id:secondlife さん (screen用) http://d.hatena.ne.jp/secondlife/20080218/1203303528 参照 https://raw.github.com/tarao/dotfiles/master/.zsh/eterm.zsh 伊奈 林太郎 Emacs 上のターミナルを最強に 31
  34. 34. シェル連携 [6/6] カスタマイズ 定義済みの特殊制御コマンドを調べる ◮ M-x des-fun, term-emulate-terminal ◮ M-x term+control-command-list 新しい特殊制御コマンドを定義する (require ³term+vars)37 (defun my-control-command (text) ...)38 (term+new-control-command39 "START" "END " ³my-control-command)40 例 (defun term+open (files &optional find-file) ...)41 (term+new-control-command42 "033]51;open;" "033" ³term+open)43 伊奈 林太郎 Emacs 上のターミナルを最強に 32
  35. 35. まとめ Emacs 上でだって端末機能をフルに使いたい! ◮ 256 色対応 ◮ xterm 互換性向上 ◮ キーバインド Emacs なのをいいことに魔改造 ◮ 編集機能の強化 ◮ ログ機能 ◮ マルチプレクサをまるごと実装 ◮ シェル連携しまくり 伊奈 林太郎 Emacs 上のターミナルを最強に 33
  36. 36. 参考URL 伊奈林太郎. このスライド. http://up.orezdnu.org/papers/kansai-emacs/%23x06/slide/slide.pdf. INA Lintaro. term+.el のソースリポジトリ. https://github.com/tarao/term-plus-el. INA Lintaro. term+.el の emacs 側設定例. https://github.com/tarao/dotfiles/blob/master/.emacs.d/init/term.el https://github.com/tarao/dotfiles/blob/master/.emacs.d/init/tarao/term.el. INA Lintaro. term+.el のシェル側設定例. https://github.com/tarao/dotfiles/blob/master/.zsh/eterm.zsh. 伊奈 林太郎 Emacs 上のターミナルを最強に 34
  37. 37. おわり

×