LoginSignup
11
8

More than 5 years have passed since last update.

コマンドラインからWeb検索

Last updated at Posted at 2016-02-27

英単語の意味など、端末からささっと検索したいことってありませんか?
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の通ったディレクトリに置くことを忘れずに。

screen_003.png

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製のツールよりはかなりシンプルで、自分でいろいろ検索先を追加できると思うので、興味のある人はどんどんカスタマイズして使ってみてください。

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8