J'utilise gvim sous Windows.
Dans mon _vimrc j'ai ajouté :
set shell=powershell.exe
set shellcmdflag=-c
set shellpipe=>
set shellredir=>
function! Test()
echo system("dir -name")
endfunction
command! -nargs=0 Test :call Test()
Si j'exécute cette fonction (:Test), je vois des caractères absurdes (caractères ASCII autres que des chiffres ou des lettres).
Si j'utilise cmd comme interpréteur de commandes, cela fonctionne (sans le -name), donc le problème semble être d'obtenir la sortie de powershell dans vim.
Il est intéressant de noter que cela fonctionne très bien :
:!dir -name
Tout comme ceci :
:r !dir -name
UPDATE : confirmant le comportement mentionné par David
Si vous exécutez les commandes set mentionnées ci-dessus dans le fichier _vimrc, :Test produit des résultats absurdes. En revanche, si vous les exécutez directement dans vim et non dans _vimrc, :Test fonctionne comme prévu.
J'ai également essayé d'utiliser iconv au cas où il s'agirait d'un problème d'encodage :
:echo iconv( system("dir -name"), "unicode", &enc )
Mais cela n'a pas fait de différence. Il se peut que j'utilise les mauvais types d'encodage.
Quelqu'un sait comment faire pour que cela fonctionne ?
1 votes
J'ai juste pensé que ce serait tellement cool. Imaginez la puissance/flexibilité !
1 votes
Serait-ce un problème d'encodage ? Powershell utilise Unicode s'il pense que la cible est un fichier. Essayez -encoding ASCII comme commutateur pour Powershell.
0 votes
Une idée de comment je peux faire passer ce commutateur dans Vim ?
0 votes
-L'encodage ne semble pas être une option valide pour powershell.
0 votes
Désolé Kevin, le commutateur d'encodage est utilisé en conjonction avec out-file qui, je suppose, n'est pas applicable ici. J'aimerais vous aider, mais malheureusement, ce que vous essayez de faire fonctionne pour moi ;)
0 votes
Je vais peut-être devoir installer powershell pour essayer de résoudre ce problème.