Ubuntu Weekly Recipe

第38回 ターミナルソフトウェアにこだわる(2)

この記事を読むのに必要な時間:およそ 2.5 分

今回も前回に引き続き「ターミナルそのもの」に関するレシピをお届けします。

Emacsからターミナルを呼び出す

第32回第33回で紹介したように,geditやKateといったテキストエディタにはターミナルを組み込んだ状態で利用することができます。

テキストエディタを頻繁に利用する場合はこれらを利用した方が便利でしょう。

EmacsでもgeditやKateと同様に,組み込みターミナルを利用することができます。Emacsでターミナルを利用する場合は複数の方法があり,それぞれ特性が異なります。

Emacs::shell

Emacsのごく標準的な組み込みターミナルは,M-x shellで起動することができます図1)。

図1 M-x shell

図1 M-x shell

しかし,上記のスクリーンショットでも部分的に文字が化けている通り,このモードはターミナルとしての機能に制限があります。端的には[tab]による補完なども機能しませんし,「ターミナルソフトウェア」としては不完全なものです注1)。

多くの場合,このモードはあまり役に立たないと思われます。

注1)
これらの問題を設定で回避することも可能ですが,多くの場合は後述のeshellやansi-termを利用した方が便利でしょう。

Emacs::eshell

eshellは,EmacsのLispインタープリタを利用して構築されたシェルです。Emacs22以降,Emacsに組み込まれていますので,コマンド入力インターフェースとして利用することができます図2)。M-x eshellとすることで起動できます。

図2 M-x eshell

図2 M-x eshell

eshellは厳密には「ターミナル」ではありませんので,vimなどを内部で動作させることこそできません(起動することはできますが,うまくカーソルを処理することができません)が,Emacs内で使うターミナルとして軽快に動作させることができるでしょう。

積極的に使うのであれば,Emacs WikiEmacs 電子書棚のWikiなどから設定例を探すと良いでしょう。

Emacs::ansi-term

Emacs内で使えるターミナル機能として,もっとも使い勝手の良い実装はansi-termでしょう。M-x ansi-termで起動することができます図3)。

図3 M-x ansi-term

図3 M-x ansi-term

ansi-termはほぼフル機能のターミナルとして機能するため,Emacs上でターミナル上で動作するたいていのソフトウェアを動作させることができます。

Emacs内でターミナルをトグルで呼び出す(shell-toggle)

ansi-termは便利な機能なのですが,テキスト入力の途中でターミナルを呼び出し,またテキスト入力に戻る,といった操作を行うことを考えると,あまり便利ではありません。頻繁にEmacs内でターミナルを利用するのであれば,shell-toggleを導入するのが良いでしょう。

オリジナルのshell-toggleはansi-termを制御することができませんので,ansi-termに対応したパッチ版を利用すると良いでしょう。

インストールは次のように行います。

$ mkdir .emacs.d
$ cd .emacs.d
$ wget http://www.linux-france.org/article/appli/emacs/bibliotheque.html/shell-toggle-patched.el

さらに,emacs.elに以下のコードを追加します注2)。

リスト1 

(load-library "~/.emacs.d/shell-toggle-pathed.el")
  (autoload 'shell-toggle "shell-toggle"
   "Toggles between the *shell* buffer and whatever buffer you are editing."
   t)
  (autoload 'shell-toggle-cd "shell-toggle"
   "Pops up a shell-buffer and insert a \"cd <file-dir>\" command." t)
  (global-set-key "\C-ct" 'shell-toggle)
  (global-set-key "\C-cd" 'shell-toggle-cd)
注2)
shell-toggleのオリジナルでは[Ctrl]+[F1][Alt]+[F1]に各コマンドを割り当てていますが,[F1]が含まれるキーシーケンスはgnome-terminal上では利用できませんので変更しています(ヘルプが呼び出されてしまいます)。

これにより,C-c tを入力するたびに,「ansi-termを下側ウインドウを分割して表示」「ansi-termをウインドウ全体に表示」「ansi-termを消去し,元の画面に戻す」という動作を行うようになります。

ほとんどホームポジションから指を離さずにターミナルを呼び出すことができますので,便利に利用することができるでしょう。

なお,eshellを利用している場合は,esh-toglle.elを利用することで同じような使い方が可能です。

著者プロフィール

吉田史(よしだふみひと)

Ubuntu Japanese Team Member株式会社創夢所属。システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。

コメント

  • Re:

    リスト1の1行目のファイル名が間違っています。
    (load-library "~/.emacs.d/shell-toggle-pathed.el")

    (load-library "~/.emacs.d/shell-toggle-patched.el")

    Commented : #1  hozumi (2010/01/28, 04:48)

コメントの記入