web-search.plugin.zsh 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. # web_search from terminal
  2. function web_search() {
  3. emulate -L zsh
  4. # define search engine URLS
  5. typeset -A urls
  6. urls=(
  7. google "https://www.google.com/search?q="
  8. bing "https://www.bing.com/search?q="
  9. yahoo "https://search.yahoo.com/search?p="
  10. duckduckgo "https://www.duckduckgo.com/?q="
  11. startpage "https://www.startpage.com/do/search?q="
  12. yandex "https://yandex.ru/yandsearch?text="
  13. github "https://github.com/search?q="
  14. baidu "https://www.baidu.com/s?wd="
  15. ecosia "https://www.ecosia.org/search?q="
  16. )
  17. # check whether the search engine is supported
  18. if [[ -z "$urls[$1]" ]]; then
  19. echo "Search engine $1 not supported."
  20. return 1
  21. fi
  22. # search or go to main page depending on number of arguments passed
  23. if [[ $# -gt 1 ]]; then
  24. # build search url:
  25. # join arguments passed with '+', then append to search engine URL
  26. url="${urls[$1]}${(j:+:)@[2,-1]}"
  27. else
  28. # build main page url:
  29. # split by '/', then rejoin protocol (1) and domain (2) parts with '//'
  30. url="${(j://:)${(s:/:)urls[$1]}[1,2]}"
  31. fi
  32. open_command "$url"
  33. }
  34. alias bing='web_search bing'
  35. alias google='web_search google'
  36. alias yahoo='web_search yahoo'
  37. alias ddg='web_search duckduckgo'
  38. alias sp='web_search startpage'
  39. alias yandex='web_search yandex'
  40. alias github='web_search github'
  41. alias baidu='web_search baidu'
  42. alias ecosia='web_search ecosia'
  43. #add your own !bang searches here
  44. alias wiki='web_search duckduckgo \!w'
  45. alias news='web_search duckduckgo \!n'
  46. alias youtube='web_search duckduckgo \!yt'
  47. alias map='web_search duckduckgo \!m'
  48. alias image='web_search duckduckgo \!i'
  49. alias ducky='web_search duckduckgo \!'