web-dev-qa-db-fra.com

vi éditeur, copier un bloc (action inhabituelle)

Dans l'éditeur vi, je dois copier un bloc. Il y a plusieurs moyens, mais un moyen est très rapide.

  1. étiqueter la première ligne par un moyen quelconque,

  2. puis étiqueter la ligne de fin d'une manière,

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

  4. puis copier, peut utiliser «p», mais pas sûr.

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

36
Yang

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

Plusieurs façons d'accomplir cette tâche, en offrant simplement une autre.

31
Randy Morris

просто используйтеVвыбрать строки илиvвыбрать символы илиCtrlvвыбрать блок.

Commutateur de pocheyи использоватьpвставить его куда угодно ...

82
André Keller

leur documentation dit:

Couper et coller:

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

Copier-coller s'effectue en suivant les mêmes étapes, à l'exception de l'étape 4, dans laquelle vous devez appuyer sur y au lieu de d:

d = delete = cut

y = yank = copy

45
Kaleem Ullah

On dirait que vous voulez placer des marques dans le fichier.

mx place une marque nommée x sous le curseur

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

Vous pouvez utiliser 'x déplacer simplement le curseur sur la ligne avec votre marque.

Vous pouvez utiliser `x (coche arrière) pour aller à l'emplacement exact de la marque.


Une chose que je fais tout le temps est tout ce qui se trouve entre le curseur et le repère 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 * au lieu d'un +.


Des questions similaires avec quelques bonnes réponses:

15
jahroy

Les raccourcis clavier pour cela sont:

  1. Pour copier: placez le curseur sur le début du bloc et appuyez sur md puis allez à la fin du bloc et appuyez sur y'd . Cela sélectionnera le bloc pour le coller, appuyez sur p.

  2. Pour couper: placez le curseur sur le début du bloc et appuyez sur ma , puis allez à la fin du bloc et appuyez sur à . Cela sélectionnera le bloc pour le coller, appuyez sur p.

3
Aman Khare

J'ai trouvé la commande ci-dessous beaucoup plus pratique. Si vous souhaitez 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 les coller à partir de la 100e ligne.

:6,12t100

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

3
catuf

Vous pouvez le faire comme dans vi, par exemple pour extraire les lignes de 3020 à la fin, exécutez cette commande (écrivez le bloc dans un fichier):

: 3020, $ w/tmp/yank

Et pour écrire ce bloc dans une autre ligne/fichier, allez à la position désirée et exécutez la commande suivante (insérez le fichier écrit auparavant):

: r/tmp/yank

(Rappel: n'oubliez pas de supprimer le fichier:/tmp/yank)

0
user9091660