Расширенное редактирование командной строки для Windows?

5

Я разработчик, который "родился и вырос" в системах Linux и BSD, и я привык иметь передовые инструменты для консоли (например, оболочки типа posix, такие как bash). В моей карьере произошел поворот: это означает, что я большую часть времени работаю в среде Windows, а возможности консоли по сравнению с ней очень плохие. Традиционная консольная среда Windows - полная шутка, и даже большинство сторонних попыток улучшить ситуацию не намного лучше. PowerShell - это огромный шаг в правильном направлении, но сами консольные приложения все еще отстают от того места, где Unix существует уже 20 лет.

Кто-нибудь знает консольное приложение PowerShell, которое поддерживает расширенное редактирование командной строки, как это делают оболочки posix? Меня особенно интересует редактирование в режиме emacs, и я также хотел бы иметь возможность изменить размер моего окна до произвольного размера, в отличие от собственного консольного приложения, которое поставляется с Windows.

Ben Collins
источник

Ответы:

9

Не совсем то, что вы просите, но рассмотрели ли вы Cygwin ? Вы будете чувствовать себя как дома.

Вы также можете запускать PowerShell как оболочку в emacs ,

John T
источник
2
+1 Я бы также порекомендовал Cygwin для этого человека, так как Unix - это то, с чем они уже знакомы. Кроме того, Бен, вы можете настроить свойства оболочки cmd так, чтобы они были (почти) любого размера, который вы хотите, но я согласен, что это не что-то вроде изменения размера терминала в * nix.
DaveParillo
Cygwin, безусловно, путь. Вы даже можете запускать приложения X, используя его.
JohnnyLambada
другой вариант, если они хотят туда пойти, это подсистема для приложений Unix и инструменты Interix. Это дает такие вещи, как Bash, Csh, Zsh и другие * nix инструменты, не нуждаясь в слое эмуляции Cygwin
Jim Deville
Cygwin на самом деле не то, что я ищу, потому что он не является родным для Windows, и поэтому всегда будет искалечен таким образом, чтобы он никогда не был в Windows, чем оболочка в * nix. PowerShell действительно подходит для Windows, но проблема в том, что хостинговые приложения отстой (я имею в виду на самом деле: разве Xerox не решил проблему изменения размера окна, как 30 лет назад?).
Ben Collins
3

Это не emacs, но у vim есть консольная версия.

Не использовал его на окнах, поэтому не могу комментировать его удобство использования.

Vim (консольная версия)

Кроме того, они делают CMD немного более приятным.

Console2
PowerCmd

Rook
источник
1
Как консольная версия vim решает любые проблемы в вопросе?
Andrew Medico
@AndrewMedico - Какие проблемы? Консольная версия vim работает в cmd на windows, поэтому имеет те же ограничения.
Rook
1
Вопрос не касается текстового редактора без графического интерфейса. Он спрашивает, как получить расширенные функциональные возможности для текста в настоящее время в командной строке оболочки (например, bash опоры Ctrl-W удалить все слово слева от курсора. cmd.exe не имеет ничего подобного по умолчанию). Существование консольной версии vim для Windows никоим образом не помогает в этом.
Andrew Medico
1

После всего этого времени я наконец нашел решение, которое мне нравится: ConEmu + Clink. И не только ConEmu, но и Конфигурация Итана Брауна :

enter image description here

Это можно установить через Chocolatey. Я настоятельно рекомендую эту конфигурацию; ConEmu великолепен, но настроить его на что-то, что выглядит красиво, - непростая задача. Вот как вы устанавливаете

PS> choco install EthanBrown.ConEmuConfig

Также обратите внимание, что я использую звенеть также, которая предоставляет GNU readline-подобную возможность редактирования строк, которая мне очень нравится. Клинк доступен так:

PS> choco install Clink

Установщик Clink отредактирует ваш $profile для вас, чтобы внедрить его в работающий процесс хоста.

Ben Collins
источник
0

Есть PowerGUI ,

У меня сложилось впечатление, что альтернативы встроенному PowerShell ISE не так много.

С VBScript люди писали мне каждую неделю с новым редактором, но с PowerShell - никаких предложений.

Guy Thomas
источник
0

Вы можете динамически изменять размер окна, манипулируя свойством $ host.ui.rawui.WindowSize.

Используйте такую ​​функцию в своем профиле

Function Set-WindowSize { 
Param([int]$x=$host.ui.rawui.windowsize.width, [int]$y=$host.ui.rawui.windowsize.heigth)

$size=New-Object System.Management.Automation.Host.Size($x,$y)
$host.ui.rawui.WindowSize=$size
}

Затем вызовите функцию:

Set-WindowSize 100 50

С консоли можно многое сделать, например, создавать функции на лету:

PS C:\> Function Try-Me {
>> write-host "Hello $env:username"
>> get-date
>> }
>>
PS C:\> try-me
Hello Jeff

Monday, November 09, 2009 1:08:13 PM

Командлеты PowerShell также могут делать намного больше. То, что раньше использовало 20-строчный сценарий, теперь можно выполнить с помощью однострочного выражения PowerShell. Наконец, поскольку PowerShell - это объектно-ориентированная оболочка, вы получите гораздо больше от IDE-скриптинга, такого как PrimalScript, чем от простого редактирования текста в консоли.

Jeffery Hicks
источник
Да, все это очень интересно, но под «расширенным редактированием» я подразумеваю возможность редактировать мою командную строку на месте из домашней строки, включая копирование / вставку, обратные ссылки на историю и т. Д., Что поддерживается большинством терминалов в POSIX системы.
Ben Collins
0

Лучшее, что вы можете получить, это установить ConEmu и кликнуть или пойти по маршруту Cygwin.

КСТАТИ. Мне нравится, как вы называете cmd.exe шуткой, и он более 20 лет отстает от Linux - я чувствую то же самое и на самом деле думаю о переходе на Linux, чтобы получить отличный опыт работы с консолью и сценариями, плюс все мои любимые IDE и инструменты уже есть (WebStorm, PyCharm, Vim, python, nodejs, Firefox и т. Д.) Единственные вещи, которые я буду скучать, это Total Commander и AutoHotKey.

Piotr Owsiak
источник