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


5

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

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

Ответы:


9

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

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


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


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 для вас, чтобы внедрить его в работающий процесс хоста.


0

Есть PowerGUI ,

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

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


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, чем от простого редактирования текста в консоли.


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

0

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.