Canalizando menos e editando: erro "não é possível editar a entrada padrão". Soluções alternativas?


9

Eu aprendi recentemente que, se eu paginar meus arquivos less, posso pressionar ve abrir o buffer no Emacs. Isso funciona desde que eu tenha a variável de ambiente $EDITORconfigurada 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, lessreclama 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 ?


2
Você deve aprender a usar o emacsclient , que permitirá editar arquivos em uma cópia do Emacs já em execução. O Emacs não é o editor de inicialização mais rápida.
Cjm 26/10/11

Por que você reverteu minha edição? O título não deveria ser uma pergunta?
John

11
Desculpe, John, eu não vi sua edição. Editei o título para esclarecer que estou interessado principalmente em soluções alternativas para esse problema. Eu acho que o título é: Piping into less and editing: “cannot edit standard input” error. Workarounds?é claro. Por que pensar de outra maneira?
Amelio Vazquez-Reina

Isso é compreensível. Embora eu assuma que, se você está perguntando por que recebeu o erro, deve ser óbvio que deseja uma solução alternativa.
John

Concordo, apesar de a resposta mais votada até agora abordar a whyúnica, e não a workarounds, então acrescentei a ênfase.
Amelio Vazquez-Reina

Respostas:


5

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 lesse abra o arquivo salvo . Para fazer isso enquanto visualiza, pressione se atribua o nome de um arquivo. Em seguida, saia lesse abra o arquivo manualmente ou, ainda por dentro less, digite :ee forneça o nome do arquivo que você acabou de salvar.


15

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|$vim -

gpulará 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).


11
Incrível, obrigado!
Simon Pickup

5

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, STDOUTestá indo STDINpara less; não há arquivo para editar.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.