英単語の意味など、端末からささっと検索したいことってありませんか?
Go言語製のsなんてのもありますが、自分でも勉強の為に書いてみました。シェルスクリプトなので、パスが通ってるところに置いてあげればいいです。
使い方
一番簡単な使い方
s foo bar
とすれば、環境変数$BROWSERCLI
で指定したブラウザ(w3m等)でGoogle検索("foo bar")して、tmuxの中だったらペインの大きさに応じて分割、あるいは新規ウィンドウで検索結果を表示します。
検索先を変えたい
s m 東京スカイツリー
のように、第一引数に検索先のalias("m")を指定することもできて、上の例の場合、環境変数$BROWSER
で指定したGUIのブラウザ上でGoogle Mapで"東京スカイツリー"を検索できます。
この対応は例に倣ってprovidersというファイルに書くことにしました。このファイルを編集することで、どんどん新しい検索先を追加していくことができます。
フォーマットは以下のようにしました。
","で区切られた1番目の部分をエイリアスとして使い、二番目の領域を使用するURLに、3番目の領域はGUIで表示されるべきものかどうかを指定するようにしました。
A,url,{true|false}
| | |
| | +--- Open in GUI browser or not.
| +--- Set the search providers url. Search query is placed in "%s".
+--- Alias for the provider.
例:
m,https://www.google.com/maps/place/%s,true
Zsh補完関数
ただ、それだけだと忘れてしまう検索先もあると思うので、Zsh用補完関数_s
も書きました。_describe -t
を使うことで、新たに検索先が追加されても、この補完関数自体を編集する必要はありません。
参考: zsh: 20 Completion Systemの
_describe
の項
補完のオプションで
zstyle ':completion:*' verbose yes
として、コマンドの説明も表示するようにしておけば、providers
ファイルに書いた説明がそのまま補完で使われるようになります。
$fpath
の通ったディレクトリに置くことを忘れずに。
providers
のコメントフォーマットは以下のようになっています。区切りには": "を使うことにしました。
# "
で始まる行が補完関数で使用される対象となります。
+--- Line that matches with '^# \"' is used for printing providers lists.
| +--- After ': ' parts is also used for printing providers lists.
| | +--- After the second ': ' is real comment.
| | |
# "A": Some description here: This field is ignored by completion.
例:
# "m": Google Map: Search with Google Map and open page in GUI browser.
最後に
個人的にはZsh補完関数についてさらに調べられたので良かったです。
最初に紹介したGo製のツールよりはかなりシンプルで、自分でいろいろ検索先を追加できると思うので、興味のある人はどんどんカスタマイズして使ってみてください。