]> src.twobees.de Git - dotfiles.git/blob - stow/oh-my-zsh/.oh-my-zsh/plugins/web-search/web-search.plugin.zsh
initial
[dotfiles.git] / stow / oh-my-zsh / .oh-my-zsh / plugins / web-search / web-search.plugin.zsh
1 # web_search from terminal
2
3 function web_search() {
4   emulate -L zsh
5
6   # define search engine URLS
7   typeset -A urls
8   urls=(
9     $ZSH_WEB_SEARCH_ENGINES
10     google          "https://www.google.com/search?q="
11     bing            "https://www.bing.com/search?q="
12     brave           "https://search.brave.com/search?q="
13     yahoo           "https://search.yahoo.com/search?p="
14     duckduckgo      "https://www.duckduckgo.com/?q="
15     startpage       "https://www.startpage.com/do/search?q="
16     yandex          "https://yandex.ru/yandsearch?text="
17     github          "https://github.com/search?q="
18     baidu           "https://www.baidu.com/s?wd="
19     ecosia          "https://www.ecosia.org/search?q="
20     goodreads       "https://www.goodreads.com/search?q="
21     qwant           "https://www.qwant.com/?q="
22     givero          "https://www.givero.com/search?q="
23     stackoverflow   "https://stackoverflow.com/search?q="
24     wolframalpha    "https://www.wolframalpha.com/input/?i="
25     archive         "https://web.archive.org/web/*/"
26     scholar         "https://scholar.google.com/scholar?q="
27   )
28
29   # check whether the search engine is supported
30   if [[ -z "$urls[$1]" ]]; then
31     echo "Search engine '$1' not supported."
32     return 1
33   fi
34
35   # search or go to main page depending on number of arguments passed
36   if [[ $# -gt 1 ]]; then
37     # build search url:
38     # join arguments passed with '+', then append to search engine URL
39     url="${urls[$1]}$(omz_urlencode ${@[2,-1]})"
40   else
41     # build main page url:
42     # split by '/', then rejoin protocol (1) and domain (2) parts with '//'
43     url="${(j://:)${(s:/:)urls[$1]}[1,2]}"
44   fi
45
46   open_command "$url"
47 }
48
49
50 alias bing='web_search bing'
51 alias brs='web_search brave'
52 alias google='web_search google'
53 alias yahoo='web_search yahoo'
54 alias ddg='web_search duckduckgo'
55 alias sp='web_search startpage'
56 alias yandex='web_search yandex'
57 alias github='web_search github'
58 alias baidu='web_search baidu'
59 alias ecosia='web_search ecosia'
60 alias goodreads='web_search goodreads'
61 alias qwant='web_search qwant'
62 alias givero='web_search givero'
63 alias stackoverflow='web_search stackoverflow'
64 alias wolframalpha='web_search wolframalpha'
65 alias archive='web_search archive'
66 alias scholar='web_search scholar'
67
68 #add your own !bang searches here
69 alias wiki='web_search duckduckgo \!w'
70 alias news='web_search duckduckgo \!n'
71 alias youtube='web_search duckduckgo \!yt'
72 alias map='web_search duckduckgo \!m'
73 alias image='web_search duckduckgo \!i'
74 alias ducky='web_search duckduckgo \!'
75
76 # other search engine aliases
77 if [[ ${#ZSH_WEB_SEARCH_ENGINES} -gt 0 ]]; then
78   typeset -A engines
79   engines=($ZSH_WEB_SEARCH_ENGINES)
80   for key in ${(k)engines}; do
81     alias "$key"="web_search $key"
82   done
83   unset engines key
84 fi