web-dev-qa-db-fra.com

Comment effacer le numéro de ligne dans Vim lors de la copie?

Je copie un certain code d'une partie d'un fichier dans une autre partie de vim. Je constate qu'il y a des numéros de ligne dans chaque ligne et que le format a disparu. Comment définir le format correct comme Origine?

comme ça:

            40         root /opt/release/current/public;
 67             41         passenger_enabled on;
 68              42 
50
why

Si vous avez des numéros de ligne, je suis tout à fait sûr que vous n’utilisez pas les opérations yank/put de Vim (celles-ci jamais copier les numéros de lin, foldcolumn, icônes, etc.) car, en ce qui concerne le tampon de n'existe pas.

Je suppose que vous travaillez dans un émulateur de terminal et que vous utilisez la souris pour copier des éléments dans le presse-papiers, ce qui sélectionne éventuellement la pièce "superflue" de l'écran (y compris les espaces virtuels à la fin, les numéros de ligne, les marqueurs de pliage, etc.).

Vous avez peut-être de la chance

:se mouse+=a

afin d'obtenir le comportement de la souris comme vous l'attendez. Sinon, faites la sélection avec V<movement>...y (y pour yank, ce qui correspond à 'copier')

Puis sur l'utilisation de destination p (mis au curseur), ou P (mis avant le curseur)

Faites-moi savoir si cela vous a aidé ou si vous avez besoin de plus d'informations

76
sehe

En mode normal, tapez :se nonu

C'est le moyen le plus simple de supprimer les numéros de ligne et vous pourrez copier le texte sans les numéros de ligne.

32
Sandeep Singh

Au cas où quelqu'un voudrait un moyen plus rapide (de toute façon sous Linux), j'ai remarqué que dans vim, vous pouvez maintenir la touche Ctrl enfoncée tout en faisant glisser la souris sur la région que vous souhaitez copier.

Pas :

  1. ctrl et glisser sur la zone
  2. relâchez ctrl
  3. copier (soit un raccourci clavier ou un clic droit)
17
sij_a

Une solution permanente consiste à ajouter le code ci-dessous à la fin de votre fichier .vimrc situé dans votre répertoire personnel.

se mouse+=a

En ajoutant ceci, vous pourrez sélectionner uniquement du texte et non les numéros de ligne, comme indiqué dans l'image ci-dessous:

 enter image description here


Si vous n'obtenez pas votre fichier .vimrc dans votre répertoire personnel (je suis confronté à ce problème), tapez la commande :scriptnames dans l'éditeur vi, elle affichera l'emplacement de votre fichier .vimrc. Référence

9
Sandeep

Toutes les solutions précédemment entrées sont très bonnes. Cependant, vous utilisez parfois vim sur un serveur distant (vous ne pouvez donc pas copier dans votre presse-papiers en utilisant "+y). Les terminaux prennent souvent en charge les opérations de copier/coller.

J'utilise vim pour afficher la sélection visuelle sur un nouveau shell où je peux copier du texte à l'aide de la fonctionnalité de terminal:

:'<,'>w ! bash -c cat

Ensuite, je peux facilement copier la sortie.

Même modèle pour coller dans vim:

:r ! bash -c cat

Ensuite, je colle et envoie EOF au chat à l'aide de Ctrl+d. Cette méthode évite également de ré-indenter le texte que vous collez (Remarque: vous pouvez désactiver l'indentation automatique à l'aide de :set pi!).

5
Lynch

Jetez un coup d'œil à l'option pastetoggle parfois définie sur F11.

Sinon, vous pouvez toujours écrire la section que vous souhaitez copier dans un fichier temporaire (ma, allez à la fin de la ligne puis utilisez :'a,.w tempfile), puis lisez-la dans le deuxième fichier.

Pour un examen plus approfondi, consultez l’option autoindent.

4
ColWhi

Sous Windows VIM GUI: :set nu puis maintenez enfoncé Ctrl-Shift tout en mettant en évidence le texte souhaité avec la souris. Cela insère les numéros de ligne dans le tampon.

1
Gaurav

Sur Mac: j'ai découvert que vous pouvez sélectionner la zone souhaitée avec Option + Command et le coller, le coller dans un autre éditeur.

0

J'ai mappé la commande ci-dessous à une clé.
Il supprime les espaces autour des numéros de ligne copiés.
Il ignore le texte de la ligne et les lignes vides derrière.

:1,$s/^\s*[0-9]\+\s//\|1,$s/^\s*[0-9]\+\n/\r/<cr>
0
bilyboy65

Vous pouvez également envisager d'utiliser sed et pbcopy pour copier les lignes dans un presse-papiers, où vous pouvez les coller vers un autre terminal ou des applications en dehors de vim.

sed -n <line start #>,<line end #>p <file name> | pbcopy

0
Steven Tsao