Arquivo não está mais disponível ao tentar editar no vim via ()

2

Ao trabalhar com o mercurial, frequentemente faço coisas como

vim <(hg cat -r 42 somefile)

No entanto, se eu tentar isso com um arquivo maior que várias centenas de linhas, recebo um erro de leitura no vim e apenas as primeiras duas centenas de linhas são incluídas. Se eu usar o gvim em vez do vim, recebo um erro como

E211: FIle "/proc/3546/fd/63" no longer available

Isso não deveria funcionar? Eu não sei se é relevante, mas eu tentei tanto no bash quanto no zsh, com o mesmo resultado, e também tentei

cat <(hg cat -r 42 somefile)

que imprime o arquivo inteiro como seria de esperar.

    
por Tor 07.05.2013 / 13:14

1 resposta

2

Esses são pipes, não arquivos regulares. Ele desaparece quando vim fecha o descritor de arquivo. Você poderia fazer:

hg cat -r 42 somefile | vim -

(há vim é informado de que pode não ser um arquivo regular, portanto, se comporta de acordo. Use vim -R - ou view - se você não quiser que vim reclame que os dados não foram salvos na saída) .

Ou com zsh , usando um arquivo temporário:

vim =(hg cat -r 42 somefile)
    
por 07.05.2013 / 13:35

Tags