Question

J'ai 7 lignes de texte:

a
b
c
d
e
f
g

Maintenant, je veux ajouter des caractères à la fin de chaque ligne, pour finir avec:

a,
b,
c,
d,
e,
f,
g,

J'ai découvert que je pouvais utiliser le mot de passe "sed". commande et lance ma sélection dans sed avec " Filtrer par commande " dans Textmate

sed 's/$/,/'

Maintenant, il reste une question: comment transformer cela en une commande Textmate qui prend les entrées d’une manière ou d’une autre (pour qu’il sache quel texte ajouter)?

(Mes tentatives en ce sens se sont avérées infructueuses)

Était-ce utile?

La solution

Ajoutez ceci dans une commande du groupe Texte, cela ajoutera tout ce qui se trouve dans le presse-papiers à la fin de toutes les lignes sélectionnées:

#!/bin/bash
if [[ $(pbpaste|wc -l) -eq 0 ]]
    then r=`pbpaste`
    sed 's/$/'$r'/'
    else sed 's/$/,/'
fi

Il est actuellement limité à l'ajout de texte d'une ligne. Si le Presse-papiers contient plus d'une ligne, une virgule apparaîtra par défaut à la fin des lignes sélectionnées.

Modifier:

Pour aller un peu plus loin, voici une version qui fournit une boîte de dialogue qui vous invite à saisir la chaîne qui sera ajoutée à chaque ligne de la sélection:

#!/bin/bash
r=$(CocoaDialog inputbox --title "String to be appended to EOL" \
   --informative-text "Enter string:" \
   --button1 "Okay" --button2 "Cancel")

[[ $(head -n1 <<<"$r") == "2" ]] && exit_discard

r=$(tail -n1 <<<"$r")

sed "s/$/$r/"

Autres conseils

Le menu Texte contient déjà une commande " Modifier chaque ligne de la sélection ". fais exactement ça. Il mettra le curseur sur la première ligne et ce que vous tapez sera répété sur chaque ligne.

Créez une nouvelle commande dans l'éditeur de bundles

#!/bin/bash
sed 's/$/,/'

Dans le menu déroulant, sélectionnez Texte sélectionné ou Aucune .
Sur la sortie, sélectionnez Remplacer le texte existant

.

Je viens de le tester et cela fonctionne bien.
Vous pouvez également choisir un raccourci clavier pour le rendre plus efficace.

Si vous souhaitez éviter les itinéraires de commande et utilisez simplement la boîte de dialogue Rechercher / Remplacer, procédez comme suit:

  • mettez en surbrillance / sélectionnez les lignes que vous souhaitez ajouter à
  • ouvrir la boîte de dialogue Rechercher
  • cochez la case 'Expressions régulières'
  • dans le champ "Rechercher", ajoutez '$' (pour indiquer la fin de la ligne)
  • dans le champ 'Remplacer', ajoutez ',' (ce que vous voulez ajouter à la fin)
  • maintenez Option , cela changera " Remplacer tout " vers "En sélection"

Cette technique peut être appliquée de nombreuses autres manières utiles. Par exemple, remplacez '$' par '^' si vous souhaitez préfixer chaque ligne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top