2009-06-23 5 views
5

Il y a la commande ": a", mais c'est multi-ligne, et argdo vous demande à nouveau le texte pour chaque fichier.dans vim, comment ajouter/insérer du texte avec argdo?

Les docs mentionnent la commande globale (g/pat/command) qui utilisera une version alternative de ": a" qui se termine par une nouvelle ligne au lieu de "." sur une ligne (vous pouvez inclure des sauts de ligne en les échappant avec "\"). Mais je ne pouvais pas faire fonctionner ça.

La seule façon que je l'ai vu est d'abord tirer sur le texte à être ajoutée dans un registre nommé, puis utilisez:

:argdo put x     " where x is the register 

J'espère que quelque chose comme

:argdo append myTextHere 

Répondre

4

Je ne sais pas où vous essayez d'insérer le texte dans le tampon. Si vous voulez après la ligne courante:

:argdo exe 'normal osometext' 

Insertion d'un texte avec des sauts de ligne dans le:

:argdo exe "normal osometext\<CR>anewline" 
+0

hey c'est plutôt cool. J'ai vu "normal" avant mais je ne l'ai pas utilisé. BTW j'ai trouvé cela aussi travaillé:: argdo normal osometext – 13ren

+0

J'aurais dû répondre à votre demande pour plus de clarté: parfois je voudrais l'insérer à la même ligne dans chacun des fichiers (par exemple la ligne 2); parfois après un certain modèle. Je ne voudrais probablement pas le faire en termes de ligne actuelle, parce que cela pourrait être différent dans les différents fichiers. Mais je pense que votre approche est assez puissante pour être adaptée à cela, en allant sur une ligne ou en cherchant un motif, avant de l'insérer. – 13ren

+0

C'est magnifique, J'AIME CELA! Par exemple: argdo exe 'normal zR' pour déplier tous les onglets. – user3751385

1

Yanking un texte dans vim le mettra dans le tampon par défaut, qui est ". Vous pouvez coller ce tampon en mode insertion, par exemple en tapant <C-R>". Donc tout ce dont vous avez besoin est argdo put "

+0

Merci, j'espérais quelque chose n'a pas impliqué la mise en place de registres. Quelque chose comme:: argdo append myTextHere Je vais clarifier la question. – 13ren

2

Pour ajouter du texte après la ligne n ° 10:

:argdo call append(10, "hello world") 

Pour ajouter du texte à la ligne 10:

:argdo call setline(10, getline(10)."textappended") 
+0

merci, cela semble réalisable. Il semble que l'on doive passer à un niveau différent pour le faire (en utilisant soit votre "appel" soit le "normal" de Brian) – 13ren

Questions connexes