Как открыть файлы в веб-браузерах (например, Firefox) в таких редакторах, как vim или emacs? - PullRequest
26 голосов
/ 10 января 2010

Как открыть файлы в браузерах (например, Firefox) в таких редакторах, как vim или emacs? Notepad ++ открывает файлы в браузерах, нажав Ctrl + Shift + Alt + X (Firefox). Есть ли способ сделать это в gVim или Emacs?

Ответы [ 7 ]

21 голосов
/ 10 января 2010

browse-url-of-file - это интерактивная скомпилированная функция Lisp в `Пролистать-url.el».

Это связано с <menu-bar> <HTML> <Load this Buffer in Browser>, C-C C-z v.

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

Попросить браузер WWW отобразить файл.
Показать файл текущего буфера, если файл равен нулю или если он вызван в интерактивном режиме. Превратить имя файла в URL с функцией browse-url-file-url. Передайте URL в браузер, используя browse-url Функция затем запустить browse-url-of-file-hook.

4 голосов
/ 12 января 2010

По какой-то причине мой EmacsW32 на WinXP-установке продолжал посылать директивы browse-url в оболочку с помощью «open file: // only», и это не сработало так хорошо. * Джастин оригинал , как показано ниже для меня:

(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 "\"")))))

Требуется некоторое улучшение. А также замена вашего любимого браузера. д ** н ты, хардкей.

* Я думаю, что проблема была в проверке системного типа в browse-url-default-windows-browser, но не в положительной.

4 голосов
/ 10 января 2010

В emacs я не думаю, что это встроено, я могу ошибаться, но если нет, то здесь есть функция для этого:

(defun open-in-browser()
  (interactive)
  (let ((filename (buffer-file-name)))
    (browse-url (concat "file://" filename))))
3 голосов
/ 10 января 2010

В гВим :

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

Вам нужен file: // URI, чтобы указать, что он из файловой системы, это будет работать со всеми браузерами. %:p создает полный путь к файлу для текущего файла. Цитаты нужны.

Просто сопоставьте это с тем, что вы выберете. Возможно, вам придется сделать set shell=cmd.exe, если вы установили в своей оболочке bash или что-то еще.

В emacs (цитирование justinhj): (defun open-in-browser() (interactive) (let ((filename (buffer-file-name))) (browse-url (concat "file://" filename))))

2 голосов
/ 10 января 2010

В зависимости от того, что вы хотите сделать с этим, вы можете рассмотреть Emacs + MozRepl , который в основном позволяет отправлять команды javascript в Firefox через telnet. К сожалению, я не могу написать elisp, чтобы сделать эту работу, но связанный трюк для перезагрузки веб-страниц из Emacs показан Sard в Что у вас за .emacs? . Дополнительная информация об интеграции emacs и mozrepl из оригинального источника , а также здесь для интересного трюка, который обновляет страницу в браузере при вводе в буфер emacs - это очень удобно для получения мгновенной обратной связи при работе с HTML.

Я считаю, что то же самое будет работать с vim, но я использовал это только в emacs.

2 голосов
/ 10 января 2010

Вы хотите сказать, что хотите открыть файл, редактируемый в данный момент в веб-браузере?

В Vim используйте что-то вроде :!firefox %.

Редактировать: На самом деле вы могли бы использовать nmap <silent> <C-M-X> :!firefox %<CR>, чтобы заставить Vim действовать очень похоже на Notepad ++ (хотя это отображение не имеет значения, нажимаете ли вы клавишу Shift или нет).

Обратите внимание, что не каждый браузер будет отображать содержимое файла, если ему указано имя файла в командной строке; например Вместо этого Google Chrome откроет диалоговое окно «Сохранить как», как если бы вы загружали нужный файл. Посмотрите документы вашего браузера, если сомневаетесь. Однако Firefox будет «просто работать».

1 голос
/ 07 апреля 2016

Я делаю это функцией Elisp, используя команду оболочки xdg-open.
Затем я определяю ключ в 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)))
)
...