In Chrome, you can highlight some text on a web page and use the right-click context menu to open a google search for the selected text in a new tab.
It would be super convenient if I could access this feature using a keyboard shortcut instead of the right-click menu. I've tried searching for existing extensions and also scoured the list of existing keyboard shortcuts here:
Does anybody know a way to accomplish this?
19 Answers
This will work while in Chrome:
- First highlight some text
- Hit CTRL+C - This copies the text
- Hit CTRL+T - This creates a new tab and makes it the focus
- Hit CTRL+V - This pastes the text in the Omnibox (Chrome defaults the cursor there)
- Hit Enter - This will search the text in the Omnibox
Want to automate it? Use AutoHotKey to make it an automatic macro using CTRL+Alt+SUse this script::
^!s:: Send ^c Send ^t Send ^v Send {Enter}
ReturnFYI, I tested this script and it works in Chrome.
1I have two answers for this in AHK as well.
This is global applicable anywhere (not only in chrome). Just select text and press Windows+G
#g:: ;;Google selected text Send, ^c Run,
ReturnOne is this from my answer here. Select Text and press Windows+Shift+G. This is different in that it just gives you a link on the clipboard.
; Search google for the highlighted word
; then get the first link address and put it on the Clipboard
^!r:: Reload
#+g:: bak = %clipboard% Send, ^c ;clipboard = %bak%`r`n%clipboard% Query = %clipboard% wb := ComObjCreate("InternetExplorer.Application") ;wb := IEGet() wb.Visible := false wb.Navigate("" Query) While wb.readyState != 4 || wb.document.readyState != "complete" || wb.busy ; wait for the page to load sleep 100 ; loop % (Nodes := wb.document.getElementById("rso").childNodes).length ; Links_urls .= (A_index = 1) ? Nodes[A_index-1].getElementsByTagName("a")[0].href : "`n" . Nodes[A_index-1].getElementsByTagName("a")[0].href ; Msgbox %Links_urls% Nodes := wb.document.getElementById("rso").childNodes First_link := Nodes[0].getElementsByTagName("a")[0].href Clipboard = %First_link% TrayTip, First Link on Google Search, %First_link% `r`n Ctrl+V to paste the link
return 3 Based on what Parivar Saraff has suggested here, here is a 3 in 1 AutoHotKey Script:
;Hotkey Modifier Symbols (for how to customize the hotkeys)
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
; Google-search selected text
; Usage:ctrl+shift+G
^+g::
{ Send, ^c Sleep 150 Run, ;(изм.себе на google.com.ua)
Return
}
; Google-dictionary selected text
; Usage:ctrl+shift+D
^+d::
{ Send, ^c Sleep 150 Run, ;(изм.себе на google.com.ua)
Return
}
; Wikipedia-search selected text by using google "site:" operator
; Usage:ctrl+shift+W
^+w::
{ Send, ^c Sleep 150 Run, %Clipboard% ;(изм.себе на google.com.ua)
Return
}also highlighted text conversion script(a combination of such script variations on the web):
;Hotkey Modifier Symbols (for how to customize the hotkeys) ;Hotkey Modifier Symbols (for how to customize the hotkeys)
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
cycleNumber := 1
#IfWinNotActive ahk_class XLMAIN ;Highlighting any text, and then pressing that HotKey will cycle through the 4 most common text casings, converting the highlighted text right in-line. ;For example: ;If you highlight "This is a test sentence", and then hit that HotKey once, it'll make it all UPPERCASE ("THIS IS A TEST SENTENCE"). ;Hit the HotKey again, it'll convert it to lowercase ("this is a test sentence"). ;Hit it again and it'll convert it to Sentence case ("This is a test sentence"). (First letter is capitalized, rest is lower-case). ;Finally, hit it one more time and it'll convert it to Mixed case, or what I often call, "camel-case" ("This Is A Test Sentence"). (Each word is capitalized).
; Usage:Ctrl+Shift+C
^+c::
If (cycleNumber==1)
{
ConvertUpper()
cycleNumber:= 2
}
Else If (cycleNumber==2)
{
ConvertLower()
cycleNumber:= 3
}
Else If (cycleNumber==3)
{
ConvertSentence()
cycleNumber:= 4
}
Else
{
ConvertMixed()
cycleNumber:= 1
}
Return
ConvertUpper()
{ clipSave := Clipboard Clipboard = ; Empty the clipboard so that ClipWait has something to detect SendInput, ^c ; Copies selected text ClipWait StringReplace, Clipboard, Clipboard, `r`n, `n, All ; Fix for SendInput sending Windows linebreaks StringUpper, Clipboard, Clipboard Len:= Strlen(Clipboard) ;Set number of characters ;Set number of characters SendInput, ^v ; Pastes new text Send +{left %Len%} ;Re-select text VarSetCapacity(clipSave, 0) ; Free memory Clipboard := clipSave ;Restore previous clipboard
}
ConvertLower()
{ clipSave := Clipboard Clipboard = ; Empty the clipboard so that ClipWait has something to detect SendInput, ^c ; Copies selected text ClipWait StringReplace, Clipboard, Clipboard, `r`n, `n, All ; Fix for SendInput sending Windows linebreaks StringLower, Clipboard, Clipboard Len:= Strlen(Clipboard) ;Set number of characters SendInput, ^v ; Pastes new text Send +{left %Len%} ;Re-select text VarSetCapacity(clipSave, 0) ; Free memory Clipboard := clipSave ;Restore previous clipboard
}
ConvertSentence()
{ clipSave := Clipboard Clipboard = ; Empty the clipboard so that ClipWait has something to detect SendInput, ^c ; Copies selected text ClipWait StringReplace, Clipboard, Clipboard, `r`n, `n, All ; Fix for SendInput sending Windows linebreaks StringLower, Clipboard, Clipboard Clipboard := RegExReplace(Clipboard, "(((^|([.!?]+\s+))[a-z])| i | i')", "$u1") Len:= Strlen(Clipboard) ;Set number of characters SendInput, ^v ; Pastes new text Send +{left %Len%} ;Re-select text VarSetCapacity(clipSave, 0) ; Free memory Clipboard := clipSave ;Restore previous clipboard
}
ConvertMixed()
{ clipSave := Clipboard Clipboard = ; Empty the clipboard so that ClipWait has something to detect SendInput, ^c ; Copies selected text ClipWait StringReplace, Clipboard, Clipboard, `r`n, `n, All ; Fix for SendInput sending Windows linebreaks StringUpper Clipboard, Clipboard, T Len:= Strlen(Clipboard) ;Set number of characters SendInput, ^v ; Pastes new text Send +{left %Len%} ;Re-select text VarSetCapacity(clipSave, 0) ; Free memory Clipboard := clipSave ;Restore previous clipboard
}
#IfWinNotActive ; Convert selected text to inverted case ; Ex: THIS_is-a_tESt -> this_IS-A_TesT
; Usage:ctrl+Shift+I
^+i:: Convert_Inv()
RETURN
Convert_Inv()
{ ; save original contents of clipboard Clip_Save:= ClipboardAll ; empty clipboard Clipboard:= "" ; copy highlighted text to clipboard Send ^c{delete} ; clear variable that will hold output string Inv_Char_Out:= "" ; loop for each character in the clipboard Loop % Strlen(Clipboard) { ; isolate the character Inv_Char:= Substr(Clipboard, A_Index, 1) ; if upper case if Inv_Char is upper { ; convert to lower case Inv_Char_Out:= Inv_Char_Out Chr(Asc(Inv_Char) + 32) } ; if lower case else if Inv_Char is lower { ; convert to upper case Inv_Char_Out:= Inv_Char_Out Chr(Asc(Inv_Char) - 32) } else { ; copy character to output var unchanged Inv_Char_Out:= Inv_Char_Out Inv_Char } } ; send desired text Send %Inv_Char_Out% Len:= Strlen(Inv_Char_Out) ; highlight desired text Send +{left %Len%} ; restore original clipboard Clipboard:= Clip_Save
} ; Text–only paste from ClipBoard (while the clipboard formatted text itself is being untouched)
; Usage:ctrl+Shift+I
^+v:: Clip0 = %ClipBoardAll% Clipboard = %Clipboard% ; Convert clipboard text to plain text. StringReplace, clipboard, clipboard,%A_SPACE%",", All ; Remove space introduced by WORD StringReplace, Clipboard, Clipboard, `r`n, `n, All ; Fix for Send sending Windows linebreaks Send ^v ; For best compatibility: SendPlay Sleep 50 ; Don't change clipboard while it is pasted! (Sleep > 0) ClipBoard = %Clip0% ; Restore original ClipBoard VarSetCapacity(Clip0, 0) ; Free memory
Return ; Wrap selected text in double quotes->" "
; Usage:Ctrl+Shift+Q
^+q:: clipSave := Clipboard Clipboard = ; Empty the clipboard so that ClipWait has something to detect SendInput, ^c ; Copies selected text ClipWait StringReplace, Clipboard, Clipboard, `r`n, `n, All ; Fix for SendInput sending Windows linebreaks Clipboard := Chr(34) . Clipboard . Chr(34) Len:= Strlen(Clipboard) ;Set number of characters SendInput, ^v ; Pastes new text Send +{left %Len%} ;Re-select text VarSetCapacity(clipSave, 0) ; Free memory Clipboard := clipSave ;Restore previous clipboard
Return
; RELOAD
!+^x:: SplashTextOn,,,Updated script, Sleep,200 SplashTextOff Reload Send, ^s
Return Apparently, pressing S after activating the context menu on a highlighted text will do just that (Chrome 78 here). The context menu can be opened with Shift+F10 or with the dedicated "context menu" button on your keyword.
These two shortcuts can be combined into one using AutoHotKey:
^g:: Send +{F10} Send s
ReturnThis, for example, will make Ctrl+G search for the highlighted text in a new tab.
The major advantage of this method over @Keltari answer is that it doesn't use the clipboard and thus doesn't overwrite previous values there.
Using AutoHotKey as above
^!s:: Send ^c Sleep 100 Send ^t Send ^v Send {Enter}
ReturnNOTICE: I added 'Sleep 100' to avoid previous clipboard search
Slight modification to the AutoHotKey scripts above that worked best for me:
^!s:: tmp := clipboard Send, ^c Sleep 100 Run, clipboard := tmp
ReturnThis doesn't nuke the previous clipboard value, and the added Sleep ensures that the clipboard has indeed been updated with the new value before you search.
This extension can help you:
After instaling mark those options:
*Open search results in a new tab by default (does not affect hotkeys; press Ctrl or middle-click to toggle new tab)
*Open new tabs in the foreground by default (press Shift to toggle between foreground and background)
Now you are able to run search for selected text with Ctrl+Shift+Alt+G shortcut
This repo provides an Autohotkey script that can be used to search google for your selected text from any window. The advantage is that it does not change your clipboard.
For the sake of completeness I quote the code:
; win+shift+g googles currently selected text
#+g::GoogleSelection()
; win+shift+w looks up selected word in Google Dictionary
#+w::DefineSelection()
GoogleSelection() { searchQuery := Trim(GetSelectedText()) if !searchQuery { Run, return } address := Format("", searchQuery) Run, %address%
}
DefineSelection() { word := Trim(GetSelectedText()) if !word { Run, return } address := Format("", word) Run, %address%
}
GetSelectedText() { oldClipboard := ClipboardAll Clipboard := "" Send, {CtrlDown}c{CtrlUp} ClipWait, 0, false if ErrorLevel { return Fail(oldClipboard) } selection := Clipboard Clipboard := "" Send, {ShiftDown}{Right}{ShiftUp}{CtrlDown}c{CtrlUp}{ShiftDown}{Left}{ShiftUp} ClipWait, 0, false if ErrorLevel { return Fail(oldClipboard) } if !InStr(Clipboard, selection) { Clipboard := "" Send, {ShiftDown}{Left}{ShiftUp}{CtrlDown}c{CtrlUp}{ShiftDown}{Right}{ShiftUp} ClipWait, 0, false if ErrorLevel or !InStr(Clipboard, selection) { return Fail(oldClipboard) } } Clipboard := oldClipboard return selection
}
Fail(oldClipboard) { Clipboard := oldClipboard return ""
} 2 Use this extension
how to use it:
- Select text on a web page using the mouse.
- Press a keyboard shortcut to search for the selected text on your desired website.
Default shortcuts:
Alt+Q = Google
Alt+W = Wikipedia
Alt+A = Google Images
Alt+S = YouTube
and if you want to automate many tasks us this custom hotkey extension for chrome
3