¿Puedo hacer que powershell copie correctamente el texto multilínea como hace Bash en Ubuntu?


0

Uso un Ubuntu VM en casa para el desarrollo de Rails y Bash me ha echado a perder un poco. Cuando copio texto multilínea de Bash, parece que es bastante bueno saber que el texto es de una sola línea o multilínea cuando lo copio.

En Powershell (alojado en Console2) en Win7, no obtengo este comportamiento. Observe cómo HRESULT se corta en dos en este mensaje de error (desplácese hacia la derecha):

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1558,9): warning MSB3284: Cannot get the file
path for type library "fdca4b6c-605a-4b76-adce-68010c4a2581" version 4.0. Library not registered. (Exception from HRESU
LT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)) [C:\Dev\Foo.csproj]

¿Hay una manera de hacer que Powershell descubra que no debería cortar las palabras por la mitad? ¿Este comportamiento solo está disponible en Bash y debería usar Bash en Windows (quizás CygWin)?


¿Cómo funciona dentro del ISE?
uSlackr

Respuestas:


2

Sé que esto no aborda el problema de copiar directamente el texto que ya se ha impreso en la consola, pero una opción es canalizar la salida a Out-String -Width <columns> para evitar que se formen largas filas. Luego canalice la salida a clip.exe para copiarlo al portapapeles.

Si, por ejemplo, escribo un comando no válido y recibo un mensaje de error que quiero copiar:

PS> Blah
The term 'Blah' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is
correct and try again.
At line:1 char:1
+ Blah
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (Blah:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Puedo obtener el último mensaje de error con $Error[0],

$Error[0]| Out-String -Width 10000| clip.exe

y esto es lo que obtengo cuando pego en el bloc de notas (tenga en cuenta que la primera línea no está ajustada).

The term 'Blah' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Blah
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (Blah:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Ciertamente, más trabajo del que quería hacer, pero una respuesta sólida, gracias.
jcollum

0

El comportamiento de copia de Powershell se basa en bloques, en lugar de en líneas, y desafortunadamente no puede vincular las líneas ajustadas de nuevo. Sin embargo, aunque a mí me gusta bash (y fish) para las secuencias de comandos, la integración profunda de Powershell con los Servicios y Servidores de Windows hace que sea un shell más apropiado para usar a pesar de su interfaz menos capaz. Quizás alguien más esté al tanto de un reemplazo de Powershell que retiene la integración con los objetos de Windows pero también tiene una mejor interfaz; Yo no soy.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.