Oposto do parágrafo de preenchimento

25

O Emacs tem a função fill-paragraph. Existe alguma função que fará o oposto disso?

Eu tenho um parágrafo que já está preenchido e, em vez disso, eu o quero em uma única linha simples?

Sibi
fonte
11
fill-paragraphse não justificar o parágrafo, a menos que você usar um argumento prefixo ou passá-lo a não- nilprimeiro argumento. Veja (emacs)Fill Commands .
Drew

Respostas:

20

Citando o Wiki Emacs , de Stefan Monnier:

O preenchimento de um parágrafo une todas as linhas em um parágrafo em uma única linha. É o contrário de FillParagraph .

Ele funciona onde uma linha termina com um caractere de nova linha (”\ n”) e os parágrafos são separados por linhas em branco. Para fazer um parágrafo terminar em uma única nova linha, use a função abaixo:

;;; 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 para ligá-lo a uma chave:

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

Veja também UnfillRegion e UnwrapLine .

Luke
fonte
12
Esta é uma cópia direta da página UnfillParagraph da Wiki do Emacs , com a atribuição do autor (Stefan Monnier) removida. É útil postar as informações aqui, mas pelo menos deixe claro quem escreveu o código e o link para essa página da wiki.
Drew
12
É simplesmente educado adicionar atribuição quando você usa as informações de outra pessoa.
Nicael 25/10/14
2
Agradecemos a Malabarba por fazer as alterações. @KingShimkus: nicael explicou por que isso é melhor.
Drew
2
Se você postar conteúdo escrito por outra pessoa , você deve reconhecer suas fontes.
Gilles 'SO- stop be evil'
11
Observe que o link para a fonte foi alterado. Eu editei na resposta.
21817 smonff
4

Meu método seria colocar o cursor na última linha do parágrafo e pressionar M-^várias vezes.

A beleza desse atalho é que, além de unir linhas, reduz qualquer quantidade de espaços de indentação em um único.

Rajish
fonte
AFAIK, você pode fazer M-^e precisa apenas manter a tecla pressionada. A função é nomeada delete-indentation.
Rasmus
Para que serve o nome da função M-S-^, que parece não funcionar para mim?
26514 Sibi #
Sim, a função é delete-indentatione o atalho é descrito no Emacs como M-^- o shift ( S) foi adicionado por mim, porque você precisa segurá-la de qualquer maneira. Desculpe pela confusão.
Rajish
2

Existe o unfillpacote para isso agora.

Fornece comandos para preencher explicitamente (ou seja, desembrulhar) parágrafos e regiões, e também um comando que alterna entre preencher e não preencher o parágrafo ou região atual.

Baseia- se inicialmente nos exemplos de Xah Lee e depois reescrito com base em um artigo de Artur Malabarba

Fornece o seguinte:

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

É conveniente adicionar um teclado à sua escolha, como:

(global-set-key (kbd "<f8>") 'toggle-fill-unfill)
smonff
fonte
Você pode fornecer mais informações sobre este @easyE?
smonff
11
Meu erro: o código baseado nos exemplos de Xah Lee não foi incorporado como parte do Emacs, mas [ está incluído como um pacote MELPA] ( melpa.org/#/unfill ).
easyE
@easyE Não entendo a diferença entre o seu comentário e o conteúdo da minha resposta, desculpe.
S172 #
Eu não argumentei que isso é uma diferença. Eu estava enganado ao pensar que o pacakge não preenchido havia sido incluído no Emacs 25 e depois me corrigi.
easyE 04/10
1

Como sempre, existem várias maneiras de fazer isso, então vou dar outra resposta no ringue:

  1. Marcar parágrafo: M-h

  2. A consulta substitui a nova linha pelo espaço na região:

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

itsjeyd
fonte
0

O preenchimento de um pobre também pode ser feito definindo primeiro fill-columnum valor ridiculamente alto (uso 9999) e depois preenchendo. Por exemplo C-u 9999 C-x f M-q C-u 70 C-x f,. (Além disso, você pode preferir C-9 C-9 C-9 C-9a C-u 9999.)

mbork
fonte
0

No modo Evil, existe a Jligação de teclas normal modedo VIM. Ele une a linha abaixo e a linha atual em uma linha. Então, pressionando-o várias vezes, você pode desfazer o parágrafo de preenchimento.

Lenar Hoyt
fonte