2010-01-10 28 views
24

Cách mở tệp trong trình duyệt (ví dụ: Firefox) trong trình chỉnh sửa như vim hoặc emacs? Notepad ++ mở tệp trong trình duyệt bằng cách nhấn Ctrl + Shift + Alt + X (Firefox). Có cách nào để làm điều này trong gVim hoặc Emacs?Cách mở tệp trong trình duyệt web (ví dụ: Firefox) trong trình chỉnh sửa như vim hoặc emacs?

+0

Tôi đã đặt các giải pháp cho gVim và emacs vào một bài đăng mà bạn có thể chọn làm câu trả lời đúng. –

Trả lời

19

browse-url-of-file là một hàm Lisp được biên dịch tương tác trong `browse-url.el '.

Nó là ràng buộc để <menu-bar> <HTML> <Load this Buffer in Browser>, C-c C-z v.

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

hỏi một trình duyệt WWW để hiển thị tập tin.
Hiển thị tệp bộ đệm hiện tại nếu tệp là không hoặc nếu được gọi là tương tác. Chuyển tên tệp thành URL có chức năng browse-url-file-url. Chuyển URL tới trình duyệt bằng chức năng browse-url sau đó chạy browse-url-of-file-hook.

+2

'browse-url-of-file không bị ràng buộc trong v23.4.1 – Cristian

+4

Trong chế độ sgml nó được ràng buộc với Cc Cv theo mặc định – PuercoPop

+0

Tôi không hiểu cách (a) đây là câu trả lời (b) đó là câu trả lời được chấp nhận . Không có gì để làm với GVim hoặc Emacs, nhưng dường như đòi hỏi phải cài đặt Lisp?!? – Stewart

2

Bạn có nghĩa là bạn muốn mở tệp hiện đang được chỉnh sửa trong trình duyệt web?

Trong Vim, hãy sử dụng thứ gì đó như :!firefox %.

Chỉnh sửa: Bạn có thể, trên thực tế, sử dụng nmap <silent> <C-M-X> :!firefox %<CR> để Vim hành động rất giống Notepad ++ (mặc dù ánh xạ này sẽ không quan tâm bạn có nhấn phím shift hay không).

Lưu ý rằng không phải mọi trình duyệt sẽ thực sự hiển thị nội dung của tệp khi được đặt tên tệp trên dòng lệnh; ví dụ. Google Chrome sẽ mở hộp thoại "lưu dưới dạng" thay vào đó, như thể bạn đang tải xuống tệp đang được đề cập đến. Tra cứu tài liệu của trình duyệt nếu nghi ngờ. Tuy nhiên, Firefox sẽ 'hoạt động'.

+2

Nếu bạn ngụ ý tên tệp dưới con trỏ, hãy sử dụng thay cho%. –

+0

@Laurence: Đúng vậy! Cảm ơn bạn đã chỉ ra điều này. :-) –

+0

@ janoChen: Vâng, nó chắc chắn sẽ hoạt động nếu bạn đã thực thi 'firefox' trên đường dẫn của mình. Điều này sẽ không nhất thiết phải là trường hợp nếu bạn đang sử dụng Windows; trong trường hợp đó, thay thế 'firefox' bằng một cái gì đó như 'C:/path/to/firefox.exe'. Nói chung, bạn sẽ cần phải tìm ra lệnh nào để sử dụng để mở một tệp với trình duyệt của bạn ** trên dòng lệnh ** (đó là 'tên firefox-of-the-file' trên hộp của tôi) và sử dụng nó thay vì 'firefox', với% (hoặc , theo gợi ý của Laurence) thay cho tên tệp thực. Hãy cho tôi biết nếu điều này không giúp được gì. –

3

Trong emacs Tôi không nghĩ rằng đây được xây dựng trong, tôi có thể sai, nhưng nếu không đây là một chức năng để làm điều đó:

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

điều này chắc chắn được tích hợp sẵn, không cần phải đóng vai trò của riêng bạn –

+3

Yup, 'duyệt-url-của-tệp 'trong câu trả lời của minaev. – justinhj

+1

Vì lý do nào đó, đối với tôi, điều này sẽ mở nội dung bộ đệm trong trình soạn thảo mặc định _html_ chứ không phải trình duyệt web mặc định. Tôi đang sử dụng 24.5 trên OSX Capitan. Bất kỳ ý tưởng nào tại sao điều này có thể xảy ra? Tôi đã kiểm tra rằng chương trình 'mở' đang chạy tốt từ thiết bị đầu cuối. –

3

Trong gVim:

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

Bạn cần tệp: // URI để cho biết tệp đó là từ hệ thống tệp, điều này sẽ hoạt động với tất cả các trình duyệt. %:p tạo đường dẫn tệp đầy đủ cho tệp hiện tại. Các dấu ngoặc kép là cần thiết.

Chỉ cần ánh xạ tới bất kỳ thứ gì bạn chọn. Bạn có thể cần phải làm set shell=cmd.exe nếu bạn đã đặt vỏ của mình thành bash hoặc thứ khác.

Trong emacs (trích dẫn justinhj):

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

+2

Lệnh Vim là chỉ dành cho Windows. – glts

2

Tùy thuộc những gì bạn muốn làm gì với điều này, bạn có thể xem xét Emacs + MozRepl, mà về cơ bản cho phép bạn gửi javascript lệnh để Firefox thông qua telnet. Thật không may là tôi không thể viết những điều tuyệt vời để thực hiện công việc này, nhưng một mẹo liên quan để tải lại các trang web từ bên trong các emacs được hiển thị bởi Sard trong What's in your .emacs?. Thông tin thêm về tích hợp các emacs và mozrepl từ original source và cũng có thể here cho một mẹo thú vị cập nhật trang trong trình duyệt khi bạn nhập vào bộ đệm emacs - nó khá tốt để nhận phản hồi ngay lập tức khi làm việc với html.

Tôi cho rằng điều tương tự sẽ hoạt động với vim, nhưng tôi chỉ sử dụng nó trong các emacs.

3

Vì bất kỳ lý do gì, cài đặt EmacsW32 trên WinXP của tôi vẫn tiếp tục gửi chỉ thị url duyệt tới "mở tệp: // một mình và không hoạt động tốt như vậy *. sửa đổi justin's original như dưới đây làm việc cho tôi:

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

nhu cầu một số cải tiến cũng như thay thế trình duyệt yêu thích của bạn d ** n bạn, cứng mã hóa

* tôi nghĩ vấn đề là hệ thống... -kiểm tra loại trong trình duyệt-url-default-windows-browser, nhưng không phải là số dương.

1

Tôi thực hiện chức năng Elisp bằng lệnh shell xdg-open.
Sau đó, tôi xác định một khóa trong chế độ html để gọi hàm.
Bạn phải thoải mái khi thêm nội dung vào tệp .emacs của mình.

(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))) 
) 
Các vấn đề liên quan