Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
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...
おわり
Prochain SlideShare
Chargement dans…5
×

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

6 632 vues

Publié le

2012-10-20 @関西Emacs#x06

Publié dans : Logiciels
  • Soyez le premier à commenter

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. おわり

×