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
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
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.
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 :
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:
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
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!
).
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.
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.
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.
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>
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