1 # web_search from terminal
3 function web_search() {
6 # define search engine 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="
29 # check whether the search engine is supported
30 if [[ -z "$urls[$1]" ]]; then
31 echo "Search engine '$1' not supported."
35 # search or go to main page depending on number of arguments passed
36 if [[ $# -gt 1 ]]; then
38 # join arguments passed with '+', then append to search engine URL
39 url="${urls[$1]}$(omz_urlencode ${@[2,-1]})"
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]}"
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'
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 \!'
76 # other search engine aliases
77 if [[ ${#ZSH_WEB_SEARCH_ENGINES} -gt 0 ]]; then
79 engines=($ZSH_WEB_SEARCH_ENGINES)
80 for key in ${(k)engines}; do
81 alias "$key"="web_search $key"