diff options
Diffstat (limited to 'plugins/web-search')
| -rw-r--r-- | plugins/web-search/web-search.plugin.zsh | 59 | 
1 files changed, 29 insertions, 30 deletions
| diff --git a/plugins/web-search/web-search.plugin.zsh b/plugins/web-search/web-search.plugin.zsh index 8eedb90ee..d3bf97d75 100644 --- a/plugins/web-search/web-search.plugin.zsh +++ b/plugins/web-search/web-search.plugin.zsh @@ -1,45 +1,39 @@  # web_search from terminal  function web_search() { - -  # get the open command -  local open_cmd -  if [[ $(uname -s) == 'Darwin' ]]; then -    open_cmd='open' -  else -    open_cmd='xdg-open' -  fi +  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=" +    github      "https://github.com/search?q=" +    baidu       "https://www.baidu.com/s?wd=" +    ecosia      "https://www.ecosia.org/search?q=" +  )    # check whether the search engine is supported -  if [[ ! $1 =~ '(google|bing|yahoo|duckduckgo)' ]]; -  then +  if [[ -z "$urls[$1]" ]]; then      echo "Search engine $1 not supported."      return 1    fi -  local url="http://www.$1.com" - -  # no keyword provided, simply open the search engine homepage -  if [[ $# -le 1 ]]; then -    $open_cmd "$url" -    return -  fi -  if [[ $1 == 'duckduckgo' ]]; then -  #slightly different search syntax for DDG -    url="${url}/?q=" +  # 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 -    url="${url}/search?q=" +    # build main page url: +    # split by '/', then rejoin protocol (1) and domain (2) parts with '//' +    url="${(j://:)${(s:/:)urls[$1]}[1,2]}"    fi -  shift   # shift out $1 - -  while [[ $# -gt 0 ]]; do -    url="${url}$1+" -    shift -  done -  url="${url%?}" # remove the last '+' -   -  $open_cmd "$url" +  open_command "$url"  } @@ -47,6 +41,11 @@ 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' +alias github='web_search github' +alias baidu='web_search baidu' +alias ecosia='web_search ecosia' +  #add your own !bang searches here  alias wiki='web_search duckduckgo \!w'  alias news='web_search duckduckgo \!n' | 
