Existe-t-il un moyen de supprimer la nouvelle ligne à la fin d'une ligne dans Vim, afin que la ligne suivante soit ajoutée à la ligne actuelle?
Par exemple:
Evaluator<T>():
_bestPos(){
}
Je voudrais mettre tout cela sur une seule ligne sans copier les lignes et les coller dans la précédente. Il semble que je devrais pouvoir placer mon curseur à la fin de chaque ligne, appuyer sur une touche et faire passer la ligne suivante sur la même que celle sur laquelle se trouve le curseur.
Résultat final:
Evaluator<T>(): _bestPos(){ }
Est-ce possible à Vim?
Réponses:
Si vous êtes sur la première ligne, appuyez sur (majuscules) Jpour joindre cette ligne et la ligne suivante, en supprimant la nouvelle ligne. Vous pouvez également combiner cela avec un nombre, donc appuyer sur
3J
combinera les 3 lignes ensemble.la source
gJ
évite d'ajouter des espaces que Vim peut choisir d'ajouter lors de l'utilisationJ
.V
(Visual Line Mode) puis appuyez surJ
ougJ
:join
et:join!
cela joindra les lignes en conservant la position du curseur et ne gardera aucun espace au point de jonction. vous pouvez également le mapper comme:nnoremap <Leader>j :joing<cr>
etnnoremap <Leader>gj :join!<cr>
.Certainement. Vim reconnaît le caractère \ n comme une nouvelle ligne, vous pouvez donc simplement rechercher et remplacer. En mode commande, tapez:
la source
V
bloc visuel et le remplacer par-dessus.Sur la ligne supérieure en mode normal, appuyez sur Shift+ j.
Vous pouvez également ajouter un décompte, de sorte que
3J
la première ligne joindrait toutes ces lignes.la source
Comme d'autres réponses l'ont mentionné, (majuscules)
J
et search + replace for\n
peuvent généralement être utilisés pour supprimer les caractères de nouvelle ligne et pour concaténer les lignes.Mais pour se débarrasser du caractère de fin de ligne dans la dernière ligne , vous devez le faire dans Vim:
la source
:set noendofline
ne fonctionne pas sansbinary
?J
supprime l'espacement supplémentaire (le cas échéant), joignant les lignes avec un seul espace. (À quelques exceptions près: après/[.!?]$/
, deux espaces peuvent être insérés; avant/^\s*)/
, aucun espace n'est inséré.)Si vous ne voulez pas ce comportement,
gJ
supprimez simplement la nouvelle ligne et ne faites rien d'intelligent avec les espaces.la source
Tous les éléments suivants supposent que votre curseur se trouve sur la première ligne:
Utilisation de mappages normaux:
3Shift+J
Utilisation des commandes Ex:
Qui est une abréviation de
Qui peut également être saisi par le raccourci suivant:
3:j
Une commande Ex encore plus courte:
la source
:j!3
dans votre .vimrc vous permettra d'utiliser
backspace
etdelete
sur\n
(nouvelle ligne) en mode insertion.vous permettra de supprimer le LF précédent en mode normal avec
X
(en col 1).la source
Cela dépend probablement de vos paramètres, mais je le fais généralement avec
A<delete>
Où
A
est ajouté à la fin de la ligne. Cela nécessite probablement lenocompatible
mode :)la source
curseur en première ligne
MAINTENANT, en MODE NORMAL
ou
: V2jJ normal
la source
Je voudrais simplement appuyer sur A (ajouter à la fin de la ligne, vous met en mode insertion) sur la ligne où vous souhaitez supprimer la nouvelle ligne, puis appuyez sur Supprimer.
la source
:help 'backspace'
si cela ne vous dérange pas d'utiliser d'autres outils shell,
la source
ggVGJ
.Le problème est que les multiples caractères 0A (\ n) qui sont invisibles peuvent s'accumuler. Supposons que vous souhaitiez nettoyer de la ligne 100 à la fin:
Taper ESC et: (commandant de terminal)
Dans un script vim:
Explication: de 110 jusqu'à la fin, recherchez les lignes commençant par une nouvelle ligne (vides) et supprimez-les
la source