Di fronte al paragrafo di riempimento


25

Emacs ha la funzione fill-paragraph. C'è qualche funzione che farà il contrario?

Ho un paragrafo che è già stato riempito e invece lo voglio in una sola riga?


1
fill-paragraphnon non giustificare la paragrafo, a meno che non si utilizza un argomento prefisso o passare un non nilprimo argomento. Vedi (emacs)Fill Commands .
Drew

Risposte:


20

Citando da Emacs Wiki , di Stefan Monnier:

La mancata compilazione di un paragrafo unisce tutte le righe di un paragrafo in un'unica riga. È il contrario di FillParagraph .

Funziona dove una linea termina con un carattere di nuova riga ("\ n") e i paragrafi sono separati da linee vuote. Per far terminare un paragrafo in una nuova riga, utilizzare la funzione seguente:

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

E per associarlo a una chiave:

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

Vedi anche UnfillRegion e UnwrapLine .


12
Questa è una copia diretta dalla pagina Wiki di Emacs UnfillParagraph , con l'attribuzione dell'autore (Stefan Monnier) rimossa. È utile pubblicare qui le informazioni, ma almeno chiarire chi ha scritto il codice e il collegamento a quella pagina wiki.
Ha

12
È semplicemente educato aggiungere attribuzione quando si utilizzano le informazioni altrui.
nicael,

2
Grazie a Malabarba per aver apportato le modifiche. @KingShimkus: nicael ha spiegato perché questo è meglio.
Disegnato il


1
Si noti che il collegamento alla fonte è cambiato. L'ho modificato nella risposta.
smonff,

4

Il mio metodo sarebbe posizionare il cursore nell'ultima riga del paragrafo e colpire M-^più volte.

La bellezza di questa scorciatoia è che accanto alle linee di giunzione riduce qualsiasi quantità di spazi di rientro in uno singolo.


AFAIK, puoi farlo M-^e devi solo tenere premuto il tasto. La funzione è denominata delete-indentation.
rasmus

A cosa serve il nome della funzione M-S-^, non sembra funzionare per me?
Sibi,

Sì, la funzione è delete-indentatione la scorciatoia è descritta in Emacs come M-^- lo shift ( S) è stato aggiunto da me, perché devi tenerlo comunque. Scusate la confusione.
Rajish,

2

C'è il unfillpacchetto per questo ora.

Fornisce i comandi per i paragrafi e le aree esplicitamente non compilanti (ad es. Da scartare) e anche un comando che commuta tra il riempimento e la non compilazione del paragrafo o della regione corrente.

Si basa inizialmente sugli esempi di Xah Lee e successivamente riscritto in base a un articolo di Artur Malabarba

Fornisce quanto segue:

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

È conveniente aggiungere un pratico keybing di tua scelta come:

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

Potete fornire ulteriori informazioni su questo @easyE?
smonff,

1
Il mio errore: il codice basato sugli esempi di Xah Lee non è stato incorporato come parte di Emacs, ma [ è incluso come pacchetto MELPA] ( melpa.org/#/unfill ).
easyE

@easyE Non capisco la differenza tra il tuo commento e il contenuto della mia risposta, scusa.
smonff,

Non ho sostenuto che questa sia una differenza. Ho sbagliato a pensare che il pacakge sbloccato fosse stato incluso in Emacs 25, e poi ho corretto me stesso.
easyE

1

Come sempre, ci sono diversi modi per farlo, quindi lancerò un'altra risposta sul ring:

  1. Segna il paragrafo: M-h

  2. La query sostituisce newline con spazio nella regione:

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


0

La mancanza di un uomo povero può anche essere fatta impostando prima fill-columnun valore ridicolmente alto (io uso 9999) e poi riempiendo. Per esempio, C-u 9999 C-x f M-q C-u 70 C-x f. (Inoltre, si potrebbe preferire C-9 C-9 C-9 C-9a C-u 9999.)


0

In modalità Evil c'è il J associazione dei tasti normal modeda VIM. Unisce la riga in basso e la riga corrente in una riga. Quindi, premendo più volte, è possibile annullare il paragrafo di riempimento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.