Blame view

plugins/web-search/web-search.plugin.zsh 1.61 KB
093a6c34b   mj   Squashed 'repos/r...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
  # web_search from terminal
  
  function web_search() {
    emulate -L zsh
  
    # define search engine URLS
    typeset -A urls
    urls=(
      google      "https://www.google.com/search?q="
      bing        "https://www.bing.com/search?q="
      yahoo       "https://search.yahoo.com/search?p="
      duckduckgo  "https://www.duckduckgo.com/?q="
      yandex      "https://yandex.ru/yandsearch?text="
    )
  
    # define the open command
    case "$OSTYPE" in
      darwin*)  open_cmd="open" ;;
      cygwin*)  open_cmd="cygstart" ;;
      linux*)   open_cmd="xdg-open" ;;
      *)        echo "Platform $OSTYPE not supported"
                return 1
                ;;
    esac
  
    # check whether the search engine is supported
    if [[ -z "$urls[$1]" ]]; then
      echo "Search engine $1 not supported."
      return 1
    fi
  
    # search or go to main page depending on number of arguments passed
    if [[ $# -gt 1 ]]; then
      # build search url:
      # join arguments passed with '+', then append to search engine URL
      url="${urls[$1]}${(j:+:)@[2,-1]}"
    else
      # build main page url:
      # split by '/', then rejoin protocol (1) and domain (2) parts with '//'
      url="${(j://:)${(s:/:)urls[$1]}[1,2]}"
    fi
  
    nohup $open_cmd "$url" &>/dev/null
  }
  
  
  alias bing='web_search bing'
  alias google='web_search google'
  alias yahoo='web_search yahoo'
  alias ddg='web_search duckduckgo'
  alias yandex='web_search yandex'
  
  #add your own !bang searches here
  alias wiki='web_search duckduckgo \!w'
  alias news='web_search duckduckgo \!n'
  alias youtube='web_search duckduckgo \!yt'
  alias map='web_search duckduckgo \!m'
  alias image='web_search duckduckgo \!i'
  alias ducky='web_search duckduckgo \!'