在Vim中用Web浏览器打开当前文件

18
我希望能够将我目前在vim编辑的HTML文件发送到我的Chrome浏览器中,我正在运行Linux。
这样做已经让我接近了目标:
nmap <silent> <leader>w :!google-chrome % &
浏览器会打开并显示正确的文件。但是命令没有在后台运行,这正是&应该做的事情。相反,vim进入了后台,我在终端窗口中得到一些文本输出。然后我必须点击一些东西并按Enter键才能让我的vim回到前台。
我有什么遗漏的吗?
更新:感谢所有的建议。问题似乎是当浏览器窗口打开时,焦点似乎从我的终端窗口转移走了。不确定我能否解决这个问题。

发现这个很有用(有点像RTFM的回答):http://vim.wikia.com/wiki/Preview_current_HTML_file - Trib
11个回答

9

我的 .vimrc 文件:

nnoremap <F12>f :exe ':silent !firefox %'<CR>
nnoremap <F12>c :exe ':silent !chromium-browser %'<CR>
nnoremap <F12>o :exe ':silent !opera %'<CR>

这三个命令可以在所选浏览器中打开当前文件,而不会产生任何副作用。但是使用<F12>只适用于GVim。


1
使用sensible-browser打开默认浏览器怎么样? - Christian
在OS X上,我注意到!open%似乎工作得很好,对于包含非\'元字符的文件,!open'%'略微更好。 - Greg Nisbet
如果Chrome或Firefox尚未启动,则会导致Vim或Neovim被卡住,直到您关闭浏览器。 - still_dreaming_1

5

对于Mac电脑,您可能需要输入类似以下的内容:

nnoremap <F12>f :exe ':silent !open -a /Applications/Firefox.app %'<CR>
nnoremap <F12>c :exe ':silent !open -a /Applications/Google\ Chrome.app %'<CR>
nnoremap <F12>g :exe ':silent !open -a /Applications/Google\ Chrome.app %'<CR>
nnoremap <F12>s :exe ':silent !open /Applications/Safari.app %'<CR>

注意末尾是Safari.app,这样可以节省几分钟时间。 :)


4
这个命令是用来打开 Google Chrome 浏览器的,可以在命令行窗口中直接运行。

这只是要求 Vim 运行终端命令,不确定能否在帮助文件中找到参考。 - Yannick Schall
帮帮忙!和帮助% - Yannick Schall
实际上,我对这个名字格式“Google\ Chrome”感到困惑。但是我发现它的确是这样命名的“/Applications/Google\ Chrome.app/”。 - hiveer

3
您可以 静默 执行 Chrome:
nmap <silent> <leader>w :exec 'silent !google-chrome % &'

:exe[cute] {expr1} ..会执行通过对{expr1}求值得到的字符串作为Ex命令的结果。


谢谢,但我仍然得到类似的结果。它正在写入标准输出,在现有浏览器会话中创建新窗口。我尝试将输出重定向到/dev/null,但也没有起作用。 - Josh Earl
嗷嗷。同样的结果。vim 有很多做同一件事情的方法。 :) - Josh Earl

3

2

对于Windows7 x64, - 按F2打开当前文件, - 按F3查找光标下的当前单词。

for g:chrome_exe in [
    \'C:\Progra~2\Google\Chrome\Application\chrome.exe',
    \'C:\Progra~1\Google\Chrome\Application\chrome.exe',
    \'C:\Progra~1\Google\Chrome\Applic~1\chrome.exe',
    \'C:\Users\'.$USERNAME.'\AppData\Local\Google\Chrome\Application\chrome.exe' 
    \]
    if !filereadable(g:chrome_exe)
        continue
    endif
    let g:google_url='https://www.google.com/search?oq=&gws_rd=cr&dcr=0&ei=0&q='
    :nmap   <F2> :exe ":!start ".g:chrome_exe." --user-data-dir=%TEMP%/chrome-vim-sandbox file:///".expand("%:p")<CR>
    :nmap   <F3> :exe ":!start ".g:chrome_exe." --user-data-dir=%TEMP%/chrome-vim-sandbox ".g:google_url.expand("<cword>")<CR>
    break
endfor 

1

我写了一个小型插件,包含7个命令来处理网络搜索。

安装后,您可以使用以下内容:

  • :WSearchInit 在当前文件夹中启动一个网站存储库
  • :WSearchSaveTagAndSite google www.google.com/search?q={WSearch} 保存一个具有相应标记的站点

然后使用以下方法进行搜索:

  • :WSearch 将使用最新保存或搜索的站点,并将{WSearch}替换为鼠标指向的单词
  • :WSearch Manual Search 将执行与WSearch相同的操作,但会将{WSearch}替换为Manual+Search。

希望它能对您或其他遇到相同问题的人有所帮助。


1

如果你使用的是Windows 7或10,将以下代码添加到你的.vimrc文件中:

nnoremap <silent> <F5> :!start file://C:/Users/<your username here>/AppData/Local/Google/Chrome/Application/chrome.exe %:p<CR>

或者尝试:
nnoremap <silent> <F5> :!start file://C:/Program Files (x86)\Google\Chrome\Application\chrome.exe %:p<CR>

了解更多细节,请查看此链接: 预览当前HTML文件


1
这里有关于Linux、Windows和Mac OS X中在浏览器中预览文件的各种提示。 预览当前HTML文件

This mapping allows you to use a browser to preview the HTML file currently being edited.

 nnoremap <F5> :silent update<Bar>silent !firefox %:p &<CR>

If necessary, the current file is saved, then Firefox is used to open the file. Replace "firefox" with the name of another browser if wanted, such as "chromium-browser".

如果问题中指定使用Chrome浏览器,那么请将以下内容添加到您的vimrc文件中:

nnoremap <F5> :silent update<Bar>silent !google-chrome %:p &<CR>

除了回答原问题外,我还想分享这个链接,供那些在寻找 Windows 和 Mac OS X 支持的人使用。


0
如果您正在使用Linux,可以使用sensible-browser命令在默认浏览器中打开网页:
:!sensible-browser %

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接