Como abrir um arquivo no vim usando pipe

12

Eu uso o comando locate com muita frequência.

Então, se eu executar o seguinte comando.

locate updatedb | head -1

Em seguida, ele me fornece o O/p

/usr/updatedb.conf

Gostaria de saber se existe algum comando desse tipo que me permita abrir esse arquivo diretamente?

Eu estou esperando por algo assim.

locate updatedb | head -1 | vim
    
por Krishna 16.06.2014 / 13:56

3 respostas

19

Você está quase pronto:

$ locate updatedb | head -1 | xargs vim

às vezes (sob certos terminais) você precisa redefinir o terminal após a edição.

$ reset
    
por 16.06.2014 / 14:02
14

Como um editor interativo, o Vim precisa tanto de stdin quanto de stdout, então usá-lo dentro de um pipe é problemático e faz o Vim alertar sobre isso. Para apenas um único arquivo, a substituição do processo resolve isso facilmente:

vim "$(locate updatedb | head -1)"

Você também pode usar backticks, e isso funciona dentro do próprio Vim:

:edit 'locate updatedb | head -1'
    
por 16.06.2014 / 14:08
0

Eu sei que esta é uma solução ruim, mas eu usei isso para criar alias em .bashrc:

locate updatedb  > /tmp/vimForTempDontTouch && vim /tmp/vimForTempDontTouch

Desvantagens:    feio

Vantagem:   Sem efeitos colaterais com terminal

    
por 10.04.2016 / 08:15