是否有一个 VIM 插件可以让你用 Google 搜索选定的文本?

是否有一个 VIM 插件可以让你用 Google 搜索选定的文本?

我希望能够选择一个文本并执行在浏览器中打开谷歌搜索的命令。

现在,我只是复制和粘贴。有没有什么插件可以做到这一点?我使用的是 Mac OSX。

答案1

当我看到你的问题时,我花了大约 5 分钟的时间写了这篇文章,但它在 Linux 上还是有效的。当然,将“ firefox”更改为你最喜欢的浏览器的命令,然后更改<F6>为你想要执行此操作的任何键或组合键。

function! GoogleSearch()
     let searchterm = getreg("g")
     silent! exec "silent! !firefox \"http://google.com/search?q=" . searchterm . "\" &"
endfunction
vnoremap <F6> "gy<Esc>:call GoogleSearch()<CR>

这使用 g 寄存器,因此不要将 g 寄存器用于任何您不想通过调用此命令覆盖的内容。我也没有对其进行过多测试。

对于 Mac,第三行可能需要稍微更改:

silent! exec "silent! !firefox \"http://google.com/search?q=" . searchterm . "\""

但没有 Mac 可以测试,所以我不知道。

答案2

为什么不使用:

xnoremap <f1> "zy:!firefox "http://www.google.com/search?q=<c-r>=substitute(@z,' ','%20','g')<cr>"<return>gv

(由于您是 Mac 用户,您可能会firefox用其他浏览器替换!)

请注意,如果您的单词包含&或 ,#您可能必须对它们以及%26和进行转义%23

答案3

扩展 frabjous 的想法,因为该功能使我的屏幕变黑并在中间打印“在现有浏览器会话中创建新窗口”(这是直接运行 google-chrome 的终端输出)。

function! GoogleSearch()
  " Now with > /dev/null to prevent writing to the screen
  silent! exec "silent! !google-chrome \"http://google.com/search?q=" . @g . "\" > /dev/null"
  " Without this, vim goes blank
  redraw!
endfunction
vnoremap <F6> "gy<Esc>:call GoogleSearch()<CR>
" Added this to google the word under the cursor
nnoremap <leader>goo b"gye:call GoogleSearch()<CR>

答案4

如果您firefox使用上述命令切换open,则无论默认浏览器设置为什么,它都会起作用。只要您使用的是 OS X。

相关内容