2009-10-16 4 views

Répondre

28

Le formatage détruit l'information. Il y a beaucoup de blocs de texte différents qui donneront le même format une fois. Par conséquent, il n'y a aucun moyen d'inverser l'opération sans connaissance préalable (c'est-à-dire annuler).

Unformatted:

Unformatted text could start out as either all one line, or several, yet look the same when formatted. 

Unformatted text could start out as either all one line, or several, 
yet look the same when formatted. 

Formaté:

Unformatted text could start out as 
either all one line, or several, 
yet look the same when formatted. 

Si vous voulez que votre paragraphe sur une seule ligne, ou si vous êtes d'accord avec bidouillant un peu manuel, vous pouvez utiliser J rejoindre lignes de retour ensemble. Vous pouvez utiliser le mode visuel pour appliquer la commande J à plusieurs lignes à la fois, peut-être en combinaison avec ap ou pour sélectionner un paragraphe, par ex. vipJ. Encore une fois, vous perdrez quand même des informations: plusieurs espaces lors des sauts de ligne avant que le formatage finisse par se réduire à des espaces uniques. (Vous pouvez réellement joindre sans modifier les espaces en utilisant gJ au lieu de J, mais vous les aurez déjà perdus lorsque vous avez formaté)

Si vous êtes dérangé par les espaces supplémentaires après les phrases (lignes se terminant par!,?, . ou), éteignez joinspaces: set nojoinspaces

+0

Merci beaucoup. J'ai déjà essayé de joindre des lignes, mais ce qui m'énerve, c'est que soudainement plusieurs espaces se produisent entre les phrases après avoir rejoint les lignes. – binOr

+3

Ensuite, la réponse à votre question est simplement d'annuler jointpaces: ': set nojoinspaces' – Cascabel

+0

Très certainement, merci! Je n'étais pas familier avec ces 2 espaces après une phrase. – binOr

54

J'ai le sentiment est ce que vous voulez vraiment: gJ

de :h gJ:

gJ   Join [count] lines, with a minimum of two lines. 
      Don't insert or remove any spaces. {not in Vi} 

Ceci est pratique si vous avez copié quelque chose à partir d'un terminal et qu'il est collé comme un grand bloc rectangulaire dans vim, plutôt que sur une seule ligne.

Je l'utilise habituellement en mode visuel. Substance Hilight, gJ.

+4

Ceci est la bonne réponse. La réponse acceptée n'a pas fonctionné pour moi. – Jonah

+1

Même. nojoinspaces n'a eu aucun effet. J'ai dû macro Jx pour supprimer chaque espace. –

6

This est la réponse qui a fini par travailler pour moi, rien de tout ce qui précède a fonctionné dans mon cas d'utilisation. Essentiellement, utilisez gJ comme plusieurs autres ont dit, mais mettre en évidence tout le fichier, donc en mode de commande en tapant ggVGgJ.

4

Je suppose que la solution simple pour rejoindre les lignes sans espaces entre les deux est:

:j! 

Avec ! la jointure ne pas insérer ou supprimer des espaces. Pour l'ensemble du fichier, utilisez :%j!.

Voir: :help :join.

1

J'ai encore l'espace supplémentaire après la jointure, si la ligne sur laquelle nous travaillons ne se termine pas par de l'espace. Habituellement c'est le comportement désiré.Exemple

first line without space 
second line 

après avoir rejoint avec J, devenir

first line without space second line 

Bien que dans certains cas, nous ne voulons pas l'appliquer,

myInstance->methodA() 
      ->methodB() 

Et nous voudrions le rejoindre pour devenir myInstance->methodA()->methodB() sans aucun espace entre les deux!

Voici la mise en correspondance des aides-je utiliser

nmap <leader>jj Jx 

<chef> clé peut être vérifiée avec :let mapleader, par défaut à la clé \ je crois.

donc en mode normal, juste \jj pour effectuer une jointure sans espace supplémentaire!

Questions connexes