Dolgu-paragraf karşıtı


25

Emacs işlevi vardır fill-paragraph. Bunun tersini yapacak herhangi bir fonksiyon var mı?

Zaten doldurulmuş bir paragrafım var ve bunun yerine düz bir satırda mı istiyorum?


1
fill-paragraphyok değil bir önek argümanı kullanmak veya olmayan geçmek sürece, paragraf haklı nilİlk argüman. Bakınız (emacs)Fill Commands .
Drew

Yanıtlar:


20

Emacs Wiki'den Stefan Monnier'den alıntı :

Bir paragrafın doldurulması, bir paragraftaki tüm satırları tek bir satıra birleştirir. Bu bir aykırı olduğunu FillParagraph .

Bir satırın yeni satır karakteriyle (”\ n”) bittiği ve paragrafların boş satırlarla ayrıldığı yerlerde çalışır. Bir paragrafı tek bir yeni satırda sonlandırmak için aşağıdaki işlevi kullanın:

;;; 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)))

Ve onu bir anahtara bağlamak için:

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

Ayrıca bakınız UnfillRegion ve UnwrapLine .


12
Bu, yazar (Stefan Monnier) özniteliği kaldırılmış olan Emacs Wiki sayfası UnfillParagraph'tan düz bir kopyadır . Bilgiyi buraya göndermek yararlı olacaktır, ancak en azından kodu kimin yazdığını ve bu wiki sayfasına bağlantı verdiğini açıkça belirtin.
Drew,

12
Bir başkasının bilgilerini kullanırken atıf eklemek çok basit.
nicael

2
Değişiklikleri yaptıkları için Malabarba'ya teşekkür ederiz. @KingShimkus: nicael bunun neden daha iyi olduğunu açıkladı.
Drew,

2
Eğer varsa başkası tarafından yazılmış içerik göndermek , kendi kaynaklarını kabul etmesi gerekir.
Gilles 'SO- kötülük olmayı'

1
Değişen kaynağa olan bağlantıya dikkat edin . Ben cevabında yazdım.
smonff

4

Benim yöntemim imleci paragrafın son satırına yerleştirmek ve M-^birkaç kez vurmaktı .

Bu kısayolun güzelliği, çizgileri bir araya getirmenin yanı sıra herhangi bir girinti alanını da tek bir kısma indirgemesidir.


AFAIK, yapabilir M-^ve sadece anahtarı basılı tutmanız yeterlidir. İşlev adlandırılmıştır delete-indentation.
rasmus

İşlev adı ne, M-S-^benim için işe yaramadı mı?
Sibi

Evet, fonksiyon delete-indentationve kısayol Emacs'ta şöyle tanımlanır M-^- shift ( S) benim tarafımdan eklendi, çünkü yine de tutmak zorundasınız. Karışıklık için üzgünüm.
Rajish

2

Şimdi bunun için bir unfillpaket var .

Paragrafların ve bölgelerin açıkça doldurulması (örneğin paketinin açılması) için komutlar ve ayrıca geçerli paragrafın veya bölgenin doldurulması ve doldurulması arasında geçiş yapacak bir komut sağlar.

Bu edilir başlangıçta dayalı XAH Lee'nin örnekler ve daha sonra dayanan yeniden yazılmış Artur Malabarba bir makalesinden

Aşağıdakileri sağlar:

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

Aşağıdakiler gibi, istediğiniz gibi kullanışlı bir tuşlama eklemek kolaydır:

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

Bu @easyE hakkında daha fazla bilgi verebilir misiniz?
smonff

1
Benim hatam: XAH Lee'nin örneklere dayalı kod vardır değil Emacs bir parçası olarak dahil edilmiştir, ancak [ edilir bir MELPA paket olarak dahil] ( melpa.org/#/unfill ).
easyE

@easyE Yorumunuz ile cevabımın içeriği arasındaki farkı alamadım, üzgünüm.
smonff

Bunun bir fark olduğunu iddia etmedim. Doldurma grubunun Emacs 25'e dahil olduğunu düşünmüştüm ve sonra kendimi düzelttim.
easyE

1

Her zamanki gibi, bunu yapmanın birkaç yolu var, bu yüzden halkada başka bir cevap atacağım:

  1. Paragrafı işaretle: M-h

  2. Sorgu, yeni satırı bölgedeki boşlukla değiştirir:

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


0

Zavallı bir adamın dolgusu da ilk önce fill-columngülünç bir değere ayarlanarak (9999 kullanıyorum) ve sonra doldurularak yapılabilir. Mesela C-u 9999 C-x f M-q C-u 70 C-x f. (Ayrıca, tercih C-9 C-9 C-9 C-9edebilirsiniz C-u 9999.)


0

Evil modunda VIM'den gelen Jtuşlar var normal mode. Aşağıdaki çizgiye ve mevcut çizgiye tek bir çizgide birleşir. Böylece, birkaç kez basarak, paragrafı geri alabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.