Como abrir um arquivo no vim usando pipe


14

Eu uso o locatecomando com muita frequência.

Então, se eu executar o seguinte comando.

locate updatedb | head -1

Então me dá o O/p

/usr/updatedb.conf

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

Estou esperando por algo assim.

locate updatedb | head -1 | vim

Respostas:


21

Você está quase pronto:

$ locate updatedb | head -1 | xargs vim

Às vezes (em certos terminais), você precisa redefinir o terminal após a edição.

$ reset

2
Muito provavelmente a sua versão do locatehave -l/ --limit/ -noption para que você não precise head -1:locate -n 1 updatedb | xargs vim
Dmitry Alexandrov

1
Por que essa corrupção terminal acontece? Existe alguma maneira de evitá-lo?
Jacobo de Vera

16

Como editor interativo, o Vim precisa de stdin e stdout; portanto, usá-lo em um pipe é problemático e faz com que o Vim avise 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 até funciona dentro do próprio Vim:

:edit `locate updatedb | head -1`

Isso também funciona em strings com espaços, o que é bom para nomes de arquivos como "versão 2 - final.csv".
Alex Moore-Niemi

0

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

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

Desvantagens: feio

Vantagem: sem efeitos colaterais com terminal

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.