Я использую виртуальную машину Ubuntu дома для разработки Rails, и меня немного избаловал Bash. Когда я копирую многострочный текст из Bash, кажется, что очень хорошо знать, что текст является однострочным или многострочным, когда я его копирую.

В Powershell (размещенном в Console2) на Win7 я не получаю такого поведения. Обратите внимание, как HRESULT разделен на две части в этом сообщении об ошибке (прокрутите вправо):

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]

Есть ли способ заставить Powershell понять, что он не должен разрезать слова пополам? Это поведение доступно только в Bash, и я должен просто использовать Bash в Windows (возможно, CygWin)?

2 ответа2

2

Я знаю, что это не решает проблему прямого копирования текста, который уже был напечатан на консоль, но один из вариантов - перенаправить вывод в Out-String -Width <columns> чтобы предотвратить перенос длинных строк. Затем направьте вывод в clip.exe чтобы скопировать его в буфер обмена.

Например, если я ввожу неверную команду и получаю сообщение об ошибке, которое хочу скопировать:

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

Я могу получить последнее сообщение об ошибке с $Error[0] ,

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

и это то, что я получаю, когда вставляю в блокнот (обратите внимание, что первая строка не переносится).

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
0

Поведение копии Powershell основано на блоках, а не на строках, и, к сожалению, оно не способно связывать обернутые строки вместе. Однако, хотя мне нравится bash (и fish) для сценариев, глубокая интеграция Powershell со службами и серверами Windows делает эту оболочку более подходящей для использования, несмотря на ее менее функциональный интерфейс. Возможно, кто-то еще знает о замене Powershell, которая сохраняет интеграцию с объектами Windows, но также имеет лучший интерфейс; Не я.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .