Đối diện của đoạn văn


25

Emacs có chức năng fill-paragraph. Có chức năng nào sẽ làm ngược lại với điều đó?

Tôi có một đoạn đã được điền và thay vào đó tôi muốn nó trong một dòng đơn?


1
fill-paragraphkhông không biện minh cho đoạn, trừ khi bạn sử dụng một đối số tiền tố hoặc vượt qua nó một phi nilđối số đầu tiên. Xem (emacs)Fill Commands .
vẽ

Câu trả lời:


20

Trích dẫn từ Emacs Wiki , bởi Stefan Monnier:

Bỏ một đoạn kết hợp tất cả các dòng trong một đoạn thành một dòng duy nhất. Nó là trái ngược với FillPar Đoạn .

Nó hoạt động khi một dòng kết thúc bằng một ký tự dòng mới (dòng \ n) và các đoạn được phân tách bằng các dòng trống. Để tạo một đoạn kết thúc trong một dòng mới, sau đó sử dụng chức năng dưới đây:

;;; It is the opposite of fill-paragraph    
(defun unfill-paragraph ()
  "Takes a multi-line paragraph and makes it into a single line of text."
  (interactive)
  (let ((fill-column (point-max)))
    (fill-paragraph nil)))

Và để ràng buộc nó với một khóa:

 ;; Handy key definition
 (define-key global-map "\M-Q" 'unfill-paragraph)

Xem thêm UnillRegionUnwrapLine .


12
Đây là một bản sao thẳng từ trang Wiki của Emacs UnlillPar Đoạn , với thuộc tính tác giả (Stefan Monnier) đã bị xóa. Rất hữu ích để đăng thông tin ở đây, nhưng ít nhất hãy làm rõ ai đã viết mã và liên kết đến trang wiki đó.
vẽ

12
Nó chỉ đơn giản là lịch sự để thêm ghi nhận khi bạn sử dụng thông tin của người khác.
nicael

2
Cảm ơn Malabarba đã thực hiện các thay đổi. @KingShimkus: nicael đã giải thích lý do tại sao điều này tốt hơn.
vẽ

2
Nếu bạn đăng nội dung được viết bởi người khác , bạn phải thừa nhận nguồn của mình.
Gilles 'SO- ngừng trở nên xấu xa'

1
Lưu ý các liên kết đến nguồn thay đổi. Tôi đã chỉnh sửa nó trong câu trả lời.
smonff

4

Phương pháp của tôi sẽ là đặt con trỏ ở dòng cuối cùng của đoạn và nhấn M-^nhiều lần.

Cái hay của lối tắt này là bên cạnh các đường nối, nó giảm bất kỳ khoảng trống thụt nào thành một khoảng trống.


AFAIK, bạn có thể làm M-^và bạn chỉ cần giữ phím. Hàm được đặt tên delete-indentation.
rasmus

Tên hàm là gì M-S-^, nó dường như không hoạt động đối với tôi?
Sibi

Có chức năng này delete-indentationvà phím tắt được mô tả trong Emacs là M-^- shift ( S) đã được tôi thêm vào, bởi vì dù sao bạn cũng phải giữ nó. Xin lỗi về sự nhầm lẫn.
Rajish

2

unfillgói cho việc này bây giờ.

Cung cấp các lệnh cho các đoạn và vùng không rõ ràng (ví dụ: bỏ ghép) và cũng là một lệnh sẽ chuyển đổi giữa điền và không điền đoạn hoặc vùng hiện tại.

ban đầu dựa trên các ví dụ của Xah Lee và sau đó được viết lại dựa trên một bài viết của Artur Malabarba

Nó cung cấp như sau:

M-x unfill-region
M-x unfill-paragraph
M-x unfill-toggle
M-x toggle-fill-unfill

Thật tiện lợi khi thêm một khóa bấm tiện dụng theo lựa chọn của bạn như:

(global-set-key (kbd "<f8>") 'toggle-fill-unfill)

Bạn có thể cung cấp thêm thông tin về điều này @easyE?
smonff

1
Lỗi của tôi: mã dựa trên các ví dụ của Xah Lee đã không được hợp nhất như một phần của Emacs, nhưng [ được bao gồm dưới dạng gói MELPA] ( melpa.org/#/unfill ).
easyE

@easyE Tôi không nhận được sự khác biệt giữa bình luận của bạn và nội dung câu trả lời của tôi, xin lỗi.
smonff

Tôi đã không tranh luận rằng đây là một sự khác biệt. Tôi đã nhầm lẫn khi nghĩ rằng pacakge chưa hoàn thành đã được đưa vào Emacs 25, và sau đó tôi đã tự sửa.
easyE

1

Như mọi khi, có một số cách để làm điều này, vì vậy tôi sẽ ném một câu trả lời khác vào vòng:

  1. Đánh dấu đoạn: M-h

  2. Truy vấn thay thế dòng mới bằng không gian trong khu vực:

    M-% C-q C-j RET SPC RET !


0

Việc làm của một người nghèo cũng có thể được thực hiện bằng cách trước tiên đặt fill-columngiá trị cao đến mức nực cười (tôi sử dụng 9999) và sau đó điền vào. Ví dụ , C-u 9999 C-x f M-q C-u 70 C-x f. (Ngoài ra, bạn có thể thích C-9 C-9 C-9 C-9để C-u 9999.)


0

Trong chế độ Evil có Jràng buộc chính normal modetừ VIM. Nó nối dòng bên dưới và dòng hiện tại thành một dòng. Vì vậy, bằng cách nhấn nó nhiều lần, bạn có thể hoàn tác đoạn văn bản.

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.