Este é o conteúdo de cmd.txt
:
:w 2.txt
:q
Na linha de comando, eu faço
D:\>vim 1.txt<cmd.txt
Espero cmd.txt como fluxo de entrada (em vez do meu teclado) e o vim salvará 1.txt como 2.txt e depois sairá.
No entanto, não funciona. Vim diz que a entrada não vem de um terminal e congela.
Quero enviar comandos de arquivo externo. Como fazer isso?
Atualizar:
O que eu quero fazer é substituir muitos padrões. Tenho um arquivo que fala sobre a história da NBA, onde o nome de um time se refere à cidade e quero mudar para o "sobrenome".
De alguma forma, gerei os comandos de substituição (30 regras/linhas):
:%s/\v<Boston>/Celtics/g
:%s/\v<Brooklyn>/Nets/g
:%s/\v<New York>/Knicks/g
:%s/\v<Philadelphia>/76ers/g
:%s/\v<Toronto>/Raptors/g
:%s/\v<Golden St>/Warriors/g
:%s/\v<LA Clippers>/Clippers/g
:%s/\v<LA Lakers>/Lakers/g
:%s/\v<Phoenix>/Suns/g
:%s/\v<Sacramento>/Kings/g
:%s/\v<Chicago>/Bulls/g
:%s/\v<Cleveland>/Cavaliers/g
:%s/\v<Detroit>/Pistons/g
:%s/\v<Indiana>/Pacers/g
:%s/\v<Milwaukee>/Bucks/g
.....
Quero inserir o arquivo no vim para executar esses comandos. Não quero digitar esses comandos manualmente.
Posso gerar as regras de outra forma e inseri-las em outro programa, ou até mesmo escrever um programa simples para fazer a substituição. Mas agradecerei se isso puder ser feito no Vim, Powershell ou Total Commanders que estou aprendendo recentemente.
Responder1
Você pode fazer isso com a -s
opção de linha de comando:
vim -s cmd.txt 1.txt
No entanto, o comentário de Teun Vink ainda é válido. O que realmente você está tentando fazer? Isso parece o clássicoProblema X->Y.
Responder2
Eu sei que este post é antigo, mas o que @Gqqnbig está pedindo é possível.
Basta salvar a lista de comandos que deseja executar com frequência em um arquivo. O ideal é dar uma extensão .vim, por exemplo, nbaEdits.vim
No arquivo de dados que você deseja executar os comandos, simplesmente emita este comando na linha de comando do VIM (eu só tentei isso via Windows):
:source c:\myVimCommands\nbaEdits.vim
**O texto acima pressupõe que seu arquivo de comando esteja localizado em uma pasta em c:\myVimCommands