如何在vim或emacs等编辑器中的浏览器(例如Firefox)中打开文件? Notepad ++按Ctrl + Shift + Alt + X(Firefox)在浏览器中打开文件。有没有办法在gVim或Emacs中执行此操作?
答案 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来完成这项工作,但是Sard在What's in your .emacs?中显示了从emacs内重新加载网页的相关技巧。有关集成来自original source和here的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
。