2009-07-18 5 views
0

J'ai une copie dans le presse-papiers de l'écran qui contient le mot Masi aften. Je voudrais le remplacer avec Bond efficacement de sorte que je modifie le presse-papiers directement dans le mode de commande de l'écran. Je sais que je pourrais enregistrer le presse-papiers à/tmp et exécuter le remplacement là dans Vim, mais je veux apprendre l'écran.Pour exécuter Sed dans le presse-papier de Screen en mode de commande de l'écran

-je exécuter comme j'ai mes données dans le presse-papiers de l'écran

Ctrl-A : sed s/Masi/Bond/ | [Screen's clipboard]  /// I do not know how to refer to Screen's clipboard by a command other that C-A ] 

Je reçois

unknown command sed 

Comment pouvez-vous exécuter une commande au presse-papiers de l'écran dans le mode de commande de l'écran?

Répondre

2

Je ne pense pas que l'écran ait un moyen d'exécuter des commandes sur le tampon de collage.

Une façon de le faire est de faire une liaison pour enregistrer le tampon de collage et ouvrir une nouvelle fenêtre dans l'écran qui exécute un script pour modifier le tampon. Ensuite, créez une autre liaison pour recharger le tampon modifié à partir du disque et du collage (ceci peut être lié à la liaison de collage normale).

Ajoutez ceci à screenrc (évolution des chemins):

bind -c screensed s eval "writebuf /pathtoscript/screensed.clipboard" "screen sh /pathtoscript/screensed.sh" 
bind -c screensed p eval "readbuf /pathtoscript/screensed.clipboard" "paste ." 
bind , command -c screensed 

Faire un script shell quelque part:

#!/usr/bin/env sh 
echo "Enter sed script: " 
read sedcommand 
sed -i ${sedcommand} /pathtoscript/screensed.clipboard 
echo "(Enter to return)" 
read something 

"ctrl-a, s" dans l'écran videra le presse-papiers et faire une nouvelle fenêtre pour la commande sed à entrer. "ctrl-a, p" va lire le presse-papiers et coller. La pause à la fin du script est de montrer toutes les erreurs que sed pourrait donner.

+0

Savez-vous où Screen stocke son clipbeard? –

+0

Je pense que le tampon de collage d'écran est juste gardé en mémoire jusqu'à ce qu'une commande "writebuf" soit faite. Je ne connais aucun moyen de rendre l'écran automatiquement écrire le tampon après la copie. Je m'attends à ce que ce genre d'écriture automatique soit assez simple si vous êtes prêt à regarder dans le code source. –

+1

J'ai trouvé ceci avec une recherche rapide: http://snarfed.org/space/synchronizing%20GNU%20screen%27s%20paste%20buffer%20and%20the%20X%20selection, apparemment "stuff '" "fera une copie quand dans marquez le mode (impair). En mettant ceci dans votre screenrc, l'écran écrira automatiquement dans un fichier lorsque vous copiez: bindkey -m> eval "stuff" "writebuf –

Questions connexes