vi / vim, comment puis-je écrire un certain nombre de lignes dans un nouveau fichier


Réponses:


44

Tu peux faire

:100,200w filename

Bien sûr, 100 200 est la plage de lignes que vous souhaitez écrire.


Les adresses sont-elles inclusives ou exclusives?
Marcin

3
Compris. Également inclus si vous utilisez des modèles:: / ^ quelque chose /, / ^ else / w nom de fichier, ou marque: 'a,' bw nom de fichier inclut les lignes marquées 'a' et 'b'.
Bruce Ediger

Salut @Bernhard, que faire si je veux couper des lignes du fichier actuel.
Ravi Sevta

19

Le plus général:

  1. Déplacez le curseur sur la première ligne du groupe que vous souhaitez écrire. Frappez m et aséquentiellement. C'est "définir la marque nommée 'a'".

  2. Déplacez le curseur sur la dernière ligne du groupe, appuyez sur «m» et «b». »

  3. Passez en mode commande hit: comme une séquence, :'a,'b w filenamepuis appuyez sur retour.

Cela fonctionnera dans vi, nvi et vim.

Une autre méthode, fonctionne dans vim plus moderne:

  1. Placez le curseur sur la première ligne du groupe de lignes que vous souhaitez écrire. Appuyez sur V, pour "démarrer le bloc visuel de lignes".

  2. Déplacez le curseur en bas du groupe de lignes. Vim mettra en évidence avec la vidéo inverse chaque ligne.

  3. Rédiger. Appuyez sur :pour passer en mode ligne de commande. Cela vous donnera une invite au bas de l'écran qui ressemble à ceci: :'<,'> Cela signifie du début du bloc visuel à la fin. Tapez wet le nom de fichier et appuyez sur retour.

Vous pouvez ajouter des lignes simples à la fin du fichier selon vos besoins en plaçant votre curseur sur la ligne que vous souhaitez écrire, puis en tapant: :.w >> filenameet en appuyant sur retour.

Les commandes "écrire un groupe de lignes" fonctionnent également avec ">> nom de fichier" au lieu de "nom de fichier". Le ">>" fait que vi ou vim s'ajoute au fichier, plutôt que de simplement l'écrire.


8

Pour compléter la réponse de Bernhard, vous pouvez également sélectionner une région à l'aide du mode visuel, puis entrer :w filename.


8

Si vous connaissez les numéros de ligne que vous souhaitez écrire, vous pouvez le faire à partir de la ligne de commande:

vim -c "100,200w new_file.txt" -c wq original_file.txt

1

une petite astuce consiste à utiliser le numéro de ligne relatif. Par exemple:: + 0, + 99w filename écrivez les 100 lignes suivantes dans filename.


Cela n'écrasera-t-il pas le fichier d'origine? L'OP souhaite écrire dans un fichier différent.
SabreWolfy

1
@SabreWolfy No; peut-être avez-vous manqué «nom de fichier» après les numéros de ligne. Je viens de tester sa version et cela a fonctionné.
felwithe
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.