Sous Linux, en éditant file_B
dans vim je veux ajouter la ligne 10-25 de file_A
. Exemple: On a tout un ensemble de documents HTML avec à peu près le même en-tête et oui, on pourrait créer un modèle et partir de là, mais quand même:
Je cherche un moyen simple [et élégant] d'insérer une plage de lignes à partir d'un fichier et de l'ajouter au fichier que je suis en train de modifier. In vim.
Les solutions que j'ai trouvées jusqu'à présent, mais qui ne correspondent pas exactement à ce que je recherche, sont
- à
file_B
l' intérieur de la commande:read file_A
ajoutera * tout le fichier_A * dans le fichier_B. Trop - il y a du copier-coller à l'intérieur de vim - mais pour celui-ci doit avoir ouvert
file_A
- dans file_A
:10,25w! file_B
'enverra' la plage de lignes donnée àfile_B
.
Cela semble assez proche du copier-coller - on peut ouvrir plusieurs fenêtres dans vim
Mais comme je travaille sur un écran de 8 pouces, plusieurs fenêtres rendent l'orientation difficile
Comme je n'ai pas été en mesure de trouver une solution confortable, je me demande si j'ai simplement mal compris quelque chose ou si les moyens que j'ai trouvés jusqu'à présent sont couramment utilisés et pris comme moyen standard.
linux
vim
copy-paste
erch
la source
la source
vim
. Mais cela semble hors de portée. Et je me demande vraiment si cela n'est réalisable que par le biais de commandes externes, car pour autant que j'en suisvim
maintenant, je suis arrivé à de petites restrictions jusqu'ici.Réponses:
La meilleure solution que je peux trouver est d'appeler en externe
sed
et de combiner cela avec:read !
la source
:r
est l'abréviation deread
in vim. Je n'ai aucune connaissancesed
ni comment l'utiliser. Bien sûr, je l'ai remplacéfileB
par le fichier réel :):10r
etc. placera le contenu de la ligne dix sur [tant qu'il existe]. ça fonctionne parfaitement maintenant. Génial. Merci beaucoup!:r!sed 10,25\!d
. Notez que vous n'avez pas besoin du-e
ou des guillemets, vous pouvez donc également l'écrire:r!sed -n 10,25p
brièvement.:r sed '10,$\!d;25q'
pour éviter de lire tout le fichier.