如何在vim或emacs等编辑器中打开Web浏览器(例如Firefox)中的文件?

时间:2010-01-10 01:16:09

标签: vim emacs browser editor

如何在vim或emacs等编辑器中的浏览器(例如Firefox)中打开文件? Notepad ++按Ctrl + Shift + Alt + X(Firefox)在浏览器中打开文件。有没有办法在gVim或Emacs中执行此操作?

8 个答案:

答案 0 :(得分:21)

browse-url-of-file是一个交互式编译的Lisp函数 `浏览-url.el”。

它与<menu-bar> <HTML> <Load this Buffer in Browser>,C-c绑定 C-z诉。

  

(browse-url-of-file &optional file)

     

要求WWW浏览器显示文件   如果file为nil或被调用,则显示当前缓冲区的文件   交互。将文件名转换为带功能的URL   browse-url-file-url。使用以下命令将URL传递给浏览器   browse-url函数然后运行browse-url-of-file-hook

答案 1 :(得分:4)

无论出于何种原因,我在WinXP安装上的EmacsW32一直向shell发送browse-url指令,单独打开文件://并且效果不好*。在膝盖处切断它,并修改{{ 3}}如下所示:

(defun open-in-browser()
"open buffer in browser, unless it is not a file. Then fail silently (ouch)."
  (interactive)
  (if (buffer-file-name)
      (let ((filename (buffer-file-name)))
        (shell-command (concat "start firefox.exe \"file://" filename "\"")))))

需要一些改进。以及更换您喜欢的浏览器。 d ** n你,硬编码。

*我认为问题是在browse-url-default-windows-browser中进行系统类型检查,但不是肯定的。

答案 2 :(得分:3)

在emacs中我不认为这是内置的,我可能是错的,但如果不是这里是一个功能:

(defun open-in-browser()
  (interactive)
  (let ((filename (buffer-file-name)))
    (browse-url (concat "file://" filename))))

答案 3 :(得分:3)

在gVim中

:!start cmd /c "C:\Users\pierre\AppData\Local\Google\Chrome\Application\chrome.exe" file:///"%:p""

您需要file:// URI来表明它来自文件系统,这将适用于所有浏览器。 %:p生成当前文件的完整文件路径。报价是必要的。

只需将其映射到您选择的任何内容即可。如果你将shell设置为bash或其他东西,则可能需要set shell=cmd.exe

在emacs中(引用justinhj):

(defun open-in-browser()
  (interactive)
  (let ((filename (buffer-file-name)))
    (browse-url (concat "file://" filename))))

答案 4 :(得分:2)

您的意思是您想要在网络浏览器中打开当前正在编辑的文件吗?

在Vim中,使用类似:!firefox %的内容。

编辑:实际上,你可以使用nmap <silent> <C-M-X> :!firefox %<CR>使Vim的行为与Notepad ++非常相似(尽管这种映射不关心你是否按下shift)。 / p>

请注意,在命令行上给出文件名时,并非每个浏览器都会实际呈现文件的内容;例如谷歌浏览器将打开一个“另存为”对话框,就好像您正在下载相关文件一样。如果有疑问,请查看浏览器的文档。不过,Firefox会“正常工作”。

答案 5 :(得分:2)

根据您对此的要求,您可以考虑使用Emacs + MozRepl,它基本上允许您通过telnet向Firefox发送javascript命令。不幸的是,我似乎无法编写elisp来完成这项工作,但是SardWhat's in your .emacs?中显示了从emacs内重新加载网页的相关技巧。有关集成来自original sourcehere的emacs和mozrepl的更多信息,以便在您输入emacs缓冲区时在浏览器中更新页面的一个很酷的技巧 - 它非常好在使用HTML时获得即时反馈。

我认为同样的事情适用于vim,但我只在emacs中使用它。

答案 6 :(得分:1)

我使用shell命令xdg-open执行Elisp函数 然后我在html模式中定义一个键来调用该函数 您必须习惯在.emacs文件中添加内容。

(defun open-html()
  "Get the HTML file path & open it"
  (interactive)
  (let (html-file-path)
    (setq html-file-path (buffer-file-name))
    (shell-command (format "xdg-open '%s'" html-file-path)))
)

答案 7 :(得分:0)

此答案基于Emacs 26.2

Emacs具有在内置浏览器中打开文件的功能,但在不同平台上的行为可能有所不同。通过输入browse-url-of-file来查看C-h f browse-url-of-file的源代码和文档,您将看到变量browse-url-browse-function决定使用哪个浏览器。然后,您可以通过选择browse-url-chrome来自定义此变量以使用Chrome,例如,然后应用并保存更改。要访问自定义页面,请输入C-h f browse-url-browser-function然后选择customize超链接,或访问M-x customize然后搜索browse-url-browser-function