Termtterのプロンプトに関するアイディア
というほど大それたものではないのですが……。
Termtterのプロンプトは、コマンドを入力するとき以外は、出ていなくてもいいんじゃないかな、と思ったのが出発点です。
必要なときは、たとえば":"キーなどを入力すると、タイムラインの流れを止めてプロンプトが現れます。コマンドを入力し終わったら、ふたたびタイムラインが流れます。
「日本語入力中にタイムラインが流れて……」というトラブルを避けることができるでしょう。
ショートカット
しかし、上記のような動作をする場合、":"キーのぶん打鍵数が増えるのが業腹ですね(?)。
そこで、よく使うコマンドは、一発で呼び出せるようにするとよいのではないでしょうか。
たとえば、"u"キーを押すと
update >
というようなプロンプトが現れて、いきなりポストする内容を入力する、というようなものです。
さらに、引数をとらないコマンド("exit", "help", etc...)などは、プロンプトを呼ばずに、そのまま実行してしまうのもよさそうです。
とりあえず
百聞は一見になんとやら、上記のような動作をざっくりと実装してみたので、おひまな方は試してみてください。
ktgy's termtter at master - GitHub
動作については、ruby 1.8.7-p174 + Terminal.app + screenという環境で確認をしています。iTermでも大丈夫でした。
デフォルトでは、以下のような設定になっています。
ショートカット・プロンプト
キー | コマンド |
---|---|
: | なし |
d | direct |
D | delete |
f | fib |
F | favorite |
l | list |
o | open |
p | profile |
R | reply |
s | search |
t | retweet |
u | update |
プロンプトを呼んだ後、なにもせずプロンプトから抜けるには、"Control + d"です。
ショートカット・プロンプトの実体は、"curry"コマンドを呼んでからプロンプトを呼んでいる、というだけです。そのため、通常の"curry"コマンドが使えなくなっています(プロンプトからコマンド実行後、必ず"uncurry"されるため)。
ダイレクト・コマンド
キー | コマンド |
---|---|
c | clear |
L | ラインを引く |
q | quit |
r | replies |
? | help |
Esc | screenのcopyモードを呼ぶ(screen上での動作を想定) |
問題点
- たぶんWindowsでは動きません
- Win32APIを使えば可能?
- プロンプトが出ないぶん、動作が分かりづらいかも
- 起動時に、簡易ヘルプのようなものを表示するとか?
- ショートカット・プロンプトでは、タブ補完がうまくいきません