Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

ssh0
[興味]物理/数学/Python/Linux/ShellScript 編集リクエスト、コメント、フォロー等はお気軽に。
http://ssh0.hatenablog.com/
team-lab
最新のテクノロジーを活用したシステムやデジタルコンテンツの開発を行うウルトラテクノロジスト集団
https://www.team-lab.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした