Có những lựa chọn nào để viết văn bản phi lập trình tốt hơn trong Emacs?


58

Đây là một ngã ba từ câu hỏi Có những lựa chọn nào để thực hiện kiểm tra chính tả trong Emacs?

Bởi vì hiện tại tôi đang thực hiện rất nhiều nhiệm vụ phi lập trình trong Emacs, tôi tự hỏi liệu Emacs có thể hỗ trợ tôi viết các văn bản tốt hơn không .

Vì vậy, hãy mở với cụm từ câu hỏi bắt buộc

Có gói / thư viện / được xây dựng nào phù hợp để giúp tôi viết các văn bản tốt hơn, chính xác hơn và súc tích hơn trong Emacs không?

Đặc biệt,

  • để kiểm tra chính tả ngữ pháp . Một cái gì đó tương tự (nhưng hy vọng tốt hơn) trình kiểm tra chính tả MS Word sẽ nhận ra nếu một câu sai về mặt ngữ pháp

  • để cải thiện cụm từ của bạn và các biểu thức bạn đang sử dụng. Một cái gì đó dọc theo dòng của Hội Nhà thơ Chết :

    Vì vậy, tránh sử dụng từ 'rất' vì nó lười biếng. Một người đàn ông không mệt lắm, anh ta kiệt sức. Đừng dùng quá buồn, hãy dùng morose. [...]

  • cho bất cứ điều gì tôi quên hoặc không biết nhưng bạn có thể nghĩ đến (liên quan đến cải tiến ngôn ngữ / liên quan đến ngôn ngữ, duh ...)


Bất cứ điều gì tôi quên, bản chất là quá rộng. Việc cải thiện phrasing của bạn cũng rất mơ hồ.
Gilles 'SO- ngừng trở thành ác quỷ'

Do đó, tôi đã hạn chế "bất cứ điều gì" với phần đó trong ngoặc đơn ... Ngoài ra, tôi không thấy theo cách nào có thể "cải thiện cụm từ của bạn" có thể là mơ hồ trong bối cảnh viết.
elemakil

1
Cải thiện phrasing của bạn, vv là lạc đề ở đây, tôi nên nghĩ. Có những trang SE để học viết tốt hơn. Câu hỏi của bạn nên được giới hạn trong cách Emacs có thể giúp bạn viết và chỉnh sửa văn bản. Và nó đã rất rộng - nó có thể được coi là quá rộng cho một câu hỏi. Bạn có thể tưởng tượng nếu tất cả các câu hỏi về trợ giúp viết chỉ được gói gọn trong một câu hỏi của bạn không? Bạn sẽ tốt hơn nhiều khi tập trung vào một điều tại một thời điểm. Và mọi người khác cũng sẽ được hưởng lợi từ đó.
vẽ

1
Trad Unix đã có stylediction, tôi mơ hồ nhận thấy một nỗ lực để thực hiện lại chúng như là nguồn mở . Nếu các công cụ thực sự hoạt động, việc thêm một trình bao bọc Emacs sẽ rất nhanh chóng.
tripleee

2
Máy tính không thể cải thiện hiệu quả bài viết của bạn, ít nhất là hiện tại. Geoffrey K. Pullum và Mark Liberman viết về điều này rất nhiều, ví dụ, xem itre.cis.upenn.edu/myl/languagelog/archives/005061.html hoặc languagelog.ldc.upenn.edu/nll/?p=10416 As một ví dụ về sự ngớ ngẩn này, tôi đã cài đặt writegood-modevà kéo mạnh trong đoạn đầu tiên của "Ông già của tôi" (từ liên kết trên). writegood-modexác định "ông già của tôi đã bị cắt ra vì một người béo" là thụ động, điều đó không phải. Các hệ thống này a) không hoạt động tốt và b) dựa trên các quy tắc xấu về văn bản tốt.
Erik Hetzner

Câu trả lời:


64

Cá nhân tôi thích viết những thứ org-modevới flyspell-modelangtool...

org-modelà tuyệt vời để gõ bất kỳ loại tài liệu nào một cách nhanh chóng trong Emacs, flyspell chăm sóc chính tả và lo lắng về langtool về ngữ pháp. Mọi thứ đều có khả năng tùy biến cao, vì vậy bạn có thể tùy chỉnh mọi thứ theo nội dung trái tim của bạn.

