Eu aprendi recentemente que, se eu paginar meus arquivos less
, posso pressionar v
e abrir o buffer no Emacs. Isso funciona desde que eu tenha a variável de ambiente $EDITOR
configurada corretamente, que no meu caso eu a tenho como:
export EDITOR='env TERM=xterm-256color emacs -nw'
A descrição acima me dá a capacidade de carregar o emacs dentro do terminal que é executado less
.
No entanto, o truque acima não funciona ao canalizar comandos para less
. Ao fazer isso, less
reclama com a seguinte mensagem:
Cannot edit standard input (press RETURN)
Minha pergunta é: por que isso acontece? Mas o mais importante, existe alguma solução alternativa para isso ?
Piping into less and editing: “cannot edit standard input” error. Workarounds?
é claro. Por que pensar de outra maneira?why
única, e não aworkarounds
, então acrescentei a ênfase.Respostas:
Como já foi dito, você não pode editar um fluxo de entrada.
A solução alternativa é bastante óbvia: salve o fluxo em um arquivo de dentro
less
e abra o arquivo salvo . Para fazer isso enquanto visualiza, pressiones
e atribua o nome de um arquivo. Em seguida, saialess
e abra o arquivo manualmente ou, ainda por dentroless
, digite:e
e forneça o nome do arquivo que você acabou de salvar.fonte
Uma boa solução alternativa é canalizar a saída de menos para o seu editor, por exemplo, depois de "echo foo | less", você pode:
g
pulará para a primeira linha do arquivo / entrada,|
chamará a ação "pipe",$
é a marca ("final"), seguida pelo comando para canalizar o intervalo (vim -
neste caso, onde "-" significa para ler a entrada de stdin).fonte
Significa exatamente o que foi dito - você só pode editar um arquivo que esteja no disco dessa maneira (a partir de
less
). Se você canalizou a saída de um processo,STDOUT
está indoSTDIN
paraless
; não há arquivo para editar.fonte