roseusでの効率的な作業方法#
概要#
roseusでプログラミングを行う際,コマンド履歴機能やコマンドライン編集機能を使えると作業効率が大幅に向上する.ここでは,roseusを快適に使うための2つの方法を紹介する.
方法1: Emacsのshellモードを使う#
Emacsのshellモード内でroseusを実行すると,Emacsの強力な編集機能とコマンド履歴機能を利用できる.
起動手順#
Emacsを起動する:
$ emacs
Emacs内で
M-x shellとタイプし,emacs-shellを起動するM-xは,Alt+xまたはEsc, xと入力することで実行できる
shellモード内で
roseusを実行する:
$ roseus
コマンド履歴の操作#
Emacsのshellモードでは,以下のショートカットでコマンド履歴を操作できる:
ショートカット |
機能 |
|---|---|
|
コマンド履歴を逆方向に遡る(前のコマンド) |
|
コマンド履歴を順方向にたどる(次のコマンド) |
|
コマンド履歴を検索する |
注意:通常のターミナルではCtrl+P,Ctrl+N,Ctrl+Rを使用するが,EmacsのshellモードではCtrlの代わりにAlt(またはMeta)を使用する.
Emacsの基本的なカーソル移動#
shellモード内では,Emacsの標準的なカーソル移動コマンドも使用できる:
ショートカット |
機能 |
|---|---|
|
行頭に移動 |
|
行末に移動 |
|
1文字前進 |
|
1文字後退 |
|
カーソル位置から行末まで削除 |
|
削除した文字列を貼り付け(ヤンク) |
Emacsのshellモードの利点#
Emacsの強力な編集機能をそのまま利用できる
コマンド出力の検索や編集が容易
複数のshellバッファを開いて並行作業が可能
roseusのコードをEmacsで編集しながら,同じウィンドウ内で実行・テストできる
方法2: rlwrapを使う#
rlwrapは,コマンド履歴やコマンドライン編集機能を持たないプログラムに対して,それらの機能を追加するラッパーツールである.
インストール#
$ sudo apt install rlwrap
使い方#
以下のコマンドでroseusを起動する:
$ rlwrap -c -b "(){}.,;|" -a -pGREEN roseus
このコマンドにより,以下の機能が利用可能になる:
Ctrl+P / Ctrl+N:コマンド履歴の前後移動
Ctrl+R:コマンド履歴の検索
Ctrl+A / Ctrl+E:行頭・行末への移動
矢印キー:カーソル移動やコマンド履歴の参照
括弧のマッチング:
-b "(){}.,;|"により括弧の対応が表示されるプロンプトの色付け:
-pGREENによりプロンプトが緑色で表示される
ファイルを引数として渡す#
rlwrapを使用する場合でも,通常通りファイルを引数として渡すことができる:
$ rlwrap -c -b "(){}.,;|" -a -pGREEN roseus kxr-interface.l
エイリアスの設定(便利)#
毎回長いコマンドを入力するのが面倒な場合は,~/.bashrcにエイリアスを設定すると便利である:
$ echo 'alias roseus="rlwrap -c -b \"(){}.,;|\" -a -pGREEN roseus"' >> ~/.bashrc
$ source ~/.bashrc
この設定後は,単にroseusと入力するだけでrlwrap付きのroseusが起動する.
コラム:EmacsキーバインドはMac OSで標準搭載されている#
Emacsのキーバインド(Ctrl+A,Ctrl+E,Ctrl+F,Ctrl+B,Ctrl+K,Ctrl+Yなど)は,実はMac OSの多くのアプリケーションで標準的に使用できる機能である.これは,Mac OSの基盤となっているNeXTSTEPがEmacsのキーバインドを採用していたことに由来する.
Mac OSで使えるEmacsキーバインドの例#
以下のショートカットは,Safari,Chrome,テキストエディット,メールアプリ,ターミナルなど,ほとんどのMac OSアプリケーションのテキスト入力欄で使用できる:
ショートカット |
機能 |
|---|---|
|
行頭に移動 |
|
行末に移動 |
|
1文字前進 |
|
1文字後退 |
|
次の行に移動 |
|
前の行に移動 |
|
カーソル位置から行末まで削除(キル) |
|
削除した文字列を貼り付け(ヤンク) |
|
カーソル位置の文字を削除 |
|
カーソルの左の文字を削除(Backspace) |
様々な場面で役立つ#
これらのキーバインドを覚えておくと,以下のような場面で役立つ:
Webブラウザのアドレスバー:URLを素早く編集できる
ターミナル:長いコマンドラインを効率的に編集できる
テキストエディタ:矢印キーに手を伸ばさずに編集できる
メールの作成:文章を素早く修正できる
ROSのプログラミング:本演習のようなroseus作業で特に有用
Mac OSユーザーは,日常的にこれらのキーバインドを使うことで,Emacsのshellモードやターミナル作業がより自然に感じられるだろう.また,Linux環境でもこれらのショートカットは広く使えるため,一度習得すれば様々な環境で効率的に作業できるようになる.
まとめ#
コマンド履歴機能により,一度入力したコマンドを簡単に再実行できるため,試行錯誤を繰り返すロボットプログラミングの開発サイクルが格段に快適になる.rlwrapとEmacsのshellモード,どちらも有用な方法であるため,自分の作業スタイルに合った方法を選んで活用すると良い.