Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
oh-my-zsh
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
github
oh-my-zsh
Commits
f0bbd308
Commit
f0bbd308
authored
Feb 10, 2015
by
Robby Russell
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #3443 from mcornella/better-web-search-plugin
Refactor and improve web-search plugin
parents
aab75327
02d75684
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
33 additions
and
28 deletions
+33
-28
web-search.plugin.zsh
plugins/web-search/web-search.plugin.zsh
+33
-28
No files found.
plugins/web-search/web-search.plugin.zsh
View file @
f0bbd308
# web_search from terminal
function
web_search
()
{
# get the open command
local
open_cmd
if
[[
"
$OSTYPE
"
=
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="
)
# 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
[[
!
$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 '+'
nohup
$open_cmd
"
$url
"
>
/dev/null 2&>1
nohup
$open_cmd
"
$url
"
&>/dev/null
}
...
...
@@ -45,6 +48,8 @@ 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'
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment