La gJ
combinaison fait ceci; de :help gJ
:
Joindre [compter] lignes, avec un minimum de deux lignes. Ne pas insérer ou supprimer des espaces.
J
Si vous souhaitez enregistrer une frappe, vous pouvez le réassocier :
:nnoremap J gJ
Notez que cela ne supprime aucun espace. Ainsi, si la ligne en cours se termine par un espace ou si la ligne suivante commence par un ou plusieurs espaces, elles seront laissées telles quelles .
Alors:
Hello
world
Devient:
Hello world
Nous pourrions utiliser Jx
dans ce cas, alors ce sera le cas Helloworld
, mais cela ne fonctionnera pas dans tous les cas; de l'aide:
Joignez les lignes en surbrillance, avec un minimum de deux lignes. Supprimer le retrait et insérer jusqu'à deux espaces
[...]
Ces commandes, sauf "gJ", insèrent un espace à la place de sauf s'il y a un espace blanc final ou que la ligne suivante commence par un ')'.
Ainsi, dans certains cas, plus d'un espace ou aucun espace n'est inséré. Autant que je sache, il n’ya pas de moyen facile de changer ce comportement; J'ai créé une fonction à modifier gJ
pour toujours rejoindre sans espaces:
" Like gJ, but always remove spaces
fun! JoinSpaceless()
execute 'normal gJ'
" Character under cursor is whitespace?
if matchstr(getline('.'), '\%' . col('.') . 'c.') =~ '\s'
" When remove it!
execute 'normal dw'
endif
endfun
" Map it to a key
nnoremap <Leader>J :call JoinSpaceless()<CR>
Voir aussi: :help J
,:help 'joinspaces'
Martin Tournoij
la source
Une autre astuce que vous pouvez essayer est d'utiliser remplacer. Parfois, cela peut être utile.
Scénario: Supprimez le dernier caractère et joignez la ligne suivante:
Par exemple,
devient:
la source
Créez une macro et réutilisez-la:
qaJxq
Maintenant, rejouez la macro
a
en utilisant @aoù vous voulez joindre deux lignes sans espace.@@répétera la macro précédente. Donc, vous pouvez simplement tenir @pour joindre plusieurs lignes.
la source
@a
quand vous pouvez taperJx
? Même nombre de touches et de touches SHIFT!3@a
de joindre 3 lignes, ce qui3Jx
permettrait de joindre 3 lignes avec des espaces, puis de supprimer l’espace entre les deuxième et troisième lignes, en laissant des espaces entre les autres lignes.Pour toujours rejoindre avec un seul espace:
Pour rejoindre sans espace du tout (supprime les espaces de fin et de début):
la source
Sélectionnez les lignes que vous souhaitez fusionner, entrez une commande Ex en tapant deux points
:
en mode normal. Puis tapez cette commande:s/$\n\s*//gc
La commande entière devrait ressembler à ceci:
:'<,'>s/$\n\s*//gc
Explication:
'<,'>
signifie que nous ne modifions que les lignes sélectionnées en mode visuel./$\n\s*
est un motif de regex . Nous recherchons une correspondance qui se termine$
par un nouveau caractère de ligne\n
et*
par la suite un nombre non déterminé d'espaces .s/pattern//gc
est une commande de substitution permettant de rechercher chaque modèle et de le remplacer par un caractère vide lors de la confirmation.la source