Đây là một kiểu gõ nhanh trong chế độ org với bật langtool và flyspell; không có gì quá đặc biệt

Nếu tôi chạy langtool-correct-buffernhư nó gợi ý, bất kỳ lỗi ngữ pháp nào mà langtool tìm thấy sẽ được tô sáng từng cái một với một số gợi ý trong bộ đệm dưới cùng. Tôi có thể chọn bất kỳ ứng cử viên nào có phím số tương ứng hoặc chỉ cần bỏ qua chúng bằng [Thanh dấu cách].

Ngoài ra flyspell cho phép tôi [Nhấp chuột giữa] vào các từ sai chính tả để xem các đề xuất chính tả.

org-modecó một tấn các định dạng xuất khẩu; bạn có thể xuất tài liệu của mình dưới dạng PDF, ODT hoặc thậm chí dưới dạng HTML. (Bạn có thể xuất sử dụng C-c C-etrong org-mode)

Bây giờ tôi đã xuất bản kiệt tác của mình dưới dạng PDF bằng LaTeX, đây là những gì tôi thấy khi tôi mở nó trong trình xem PDF ...

Đây có lẽ là cách dễ nhất để tạo các tài liệu ưa thích trong môi trường viết tương đối tốt trong Emacs ...

Tin tốt là org-modeflyspell-modeđược bao gồm theo mặc định với hầu hết các phiên bản của Emacs. Tin xấu là langtool không phải, và nó hơi lớn và nó yêu cầu Java ... Nhưng nếu điều đó không ngăn cản bạn:

Langtool là một trình kiểm tra ngữ pháp thường được kết hợp với Openoffice hoặc Libreoffice. Bản thân công cụ này là một tiện ích dòng lệnh đơn giản, do đó tương đối dễ dàng để giao tiếp với các chương trình khác; ai đó đã giao tiếp với Emacs.

Để thêm nó vào Emacs, bạn có thể cài đặt nó bằng M-x package-install langtool... Hoặc, nếu bạn không cài đặt đúng repos (tôi sử dụng những cái được đề xuất ở đây .), Bạn có thể lấy .eltệp và bao gồm tệp theo cách thủ công từ đây .

Tôi hiện có hook hook-mode của tôi được thiết lập như thế này. (Cắt các bit không liên quan.)

(add-hook 'org-mode-hook (lambda ()
   (progn
     ;; Snipped
     (auto-fill-mode t)

     ;; Spelling
     (flyspell-mode t)

     ;; Grammar
     (require 'langtool)
     (setq langtool-language-tool-jar "/path/to/LanguageTool.jar"))))

Rõ ràng, bạn sẽ muốn thay thế /path/to/LanguageTool.jarbằng đường dẫn thực tế đến nó trên hệ thống của bạn. Đây là một tệp .jar di động, vì vậy vị trí không thực sự quan trọng.

Ngoài ra, không giống như flyspell-mode, langtool yêu cầu bạn chạy M-x langtool-checkkhi bạn muốn kiểm tra ngữ pháp bộ đệm ... Vì vậy, bạn không có kiểm tra ngữ pháp ưa thích khi bạn nhập hiện tại.

org-modecó thể làm rất nhiều, và có thể được sử dụng để viết các tập tin ghi chú nhỏ đơn giản, hoàn thành các bài tiểu luận với đồ họa, bài viết, sách, bạn đặt tên cho nó ... Nhưng vì nó có thể làm rất nhiều, nên thật khó để biết bắt đầu từ đâu. Tôi thấy đó là dễ nhất để học hỏi bằng cách bắt đầu với những cách có thể bạn có thể xuất một org-modetập tin sau khi bạn học những điều cơ bản ... . Trang web của Org-mode rất hữu ích và nhiều thông tin, và cũng có rất nhiều trợ giúp về nó trong các trang thông tin ( C-h i, m Org Mode).

Chúc may mắn..! Và hy vọng điều này sẽ giúp.


Điều này thật tuyệt ! langtoolTrông rất hứa hẹn thực sự.
elemakil

1
Có cách nào để cấu hình langtoolđể nhận biết (La)TeXcú pháp? Tôi muốn nói rằng một nửa lỗi là do lỗi sai do (La)TeXcú pháp của nó gây ra một chút phiền toái.
elemakil

1
Thật không may, không hiểu biết của tôi. Tôi thường viết nội dung của mình bằng org đơn giản với rất ít LaTeX ngoại trừ các chỉ thị bên trong org LaTeX. (Giống như #+LaTeX_CLASS_OPTIONS: [hidelinks,11pt]) Theo cách đó tôi không có gì langtoolsẽ nhận. Tất nhiên, đó không phải là một cách để thay đổi nơi langtool không tồn tại, mà đơn giản là nó vượt quá kiến ​​thức đặc biệt của tôi về chủ đề này. Lấy làm tiếc..!
Archenoth

15

Danh mục EmacsWiki Viết là nơi để bắt đầu.

Nó liệt kê hàng tá thư viện hỗ trợ viết văn bản bằng Emacs, với các mô tả và liên kết đến các trang chi tiết.

Không có ý nghĩa liệt kê thông tin như vậy một lần nữa ở đây - tham khảo nó ở đó.

(Nhưng có lẽ những người khác ở đây sẽ có khuyến nghị cụ thể.)

Tôi sẽ chỉ đề cập đến trang tiểu thể loại Pattauri và Từ đồng nghĩa , có nhiều liên kết đến thông tin về các thư viện hỗ trợ tra cứu từ đồng nghĩa.


Những đề xuất và trải nghiệm cá nhân với các tùy chọn khác nhau là những gì tôi quan tâm nhất :-)
elemakil

Khỏe. Bạn cũng nên tìm thấy nhiều điều đó trên các trang wiki cho chủ đề này.
vẽ

@Drew: langtool bị thiếu trên trang emacswiki.
Tobias

@tobias: Có, vui lòng thêm langtool vào danh sách trên wiki (bất kỳ ai cũng có thể chỉnh sửa wiki - đó là wiki ;-)).
vẽ

Làm xong. BTW: Bạn có thể xem một số câu hỏi (IMHO thú vị) được chuyển hướng + câu hỏi . Cảm ơn trước.
Tobias

15

