J'ai récemment appris que si je page mes fichiers avec less
, je peux appuyer sur v
et ouvrir le tampon dans Emacs. Cela fonctionne tant que j'ai la variable d'environnement $EDITOR
correctement configurée, ce qui dans mon cas, je l'ai comme:
export EDITOR='env TERM=xterm-256color emacs -nw'
Ce qui précède me donne la possibilité de charger emacs dans le terminal qui fonctionne less
.
Cependant, l'astuce ci-dessus ne fonctionne pas lors de la canalisation des commandes vers less
. Ce faisant, se less
plaint du message suivant:
Cannot edit standard input (press RETURN)
Ma question est, pourquoi cela se produit-il? Mais surtout, y a-t-il une solution de contournement ?
Piping into less and editing: “cannot edit standard input” error. Workarounds?
est clair. Pourquoi pensez-vous autrement?why
seule et non de laworkarounds
, j'ai donc mis l'accent.Réponses:
Comme cela a déjà été dit, vous ne pouvez pas modifier un flux d'entrée.
La solution de contournement est assez évidente: enregistrez le flux dans un fichier de l'intérieur
less
et ouvrez le fichier enregistré . Pour ce faire pendant la visualisation, appuyez surs
et donnez un nom à un fichier. Ensuite, quittezless
et ouvrez le fichier à la main, ou, toujours de l'intérieurless
, tapez:e
et donnez le nom du fichier que vous venez d'enregistrer.la source
Une bonne solution consiste à diriger la sortie de less vers votre éditeur, par exemple après "echo foo | less" vous pouvez faire:
g
sautera à la première ligne du fichier / entrée,|
invoquera l'action "pipe",$
est la marque ("la fin"), suivie de la commande pour diriger la plage (vim -
dans ce cas, où le "-" signifie pour lire l'entrée de stdin).la source
Cela signifie exactement ce qu'il a dit - vous pouvez uniquement modifier un fichier qui se trouve sur le disque de cette façon (à partir de
less
). Si vous LPRPDÉ la sortie d'un processus, sonSTDOUT
va dansSTDIN
pourless
; il n'y a aucun fichier à éditer.la source