Je veux déplier le texte dans Vim. Lorsque je rejoins des lignes, j'obtiens un espace supplémentaire entre les phrases.Pourquoi Vim ajoute-t-il des espaces lors de la jonction de lignes?
Pourquoi est-ce?
Je veux déplier le texte dans Vim. Lorsque je rejoins des lignes, j'obtiens un espace supplémentaire entre les phrases.Pourquoi Vim ajoute-t-il des espaces lors de la jonction de lignes?
Pourquoi est-ce?
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
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
Ensuite, la réponse à votre question est simplement d'annuler jointpaces: ': set nojoinspaces' – Cascabel
Très certainement, merci! Je n'étais pas familier avec ces 2 espaces après une phrase. – binOr
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.
Ceci est la bonne réponse. La réponse acceptée n'a pas fonctionné pour moi. – Jonah
Même. nojoinspaces n'a eu aucun effet. J'ai dû macro Jx pour supprimer chaque espace. –
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.
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
.
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!
pas de blague. J'ai de l'aide. Merci. – binOr