Estoy usando gvim en Windows.Vim con Powershell
En mi _vimrc He añadido:
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 se realiza esta función (Ensayo) Veo caracteres sin sentido (caracteres que no sean números/letras ASCII).
Si uso cmd como shell, funciona (sin el -name), por lo que el problema parece estar en obtener la salida de powershell en vim.
Curiosamente, esto funciona muy bien:
:!dir -name
Como se hace esto:
:r !dir -name
ACTUALIZACIÓN: comportamiento confirmando mencionado por David
Si ejecuta los comandos set mencionados anteriormente en el _vimrc,: la prueba produce tonterías. Sin embargo, si los ejecuta directamente en vim en lugar de en _vimrc,: la prueba funciona como se espera.
Además, he intentado utilizar iconv en caso de que se trataba de un problema de codificación:
:echo iconv(system("dir -name"), "unicode", &enc)
Pero esto no hace ninguna diferencia. Sin embargo, podría estar usando los tipos de codificación equivocados.
¿Alguien sabe cómo hacer esto?
Solo pensé que sería genial. ¡Imagina la potencia/flexibilidad! –
¿Podría ser un problema de codificación? Powershell usa Unicode si cree que el objetivo es un archivo. Intenta codificar ASCII como un cambio a powershell. – nickd
¿Alguna idea de cómo puedo haber pasado ese interruptor a través de Vim? –