Tôi viết tiểu thuyết bằng Emacs, và đã phát triển một quy trình làm việc theo thời gian dựa trên những lợi thế độc đáo nhất định của nó. (Ví dụ: Cuốn sách gần đây nhất của tôi đã được hình thành, sáng tác và chỉnh sửa bằng Emacs.) Điều đó nói rằng, đó không phải là một con đường không có khó khăn.

  • Chế độ Org

    Chế độ Org là lý do tôi bắt đầu sử dụng Emacs. Có thể gấp và mở các phần của bản thảo ~ 50K từ là vô giá. Trước đây tôi đã sử dụng chương trình Scrivener nhưng không hài lòng với các .scrivtệp văn bản phình to và không chắc chắn của nó . Chế độ Org cũng có khả năng di chuyển các chương ( treessubtrees) xung quanh một cách dễ dàng (với M-arrow_key).

  • Thao tác văn bản

    Ngoài rất nhiều tiện ích tìm kiếm văn bản, cắt lát và dán các tiện ích ( C-s, M-yv.v.), tôi sử dụng chế độ thầnchế độ avy để tìm đường xung quanh bộ đệm. Việc chỉnh sửa phương thức được kích hoạt trước đây giúp tôi điều trị viêm khớp. Thứ hai là một cách cực kỳ nhanh chóng để điều hướng trên màn hình chỉ với một vài lần nhấn phím (thường là trên hàng nhà).

  • Flyspell

    Đây là một trình kiểm tra chính tả hoàn toàn đầy đủ có lợi cho tôi mỗi ngày.

  • Ma thuật

    Gần đây tôi đã bắt đầu sử dụng Git qua Bitbucket để quản lý công việc của mình với kiểm soát phiên bản. Tôi là người mới bắt đầu, nhưng có những lợi thế to lớn và Magit là một giao diện tuyệt vời cho hệ thống đó. Mặc dù Git không được tối ưu hóa chính xác cho văn bản tiểu thuyết, nhưng nó hoạt động đủ tốt.

  • TODO và COMMENT

    Org-mode có khả năng xác định công việc cần làm. Với một MS lớn, có thể có 40 điều trở lên tôi cần nhớ, từ nhỏ đến lớn. Chúng có thể được xác định và thậm chí được xếp hạng với các từ khóa TODO . Ngoài ra, các tiêu đề ghi chú và ý tưởng khác nhau có thể được mở đầu bằng COMMENT, chúng sẽ không xuất khi tôi gửi tệp tới .odt.

  • Chia cửa sổ

    Tôi thường làm việc trên một tệp có cửa sổ tách, hiển thị hai vị trí trong một câu chuyện. Tôi thường xuyên so sánh một địa điểm với một địa điểm khác. Trong một thời gian dài tôi đã làm điều này với split-window-right( C-x 3), nhưng gần đây tôi đã chuyển sang clone-indirect-buffer-other-window( C-x 4 c). Ưu điểm ở đây là nếu tôi thay đổi trạng thái gập của cửa sổ A, thì nó không thay đổi trạng thái gập của cửa sổ B.

  • Một bất lợi

    Xuất bản văn học chạy trên MSWord. Đó là khả năng để có được từ .orgđến .docnhưng không, đối với tôi, dễ dàng. Tôi hiện đang sử dụng Emacs ' org-exportđể chuyển các tệp tới .odt, mà tôi chỉnh sửa bằng Libreoffice . Tôi thủ công hoặc với các macro, đạt được định dạng cần thiết cho thế giới xuất bản lớn hơn như tôi biết, sau đó lưu tệp vào .docĐịnh dạng không phức tạp, nhưng nó là bắt buộc.

    Quá trình biên tập liên quan đến việc qua lại đáng kể, điều đó có nghĩa là tôi đã xuất khẩu sang Libreoffice và tái nhập vào Emacs. Ở phần cuối của Emacs, các macro có thể truy xuất các dấu hoa thị cho các tiêu đề của tôi và làm thẳng các thông minh của Word. Tôi hiện không có giải pháp tốt cho chữ nghiêng. Đôi khi tôi giới thiệu lỗi. Nếu Emacs không phải là một môi trường chỉnh sửa văn bản tuyệt vời như vậy, tôi sẽ không phải chịu đựng điều này.

    Mickey Petersen có một bài đăng blog tuyệt vời mô tả quy trình làm việc của riêng mình cho cuốn sách Mastering Emacs, sử dụng diffbộ đệm để sắp xếp các thay đổi và nhận xét (ngoài ken của tôi hiện tại), và cũng yêu cầu biên tập viên / nhà xuất bản văn học của mình xem các tệp văn bản đơn giản (điều mà tôi đã bị đẩy lùi, khi tôi đã thử nó).

  • Phần kết luận

    Emacs là công cụ hiệu quả nhất mà tôi tìm thấy để viết và chỉnh sửa tiểu thuyết. Ngoài ra còn có nhiều chế độ có thể được sử dụng cho các tác giả của các loại văn xuôi khác (chẳng hạn như org2blog để soạn và đăng blog Wordpress và AocateeX để viết tệp LaTeX).

    Tôi muốn thấy một tương lai nơi mối liên kết giữa .txt.docmượt mà hơn đối với loại văn bản tôi làm. Điều này sẽ bao gồm:

    • thiết lập Emacs để sử dụng khoảng cách gấp đôi hoặc khoảng cách đơn khi được yêu cầu
    • chèn ngắt trang thủ công (ví dụ: sau trang tiêu đề)
    • chữ nghiêng không thất bại xung quanh một số dấu chấm câu
    • tạo các tiêu đề đơn giản, hợp lý trên tất cả các trang trừ tiêu đề

    Có cách giải quyết ( đây là một bài đăng trên blog của Sean Miller về việc Emacs luôn thể hiện chữ in nghiêng bao gồm dấu câu, khuyến khích sử dụng khoảng trắng có độ rộng bằng 0) và chắc chắn những điều tôi chưa biết làm như thế nào khi có người đến từ văn học hơn là phía lập trình của thế giới chỉnh sửa văn bản.

Trước đây, tôi đã tình cờ thấy một bài đăng trên nhóm tin tức của rms có tiêu đề "Emacs là trình xử lý văn bản":

25 năm trước tôi đã hy vọng chúng tôi sẽ mở rộng Emacs để xử lý văn bản WYSIWG. Đó là lý do tại sao chúng tôi đã thêm các thuộc tính văn bản và phông chữ có chiều rộng thay đổi. Tuy nhiên, vẫn còn nhiều tính năng cần thiết để đạt được điều này.

Mọi người có thể vui lòng bắt đầu làm việc trên các tính năng cần thiết không?

Tôi rất muốn thấy một tương lai nơi tôi có thể thực hiện tất cả các tác phẩm văn học của mình trong Emacs mà không cần phải khởi chạy một trình soạn thảo khác. Bây giờ tôi không có ở đó, nhưng dù sao thì tôi cũng rất vui, bởi vì tiện ích tuyệt vời của trình soạn thảo này có giá trị hơn công việc phụ ở phần xuất khẩu.


1
có lẽ undoc sẽ giúp bạn? nhà nhập khẩu doc ​​cho emacs emacswiki.org/emacs/UnDoc
Jason Mirk

Tôi sẽ có một cái nhìn. Tôi đã sử dụng từ khóa trước đây và nó hiệu quả hơn giá trị của nó, vì những thay đổi định dạng xảy ra trong quá trình trích xuất. Cảm ơn vì lời khuyên!
Steven Arntson

11

Quay ra khỏi câu trả lời ban đầu cho câu hỏi liên kết .

  • Kiểm tra ngữ pháp: Tôi chưa biết về bất kỳ trình phân tích ngữ pháp chuyên dụng nào cho emacs. Tôi sẽ đề cập đến writegood-modecó sẵn trong MELPA trong đó làm nổi bật các từ chồn và giọng nói thụ động trong bộ đệm. Nó giúp bạn đi được một nửa quãng đường đó.

    Một thư viện hữu ích khác có dupwords.elthể làm nổi bật nếu một từ cụ thể (thường là danh từ và đại từ) được sử dụng nhiều lần trong cùng một câu. Điều này là tổng quát hơn so với việc tìm các từ liền kề lặp đi lặp lại có thể được xử lý bằng flyspell.

  • Bất cứ điều gì khác: Sửa ngôn ngữ nói chung là một vấn đề khó khăn. Điều đó đang được nói, nếu có tồn tại bất kỳ chương trình / tập lệnh bên ngoài nào trong khu vực này, thường dễ dàng làm cho nó giao diện với các emacs.

Nếu bạn sử dụng LaTeX để viết, cá nhân tôi thấy các tập lệnh ruby ​​sau đây khá hữu ích để kiểm tra phong cách và tính nhất quán. Tôi chỉ gọi lệnh shell từ chính chiếc xe buýt nhỏ. Một người xem có khả năng tìm kiếm chuyển tiếp và nghịch đảo cũng có giá trị khi hiệu đính. Trên MS Windows, tôi sử dụng sumatra-forwardgói từ ELPA để tìm kiếm chuyển tiếp trong trình xem SumatraPDF.

  1. kiểm tra phong cách của Neil Spring
  2. tính nhất quán gạch nối của Neil Conway

0

Mẹo này sẽ cho phép bạn định dạng các từ / vùng (in đậm, in nghiêng, gạch ngang, nhưng cũng có thể liệt kê, trích dẫn, v.v.) bằng một lần nhấn phím , thay vì thêm ' /', ' *', v.v. ở đầu và cuối văn bản của bạn. Tôi thấy điều này hữu ích khi viết, như khi đọc lại và tinh chỉnh các văn bản viết:

(defun xa-bold (&optional char)
  (interactive)
  (unless (region-active-p)
    (backward-word)
    (mark-word))
  (if (region-active-p)
      (insert-pair 1 ?* ?*)
    (insert "//")
    (backward-char))
  (forward-word)
  (right-char))

Mã này là để có được một từ / vùng in đậm. Tất cả bạn phải làm là để thay thế đầu tiên và thứ hai ' *' trong (insert-pair 1 ?* ?*)theo kiểu định dạng mà bạn muốn. Đối với parens, đi với (insert-pair 1 ?\( ?\))

Chỉ cần liên kết một khóa với nó và bạn đã hoàn tất:

 (define-key org-mode-map (kbd "M-&") 'xa-bold)

Lưu ý: Tôi cảm thấy thoải mái khi thêm một thay đổi nhỏ vào mã tôi đã đánh cắp ở đây. Tôi đã thêm (forward-word) (right-char)vào cuối hàm bởi vì khi bạn viết và muốn định dạng một từ, bạn muốn pointtheo sau ký tự định dạng, vì vậy bạn có thể tiếp tục viết sau. Nhưng bạn có thể muốn loại bỏ (right-char)các parens hoặc trích dẫn, để ở bên trong paren hoặc trích dẫn và tiếp tục viết.

Tôi không phải là một lập trình viên, chỉ là một người say mê, chơi những lúc với mã tồn tại. Và tôi muốn emacs trở thành trình xử lý văn bản của tôi!

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.