Dans Vim, si je colle ce script:
#!/bin/sh
VAR=1
while ((VAR < 10))
do
echo "VAR1 is now $VAR"
((VAR = VAR +2))
done
echo "finish"
Je reçois ces résultats étranges:
#!/bin/sh
#VAR=1
#while ((VAR < 10))
# do
# echo "VAR1 is now $VAR"
# ((VAR = VAR +2))
# done
# echo "finish"
#
Les signes de hachage (#) et les onglets sont apparus. Pourquoi?
vim
clipboard
whitespace
Elbarna
la source
la source
Réponses:
Il y a deux raisons:
Pour coller
vim
lorsque l’indentation automatique est activée, vous devez passer en mode Coller en tapant:Ensuite, vous pouvez passer en mode insertion et coller votre code. Une fois le collage terminé, tapez:
désactiver le mode coller. Comme il s’agit d’une action courante et fréquente,
vim
propose le mode de collage bascule:Vous pouvez modifier la
F2
touche de votre choix et maintenant, vous pouvez activer et désactiver facilement le collage.Pour désactiver l'insertion automatique de commentaires, vous pouvez ajouter ces lignes à votre vimrc :
vim
fournit également un registre de collage pour vous permettre de coller du texte à partir du Presse-papiers du système. Vous pouvez utiliser"*p
ou"+p
selon votre système. Sur un système sans X11, tel que OSX ou Windows, vous devez utiliser le*
registre. Sur un système X11, comme Linux, vous pouvez utiliser les deux.Lectures complémentaires
la source
set paste
ne devrait jamais être dans votre vimrc. Il désactive ou réinitialise beaucoup de choses, y compris les mappages en mode insertion, les mappages en ligne de commande, les abréviations, la largeur de texte, wrapmargin, autoindent, smartindent, softtabstop, formatoptions, indentexpr et quelques autres.:h paste
a toute la liste. La plupart des gens utilisent tout ou partie de ces éléments et se demandent pourquoi leurs paramètres sont ignorés.:r!cat
pour coller mot à mot.set mouse
, qui peut automatiquement entrer et quitter le mode Coller lors du collage avec un clic de souris.Utilisez la pâte vim. Ce que vous voulez, c'est coller ce qu'il y a dans le tampon du presse-papier "+p
Cela sélectionne le
+
et le colle en place.Si vous utilisez Linux,
*
est-ce que le tampon X / clic intermédiaire (le dernier texte sélectionné).Ensuite, Vim sait que c'est une pâte.
Sinon, vim pense que vous avez tapé les clés en train d'être collées et effectue sa propre indentation automatique (en plus de votre indentation copiée) jusqu'à la fin du collage.
Pour que cela fonctionne sur SSH, vous devez définir l'option de partage de votre presse-papiers.
-Y
Voir
man ssh
pour plus de détails.la source
gvim
); vim s'exécutant dans un émulateur de terminal colle le dernier texte supprimé avec "* p, et non la sélection actuelle.set mouse?
vim --version
si elle a été compilée avec le support du presse-papiers+xterm_clipboard
doit être dans la sortieunnamed
chaîne.Les onglets ont été insérés car autoindent est activé et vous pouvez désactiver ce comportement en désactivant autoindent (
:set noai
) avant de le coller dans le terminal.Les lignes commentées sont produites par auto-commentaire et peuvent être désactivées en les désactivant.
Au lieu de cela, vous devriez obtenir le comportement souhaité en utilisant les options
:set paste
, en collant votre code formaté et:set nopaste
en rétablissant un comportement normal.la source