(Seguindo a explicação de grawity, isso xargsaponta stdinpara /dev/null.)
A solução para esse problema é adicionar o -oparâmetro a xargs. De man xargs:
-o
Reabra stdin como /dev/ttyno processo filho antes de executar o comando. Isso é útil se você deseja xargsexecutar um aplicativo interativo.
Portanto, a seguinte linha de código deve funcionar para você:
encontrar . -name "* .txt" | xargs -o vim
O GNU xargs suporta essa extensão desde algum lançamento em 2017 (com o nome da opção longa --open-tty).
Para versões mais antigas ou outras do xargs, você pode explicitamente passar /dev/ttypara resolver o problema:
find . -name "*.txt" | xargs bash -c '</dev/tty vim "$@"' ignoreme
( ignoremeExiste para receber $ 0, para que $ @ sejam todos argumentos de xargs.)
findouxargsem tudo. Abra o vim sem argumentos e execute:args **/*.txt<CR>para definir os argumentos do vim de dentro do editor.