Como usar um canal para editar um arquivo com o vi


15

Digamos que eu tenho um arquivo chamado file.txt. Nele está o nome de um arquivo que eu quero editar com o vi. Eu quero fazer algo assim para que eu possa editar o arquivo:

cat file.txt | vi

No entanto, isso não funciona. Como pode ser feito?

Para esclarecer as coisas:

Aqui está o conteúdo do arquivo.txt:

textfile

Então, de alguma forma, quero enviar o conteúdo de file.txt para o vi, para que o mesmo aconteça ao digitar vi textfile.

O conteúdo do arquivo.txt pode mudar. Eu quero que o vi edite qualquer arquivo listado em file.txt.


Eu não acho que vi = vim. Não sei se isso faz diferença para essa pergunta, mas sua tag é enganosa.
soandos 31/05

Eu acho que pode haver mais na sua pergunta que você está tentando fazer. Abrir um arquivo nomeado arbitrariamente é o uso básico do vi. isto é: vi file.txt. Há algo mais avançado que você está tentando fazer?
Camster342

O vi inicia o vim no OSX e em outros sistemas Linux modernos.
Tony_sid 31/05

Na verdade, estou tentando editar um arquivo cujo nome está armazenado na área de transferência do OSX. Digitar pbpaste exibirá o nome do arquivo. Estou tentando editar esse arquivo sem precisar digitá-lo, mas usando o que estiver armazenado na área de transferência. O Linux não possui pbpaste, mas é essencialmente o mesmo que obter a saída do nome do arquivo cat.
Tony_sid 31/05

instale xclipe use xclip -opara acessar a área de transferência no shell no x11. apenas no caso de você precisar substituir pbpaste...
akira

Respostas:


9

você pode tentar o seguinte:

% vi `cat file.txt`

ou, para evitar o uso usual de gato:

% vi `< file.txt`

você está dizendo ao vi (m) apenas um monte de coisas arbitrárias. se você deseja que o vi (m) faça algo como 'ei, abra esse arquivo', você deve alimentar os mesmos comandos que você usaria no vi (m), por exemplo. algo parecido :e foo.txt. mas isso é apenas mais complicado do que fazer o que eu propus.


Aqueles não funcionaram.
Tony_sid 31/05

4
esses são backticks, você os digitou corretamente? eles abrem uma subcama, executam o 'gato' ... se isso não funcionar, tente # vi $(cat file.txt)
2752 Akira

Oh ok, funciona agora. valeu.
tony_sid 31/05

23

Pelo menos para o vim (não tenho certeza sobre o vi), você pode fazer

cat file.txt | vim -

O '-' diz ao vim para ler a partir de stdin.


11
Desculpe, mas esta não é a resposta correta. Isso abre o vim com o conteúdo 'textfile'. O questionador deseja que o vim abra o próprio 'arquivo de texto'. Eu teria voto negativo, mas infelizmente não tenho reputação suficiente aqui.
Scubbo 29/01

scubbo está certo! Minha resposta é mais útil apenas para canalizar algo do stdin.
Jeff
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.