Trình soạn thảo văn bản Markdown WYSIWYG tích hợp


101

Khi tìm kiếm một trình soạn thảo WYSIWYG đơn giản cho mã Markdown, tôi không tìm thấy giao diện người dùng có thể so sánh được với giao diện người dùng của CkEditor, TinyMCE, v.v.

Cụ thể, trình chỉnh sửa Markdown "WYSIWYG" thường được đề xuất (chẳng hạn như các bài đăng như thế này ) không phải là trình chỉnh sửa WYSIWYG thuần túy theo nghĩa là người dùng vẫn viết Markdown thô ( MarkItUp ) hoặc đi đến một khía cạnh khác là chỉnh sửa nội dòng mà không có điều khiển tiêu chuẩn ( Hallo ).

Tôi cần một cái gì đó ở giữa.

Tôi đang tìm một trình soạn thảo Markdown trông và hoạt động giống như một hộp văn bản CkEditor được rút gọn, chấp nhận và xuất ra Markdown. Cần có một thanh công cụ với tập hợp tối thiểu các tùy chọn định dạng (B, I, U, danh sách, v.v.) và khu vực nhập văn bản phải hiển thị Markdown đã chuyển đổi, không phải mã thô. Cần có một nút Nguồn cho phép người dùng chỉnh sửa Markdown thô, nhưng ngay cả điều đó cũng là tùy chọn. Ví dụ:

nhập mô tả hình ảnh ở đây

Tôi hiểu lý do cho Markdown / wiki, v.v. - tính bảo mật mà nó cung cấp. Tôi không ngại nhập mã thô như ở đây tại SE, nhưng người dùng của tôi không phải là người đam mê và không thấy điều này thú vị. Họ không muốn nhìn thấy * * * ___ và dấu cách xen lẫn trong văn bản của họ. Họ đã quen với việc chỉnh sửa kiểu "Word" và hiệu quả nhất trong môi trường đó.

Vậy - có một trình soạn thảo WYSIWYG thực sự tích hợp cho Markdown không? Tôi đang viết bằng PHP, vì vậy thứ gì đó mà tôi có thể gọi với một lớp sẽ rất hoàn hảo.


Cập nhật ngày 23 tháng 9 năm 2015

CKEditor hiện có một addon Markdown thực hiện điều này chính xác. Dự án addon được lưu trữ trên github .

Ảnh chụp màn hình:

đánh dấu WYSIWYG

nguồn đánh dấu


Ngày 13 tháng 4 năm 2015 Cập nhật
Ai đó tuyên bố phát triển CKEditor nói rằng sự xuất hiện của CommonMark là một yếu tố thay đổi trò chơi và chúng ta có thể thấy một giao diện đánh dấu thích hợp cho CKEditor (đọc phần bình luận cho toàn bộ câu chuyện).


Ngày 6 tháng 2 năm 2015 Cập nhật

CKEditor hiện đi kèm với một plugin xuất ra (và chấp nhận làm đầu vào) BBCode.

Demo: http://ckeditor.com/demo#bbcode


Ahola Editor, như được đề xuất trong câu trả lời này cho câu hỏi SO mà bạn liên kết đến là một trình soạn thảo HTML5 WYSIWYG dường như làm chính xác những gì bạn đang theo đuổi. Nó thậm chí còn có một gợi ý về dải băng Office. Có một lý do tại sao bạn đã giảm giá này?
Chris

1
Tôi e rằng tôi không thể thực sự hiểu được nhận xét cuối cùng của bạn. Ahola là "chỉnh sửa tại chỗ", cũng như tất cả các trình biên tập WYSIWYG. Hộp chỉnh sửa Aholda chỉ là một divvà thanh công cụ là một thứ khác div, đây có thể là những thứ duy nhất trên trang. Giải pháp Ahola đáp ứng yêu cầu của bạn về "tập hợp tối thiểu các tùy chọn định dạng (B, I, U, danh sách, v.v.) và khu vực nhập văn bản phải hiển thị Markdown được chuyển đổi, không phải mã thô." Xin bạn có thể giải thích rõ hơn tại sao đây không phải là một giải pháp mà bạn sẽ xem xét.
Chris

1
Markdown tự thay thế tất cả các trình soạn thảo WYSIWYG này. Tại sao bạn cần xuất ra markdown?
Pol

4
@Pol: Vì nó an toàn để lưu trữ và hiển thị sau này, trái ngược với HTML?
Dan Abramov

1
Tôi cũng không nhận được câu hỏi này. Bạn sử dụng Markdown để tạo HTML hoặc bạn sử dụng trình soạn thảo WYSIWYG để tạo HTML. Tại sao bạn muốn sử dụng trình soạn thảo WYSIWYG để tạo Markdown? Nếu đó thực sự là những gì bạn muốn, bạn luôn có thể sử dụng CKeditor và chuyển đổi HTML thành Markdown.
mb21

Câu trả lời:


13

Tôi đã nghiên cứu về chủ đề này một ngày và tôi không tìm thấy bất kỳ trình soạn thảo WYSIWYG nào phù hợp với đầu ra Markdown. Trên thực tế, trước tiên bạn phải tạo một trình soạn thảo WYSIWG Markdown là trình soạn thảo WYSIWG HTML và chỉ có một vài trong số chúng có thể sử dụng được trên thị trường.

Có một cơ hội là bạn sẽ có thể tạo dataProcessorcho CKEditor để thay đổi trình soạn thảo HTML thành trình chỉnh sửa Markdown. Chúng tôi có một plugin cho BBCode hoạt động như thế này (xem http://nightly-v4.ckeditor.com/3737/samples/bbcode.html ).

Tất cả những gì bạn phải làm là triển khai giao diện này http://nightly-v4.ckeditor.com/ckeditor_api/#!/api/CKEDITOR.dataProcessor . Nếu bạn kiểm tra mã của plugin BBCode, bạn sẽ thấy một số hack và thủ thuật, bởi vì rất tiếc, kiến ​​trúc của CKEditor hiện tại chưa sẵn sàng (chưa) để tạo một bộ xử lý dữ liệu như vậy. Tuy nhiên, tôi tin rằng nếu bạn chỉ muốn cung cấp một số tùy chọn tạo kiểu, bạn sẽ có thể triển khai hỗ trợ Markdown khá nhanh.


30

SimpleMDE , một người mới, có thể là câu trả lời. Tôi đã tìm kiếm một thứ như thế này trong một tháng nay. Tôi ngạc nhiên rằng điều này không hiển thị cao hơn trong kết quả tìm kiếm. Tôi đã phải xem qua một thông báo trên lepture / editor để tìm điều này.

nhập mô tả hình ảnh ở đây


1
Wow, cảm ơn vì đã chia sẻ điều đó - đây CHÍNH XÁC những gì tôi đang tìm kiếm. Tuyệt vời!
Jared White

1
Cảm ơn HNL, cùng ở đây.
Melvin

4
Đó không phải là WYSIWYG đúng. Nó trộn phần đánh dấu vào cửa sổ soạn thảo. Những gì được tìm kiếm trong câu hỏi này là một trình chỉnh sửa hiển thị cả chế độ xem đã hoàn thành và nguồn trong các chế độ xem riêng biệt (với nút 'nguồn' trên thanh công cụ, để lo lắng).
một coder

9

CHỈNH SỬA ngày 23 tháng 9 năm 2015

CKEditor hiện có một addon Markdown thực hiện điều này chính xác. Dự án addon được lưu trữ trên github .

Ảnh chụp màn hình:

đánh dấu WYSIWYG

nguồn đánh dấu


Như đã đăng trong bản cập nhật ngày 6 tháng 2 năm 2015 của tôi, CKEditor hiện bao gồm các plugin cho phép đầu vào và đầu ra BBCode.

Bản demo có sẵn tại đây: http://ckeditor.com/demo#bbcode

CHỈNH SỬA Ngày 13 tháng 4 năm 2015:
Một người nào đó tuyên bố phát triển CKEditor nói rằng sự xuất hiện của CommonMark là một công cụ thay đổi trò chơi và chúng ta có thể thấy một giao diện đánh dấu thích hợp cho CKEditor (đọc nhận xét cho toàn bộ câu chuyện).


"Điều này có chính xác không?" Theo những người ủng hộ add-on ckeditor vẫn xuất ra HTML chứ không phải Markdown với add-on này.
user764754

8

Pen là một trình soạn thảo WYSIWYG mới (hoạt động kể từ năm 2014), xuất ra Markdown .
Nó không hoàn hảo — tôi đã gặp vấn đề với việc dán HTML vào đó — nhưng nó hoạt động.

Chỉnh sửa: Xin lỗi! Nó không xuất ra Markdown. Walery Strauch đã chỉ ra trong các nhận xét rằng các dấu hiệu định dạng Markdown mà tôi thấy thực sự là các quy tắc phần tử giả CSS:

Tuy nhiên, tôi sẽ để nó ở đây như một tùy chọn vì một số người đã ủng hộ câu trả lời này và nó có thể đã được sử dụng cho ai đó.


Bản demo bút được chỉnh sửa tại chỗ, không phải thứ mà OP (tôi) quan tâm. Không có thời gian để cài đặt ngay giây phút này. Có tùy chọn hộp văn bản truyền thống không?
một lập trình viên

@Acoder: Tệ thật! Tôi không nhận ra bạn muốn một thanh công cụ cố định. Có gì sai với Halo ? Nó có một thanh công cụ hiện nay ..
Dan Abramov

2
Đây vẫn là bố cục css trong ảnh chụp màn hình này. Tôi muốn lấy dữ liệu đánh dấu (hãy xem ảnh chụp màn hình của tôi i.imgur.com/fM4jFl2.png )
Walery Strauch

1
@WaleryStrauch Chà, tôi đã thực sự ngu ngốc. Tôi đã không nhận ra nó không thực sự là đầu ra. Xin lỗi vì làm mất thời gian của bạn! Tôi sẽ cập nhật câu trả lời.
Dan Abramov

3
.. hiện tại có vẻ như ít nhất đã có hỗ trợ beta để xuất ra Markdown.
pjz

4

Tôi đã triển khai một trình soạn thảo rất đơn giản cho phép <textarea>chỉnh sửa nội dung của một chứa Markdown theo kiểu WYSIWYG.

Tôi đã sử dụng Hallo . Tôi không nghĩ rằng trang web của nó cho thấy rõ ràng rằng bản thân nó không phải là một trình soạn thảo Markdown WYSIWYG nhưng bản trình diễn đã tạo ra đường dẫn đến một.

Hallo cho phép chỉnh sửa WYSIWYG HTML bên trong a <div>. Tôi đã sử dụng javascript để ẩn bất kỳ <textarea>khối nào có wysiwyglớp CSS cụ thể , thay thế nó bằng a <div>và sao chép nội dung của <textarea>vào <div>. Việc sao chép chạy qua Showdown tạo HTML từ Markdown.

Một quy trình Javascript khác phản ứng mỗi khi <div>nội dung thay đổi. Nó sao chép nội dung trở lại (hiện đã bị ẩn) <textarea>. Nội dung được chạy qua đánh dấu để chuyển đổi từ HTML sang Markdown.

Nếu <textarea>là một trường trong dấu <form>, thì Markdown đã chỉnh sửa sẽ được gửi đến máy chủ khi biểu mẫu đó được gửi.

Nguồn cảm hứng cho điều này đến từ Ví dụ Hallo Markdown , cụ thể là tệp editor.js . Tôi đã sử dụng điều đó làm cơ sở cho tập lệnh của riêng mình cùng với hallo.js , showdown.jsto-markdown.js .

Tập lệnh của tôi, wysiwyg.js là một dẫn xuất của editor.js từ Ví dụ Hallo Markdown . Một số điểm cần lưu ý:

  • Tôi sử dụng cái này trong một ứng dụng Rails (không quan trọng)
  • Nó chạy trên readyvà cũng trênpage:load , sau này vì Rails sử dụng Turbolinks
  • Nó chạy trên ajaxComplete vì tôi sử dụng Ajax cho các báo cáo lỗi biểu mẫu
  • Có các phụ thuộc khác: JQueryUIRangy (Người dùng Rails có thể tận dụng các gem jquery-ui-railsrangy-rails ).
  • Cũng Font tạo ảnh vui nhộn được sử dụng cho các biểu tượng trên thanh công cụ. Các phiên bản của hallo.jssử dụng bởi các bản demo đã hết hạn (nó sử dụng một phiên bản cũ của Font tạo ảnh vui nhộn ) - sử dụng hallo.js từ GitHub để thay thế.

Bạn chỉ cần thêm CSS class='wysiwyg'vào bất kỳ <textarea>để kích hoạt WYSIWYG trên đó. Các <textarea>nên conain Markdown định dạng văn bản.

Tôi hy vọng rằng wysiwyg.js có thể dễ dàng điều chỉnh để sử dụng trình soạn thảo khác nếu bạn không thích Hallo miễn là nó hoạt động trên HTML trong a <div>. Có khá nhiều loại để lựa chọn nhưng không phải loại nào cũng nhẹ như Hallo .

Một công việc tương tự mà tôi tìm thấy là markdown-html-form . Nó sử dụng cùng một Showdownto-markdown .


Xin chào @starfry, tôi đã cố gắng tái tạo những gì bạn mô tả ở trên bằng cách sử dụng của bạn wysiwyg.js, nhưng không đạt được bất kỳ thành công lớn nào. Tự hỏi liệu bạn có một HTML đi kèm được lưu trữ trong ý chính ở đâu đó không? Danh sách phiên bản ổn định của các phụ thuộc, v.v.? Cảm ơn!
Jameson

1
@Jameson Tôi đã thêm một số ghi chú vào ý chính của mình . Tôi hy vọng họ giúp đỡ! Vui lòng thêm bình luận vào ý chính nếu bạn có bất kỳ câu hỏi nào.
starfry

3

Tôi cũng đang tìm một trình chỉnh sửa đánh dấu được mô tả ở đầu chủ đề này

Bạn đã thấy "công cụ đánh dấu" chưa: http://md-wysiwyg.sourceforge.net/

Demo: http://md-wysiwyg.sourceforge.net/cgi-bin/cgi_wysiwyg_test.py/

Điều đó có vẻ khá gần với những gì chúng tôi đang tìm kiếm, nó thực hiện một công việc hợp lý là lấy văn bản đa dạng thức WYSIWYG của bạn và đánh dấu đầu ra. Tuy nhiên, nó không thành công trong một ngoại lệ mã hóa khi tôi dán một số văn bản có định dạng từ tài liệu google.


Mã nguồn của mã này hiển thị HTML không phải là dấu xuống.
một coder
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.