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"
J'obtiens ces résultats étranges:
#!/bin/sh
#VAR=1
#while ((VAR < 10))
# do
# echo "VAR1 is now $VAR"
# ((VAR = VAR +2))
# done
# echo "finish"
#
Des signes de hachage (#) et des onglets sont apparus. Pourquoi?
Il y a deux raisons:
Pour coller dans vim
alors que le retrait automatique est activé, vous devez passer à mode coller en tapant:
:set paste
Ensuite, vous pouvez passer en mode insertion et coller votre code. Une fois le collage terminé, tapez:
:set nopaste
pour désactiver le mode coller. Comme il s'agit d'une action courante et fréquente, vim
propose de basculer le mode de collage:
set pastetoggle=<F2>
Vous pouvez changer F2
à la touche de votre choix, et vous pouvez désormais activer et désactiver le collage facilement.
Pour désactiver l'insertion automatique des commentaires, vous pouvez ajouter ces lignes à votre vimrc :
augroup auto_comment
au!
au FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
augroup END
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, comme OSX ou Windows, vous devez utiliser le *
S'inscrire. Sur un système X11, comme Linux, vous pouvez utiliser les deux.
Lectures complémentaires
Utilisez la pâte vim. Ce que vous voulez, c'est coller ce qui est dans le tampon du presse-papiers "+p
Cela sélectionne le +
et le colle en place.
Si vous utilisez Linux, *
est le tampon X/clic du milieu (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 cours de collage et effectue sa propre auto-indentation (au-dessus de votre indentation copiée) jusqu'à la fin du collage.
Pour que cela fonctionne sur SSH, vous devez définir l'option pour que votre presse-papiers soit partagé -Y
Voir man ssh
pour plus de détails.
Les onglets ont été insérés car vous avez autoindent activé et vous pouvez désactiver ce comportement en désactivant autoindent (:set noai
) avant de coller dans le terminal.
Les lignes commentées sont produites par des commentaires automatiques et peuvent être désactivées en les désactivant.
Alternative à ceux que vous devriez obtenir le comportement souhaité en utilisant les bascules :set paste
, en collant votre code formaté et :set nopaste
pour rétablir un comportement normal.