100 votes

éditeur vi/vim, copier un bloc (action non habituelle)

Dans l'éditeur vi/vim, je dois copier un bloc. Il existe de nombreuses façons de le faire, mais l'une d'entre elles est très rapide.

  1. étiqueter la première ligne d'une manière ou d'une autre,

  2. puis étiqueter la ligne d'extrémité d'une manière ou d'une autre,

  3. puis mettre une commande pour copier les lignes étiquetées.

  4. puis copier, peut-être en utilisant 'p', mais je ne suis pas sûr.

Quelqu'un connaît les commandes (pas yy ou 10yy) ? Merci d'avance.

166voto

rbtux Points 845

Utilisez simplement V pour sélectionner les lignes ou v pour sélectionner les caractères ou Ctrlv pour sélectionner un bloc.

Lorsque la sélection couvre la zone que vous souhaitez copier, appuyez simplement sur y et utiliser p pour le coller où vous voulez...

133voto

LukyBoy -KU Points 967

Leur documentation dit :

Coupez et collez :

  1. Positionnez le curseur à l'endroit où vous souhaitez commencer la découpe.
  2. Appuyez sur v pour sélectionner des caractères (ou des majuscules V pour sélectionner des lignes entières).
  3. Déplacez le curseur jusqu'à la fin de ce que vous voulez couper.
  4. Appuyez sur d pour couper (ou y à copier).
  5. Déplacez-vous à l'endroit où vous souhaitez coller.
  6. Appuyez sur P pour coller avant le curseur, ou p à coller après.

Le copier-coller s'effectue selon les mêmes étapes, à l'exception de l'étape 4 où vous devez appuyer sur y au lieu de d :

d = delete = cut

y = yank = copy

45voto

Randy Morris Points 16975

Une autre option, plus facile à mémoriser, serait de placer des marques sur les deux lignes avec ma y mb puis exécutez :'a,'byank .

Il existe de nombreuses façons d'accomplir cette tâche, je vous en propose simplement une autre.

26voto

catuf Points 351

J'ai trouvé la commande ci-dessous beaucoup plus pratique. Si vous voulez copier les lignes de 6 à 12 et les coller à partir de la position actuelle du curseur.

:6,12 co .

Si vous voulez copier les lignes de 6 à 12 et coller à partir de la 100ème ligne.

:6,12t100

Source : https://www.reddit.com/r/vim/comments/8i6vbd/efficient_ways_of_copying_few_lines/

21voto

jahroy Points 10072

On dirait que vous voulez placer marques dans le fichier.

mx place une marque nommée x sous le curseur

y'x efface tout ce qui se trouve entre la position actuelle du curseur et la ligne contenant la commande marque x .

Vous pouvez utiliser 'x pour déplacer simplement le curseur sur la ligne où se trouve votre marque.

Vous pouvez utiliser `x (un back-tick) pour passer à l'option emplacement exact de la marque.


Une chose que je fais tout le temps est arrache tout ce qui se trouve entre le curseur et la marque x dans le presse-papiers .

Vous pouvez faire ça comme ça :

"+y'x

REMARQUE : Dans certains environnements, la mémoire tampon du presse-papiers est représentée par un fichier de type * à la place d'un + .


Des questions similaires avec de bonnes réponses :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X