Sto hackerando un framework di test per vimscript (un esercizio di futilità, lo so; umorizzami). Alcuni plugin vim effettuano chiamate alla shell (con la system()
funzione o il !
comando). Voglio che il collaudatore sia in grado di prendere quelle chiamate e restituire dati precotti.
Per quanto ne so, vim's system()
fa un fork ed esegue il comando in una subshell. In teoria, dovrebbe essere possibile fare qualcosa del genere
alias ls="echo one\ntwo\nthree"
in modo che possiamo fare un test sulla falsariga di:
:.!ls
e controlla che l'output sia
one
two
three
In pratica, sembra che vim stia creando una subshell che non rispetta alcun alias temporaneo. In altre parole, crea un nuovo ambiente di shell pulito usando la shell dell'utente (zsh, bash, qualunque cosa) ma non le impostazioni della shell dell'utente (globale o locale).
Conosci un modo per eseguire VIM in un ambiente in modo tale che determinate chiamate di sistema siano controllate dall'utente?