Termtterでuriを開こう! - uri-openの紹介と改良

Termtterにはstatus内のuriを開くための
uri-openという便利なpluginがある

> uri-open list または uo list

とすればstatusのuriが連番付きでリスト表示されるので
次いで

> uri-open 3

などとして対象のuriを選べばいい
このときexpand-tinyurlというpluginを使って
リスト表示されるuriを短縮形から直しておくのがいい


Termtterには入力のタブ補完機能があるので
長いcommand入力も苦にはならないけど
良く使うcommandにはaliasを割り当てるのが便利だ
.termtter/configファイルで以下のようにする

config.plugins.alias.aliases = {
  :o => 'uri-open',
  :ul => 'uri-open list',
}


また各statusには$amのようなIDが付いているので

> o in $am

とすればstatusを指定してopenできる
最も新しいstatusを開く場合は単に

> o

とすればいい


個別のuriを開くのが面倒ならば
不要なuri

> o delete 5

などとしてから

> o all

とすればすべて一度にopenすることもできる


uri-open allは確かに便利だけれど
listに大量のuriが入っている場合大変なことになる
そこで僕はuri-openを少しいじって
いくつかのuriをopenするsomeコマンドを追加してみた

uri-open.rb

7d6
< config.plugins.uri_open.set_default :some, 5
46,51d44
<   when /^some\s*(\d*)$/
<     some = $1.empty? ? config.plugins.uri_open.some : $1.to_i
<     some.times do
<       return unless uri = public_storage[:uris].shift
<       open_uri(uri)
<     end
83c75
<   %w(all list delete clear in some).grep(/^#{Regexp.quote arg}/).map {|a| "#{cmd} #{a}" }
---
>   %w(all list delete clear in).grep(/^#{Regexp.quote arg}/).map {|a| "#{cmd} #{a}" }


これにより

> o some

で最新の5つのuriがopenする

> o some 10

とすれば10のuriがopenする


.termtter/configに

config.plugins.uri_open.some = 3

とすればdefaultの5つを変更できる
またconfigに

config.plugins.alias.aliases = {
  :some= => 'eval config.plugins.uri_open.some='
}

とaliasを追加すれば

> some= 10

で一時的にdefaultを変更できる*1


それからuri-open in $am で個別にopenするときに
$を省略して

> o in am

と打てるようにもしてみた

uri-open.rb

68d60
<    id = Termtter::Client.typable_id_to_data(id) unless id =~ /\d+/


Termtterはこういった改良を簡単にできるので
便利だし勉強にもなる

*1:someと=の間にspaceを空けない