Dans vim, je me retrouve souvent à supprimer (ou copier) de gros blocs de texte. On peut compter les lignes de texte et dire (par exemple) 50dd
de supprimer 50 lignes.
Mais comment supprimer ce gros bloc de texte sans avoir à savoir combien de lignes supprimer?
51dd
. Alternativement, utilisez une commande de mouvement -50d<down arrow>
:set rnu
et Vim le fera instantanément! La ligne sur laquelle vous vous trouvez sera toujours numérotée de manière absolue, mais les lignes au-dessus et en dessous du curseur seront symétriquement numérotées 1, 2, ... (et mises à jour avec le mouvement du curseur, les événements au niveau du fichier, etc.)Réponses:
Je ne suis pas un gourou de Vim, mais ce que j'utilise dans ce cas est le "mode visuel". En mode commande, saisissez
V
(majuscule). Ensuite, déplacez-vous vers le haut / bas pour mettre en surbrillance le bloc que vous souhaitez supprimer (toutes les commandes de mouvement habituelles fonctionnent). Retirez-le ensuite avecx
oud
.la source
.vimrc
font agir?Shift
-v
... J'essayais également d'utiliser laCTRL
touche. Cela fonctionne donc et est probablement le moyen le plus pratique.CTRL
-v
) et Bloc visuel (Shift
-v
).Accédez à la ligne de départ et tapez ma(marque "a"). Allez ensuite à la dernière ligne et entrezd'a (supprimer pour marquer "a").
Cela supprimera toutes les lignes de la ligne actuelle à celle marquée (incluse). Il est également compatible avec
vi
etvim
au cas où votre environnement ne serait pas béni avec ce dernier.la source
/var/mail/username
en bloc et laisser les derniers e-mails intacts. Je fais une marque, puis j'entre par exemple50000
suivi degg
pour aller à la ligne 50.000, puis je supprime toutes les lignes intermédiaires. fonctionne comme un charme!vim
outil pour éditer des fichiers gigaoctets - j'aurais tendance à opter pour des outils de traitement de texte tels queawk
et ses frères :-)Vous pouvez utiliser le mode visuel aussi (certaines commandes sont utilisables avec l'option de suppression également) vip vappour sélectionner le paragraphe, v2appour sélectionner deux paragraphes dapœuvres, d2apaussi. Vous pouvez supprimer des blocs
[
]
similairesda[Pour référence: les types d'objets. Depuis la documentation de vim: section 4. http://vimdoc.sourceforge.net/htmldoc/visual.html
la source
dap
est très facile à retenir comme "supprimer un paragraphe"Il y a beaucoup de meilleures réponses ici, mais pour être complet, je mentionnerai la méthode que j'ai utilisée avant de lire certaines des bonnes réponses mentionnées ci-dessus.
Supposons que vous souhaitiez supprimer des lignes 24 à 39. Vous pouvez utiliser la commande ex
Vous pouvez également tirer des lignes en utilisant
Et recherchez et remplacez un peu plus de lignes 24-39 en utilisant
la source
Si vous activez les numéros de ligne via,
set number
vous pouvez simplementdNNG
supprimer la ligne NN de la position actuelle. Vous pouvez donc naviguer jusqu'au début de la ligne que vous souhaitez supprimer et end50G
supposant simplement que c'est la dernière ligne que vous souhaitez supprimer.la source
Cela dépend en quelque sorte de ce qu'est ce gros bloc . Peut-être que vous voulez simplement supprimer un paragraphe auquel cas cela dipferait l'affaire.
la source
Il existe plusieurs possibilités, le meilleur dépend du texte sur lequel vous travaillez.
Deux possibilités viennent à l'esprit:
V
,S-V
, ...), sélectionnez le texte avec le mouvement du curseur et appuyez surd
dap
la source
Si le bloc entier est visible à l'écran, vous pouvez utiliser le paramètre de nombre relatif. Voir: help relativenumber. Disponible en 7.3
la source
Vous pouvez placer votre curseur au début ou à la fin du bloc et passer en mode visuel (shift-v). Ensuite, déplacez-vous simplement vers le haut ou vers le bas jusqu'à ce que le bloc souhaité soit mis en surbrillance. Enfin, copiez le texte en appuyant sur y ou coupez le texte en appuyant sur d.
la source
Parallèlement à d'autres motions déjà mentionnées ici, il y a également une
/{pattern}<CR>
motion, donc si vous savez que vous souhaitez supprimer la ligne contenant foo, vous pouvez le fairedV/foo<CR>
.V
est là pour forcer le mouvement à être linéaire car, par défaut, il/
est par caractère.la source
Compter les lignes est trop fastidieux pour moi, mais compter les «paragraphes» n'est pas si mal. '{' et '}' déplacent le curseur sur la première ligne vide avant et après le curseur, respectivement. Les opérations de déplacement du curseur peuvent être combinées avec la suppression, et plusieurs autres réponses ont utilisé une approche similaire (dd pour une ligne, dG pour la fin du document, etc.)
Par exemple:
Si votre curseur commence au-dessus du bloc de commentaires, «d}» supprime le bloc de commentaires et «d2}» supprime à la fois le bloc de commentaires et le bloc de code. Si votre curseur commence sous le bloc de code, 'd {' supprime le code et 'd2 {' supprime les deux. Bien sûr, vous pouvez sauter un bloc en déplaçant d'abord le curseur: '{d {' ou '} d}'.
Si vous êtes cohérent avec votre espace, ou si vous pouvez compter les paragraphes en un coup d'œil, cela devrait fonctionner. Le fichier d'aide de Vim contient plus d'astuces de curseur si vous êtes intéressé.
la source
Vous pouvez également saisir un très grand nombre, puis appuyez sur
dd
si vous souhaitez supprimer toutes les lignes sous le curseur.la source
dG
, ce qui supprime à la fin du document, parG
défaut pour aller à la dernière ligne.Supprimer un bloc de texte
En supposant que votre curseur se trouve au début du bloc:
Explication
V
/^$<CR>
d
Reliure à clé
Une solution plus robuste:
Explication
:set nowrapscan
D
clé (avec les commandes suivantes)::nnoremap D
V
/^\s*$\\|\%$<CR>
d
la source