Obter informações do editor (vim/nano/emacs/textmate?)

Obter informações do editor (vim/nano/emacs/textmate?)

Eu só estava curioso para saber se existe uma maneira de obter informações não de, StdInmas de $EDITOR- seja vim, nano, emacs ou até mesmo um editor que não seja de linha de comando (MacVim/TextMate). Quais são as opções/soluções alternativas/melhores práticas?

Basicamente, eu gostaria de um fluxo de trabalho como heredoc- mas do $editor.

$ sort -nr << FOO | uniq -c 
pipe heredoc> foo 
pipe heredoc> bar
pipe heredoc> baz
pipe heredoc> foo
pipe heredoc> FOO
   2 foo
   1 baz
   1 bar

Responder1

O comando vipeno pacotemaisutilspermite iniciar $EDITOR no meio de um pipeline.
Você pode obter o comportamento desejado assim:

$ </dev/null vipe |sort -nr | uniq -c 

Responder2

Acho que sua única chance de fazer funcionar com qualquer tipo de editor é usar arquivos temporários:

FILE=$(mktemp); $EDITOR "$FILE"; <"$FILE" …command… ; rm "$FILE"

(No entanto, isso não permite iniciar o comando antes que uma entrada completa seja fornecida.)

Além disso, você pode usar echo "# please insert your input bellow" >"$FILE"antes da chamada para $EDITORinserir um comentário que aparecerá dentro do editor. Certifique-se de que isso não afetará o comportamento do comando (ou peça ao usuário para removê-lo explicitamente).

Responder3

O Emacs tem a possibilidade de executar o shell em um de seus buffers (use o shell MX). Mas os processos lançados ainda receberiam sua entrada do stdin, seu stdin seria simplesmente um pseudoterminal cuja outra extremidade seria o emacs.

Responder4

No Emacs você pode executar qualquer comando e fornecer o conteúdo de um dos buffers do Emacs (região selecionada para ser exato) como stdin para o aplicativo.

Por exemplo, se o conteúdo do seu buffer Emacs for lse você o marcar como região (usando C-SPC), então execute shell-command-on-region( M-|) e digite como comando bash(combinação completa: M-| command RET) será lsexecutado bashe a saída será aberta como um novo buffer.

Se você usar C-u M-| command RETna região, a saída substituirá o comando marcado em seu buffer atual.

informação relacionada