Пользователь
0,0
рейтинг
4 января 2013 в 09:03

Разработка → Альтернативный терминал для Windows

Часто путают терминал и шелл. В тех же *nix есть шеллы (bash, csh, zsh, …) и терминалы (konsole/guake/yaquake/tilda и т.д. и т.п.) Для мира Windows общеизвестный терминал только один – стандартное консольное окошко, которое часто ошибочно называют «cmd.exe». И мало кто знает о существовании множества других эмуляторов терминала. Известных шеллов больше, их целых два: cmd.exe и powershell.exe. И хотя есть как минимум три порта bash (MinGW, CygWin, GIT) многие юниксоиды предпочитают ругать cmd.exe.

Меня не устраивал ни один из найденных альтернативных терминалов (как в 2009-м, когда я начал работу над ConEmu, так и сейчас). Казалось бы требований немного, вот основные:

  • работа с консольными приложениями, использующими консольное API: например Far просто не запустится в mintty или PowerShell ISE;
  • визуальные улучшения вроде табов (вкладок) и split-screen;
  • быстрая и удобная работа с пометкой/копированием/вставкой текста;
  • должен быть похож на терминал, а не на рождественскую игрушку с кучей графических свистелок и сопелок которые даже отключить нельзя;
  • не должен зависеть от сторонних библиотек типа .Net, Qt, VC/GCC redist и прочих устанавливаемых пакетов, занимать по возможности мало места и не требовать инсталляции на новую машину;
  • наконец, мне, как приверженцу Far Manager, хотелось интеграции с этим файловым менеджером — редакторы и вьюверы в табах, drag&drop файлов между Far и другими приложениями и т.п.

Отвечает ли этим требованиям ConEmu? Терминал (Free & OpenSource) пишется программистом «для себя» с учетом пожеланий других пользователей программы. В минимально-необходимой комплектации занимает около 2 мегабайт, что конечно больше нескольких килобайт, но все-таки пренебрежимо мало. Установки не требует, может быть портабельным если рядом с ConEmu.exe создать файлик ConEmu.xml. От сторонних библиотек не зависит.



Обзор возможностей


Рассказать «про все» в рамках одной статьи невозможно, поэтому здесь описаны только некоторые функции, на мой взгляд наиболее интересные большинству пользователей.

Наглядность. В табах могут отображается не только заголовки консолей, но и дополнительная информация вроде активного процесса, прогресса архивации, chkdsk, powershell, копирования в Far Manager. Например, не нужно переключаться в таб чтобы узнать закончилась ли компиляция проекта, запущенная в этом табе. В статусной строке можно настроить список отображаемых «колонок» вроде координат видимой области и курсора, PID активного процесса в консоли, статусов CAPS/NUM/SCRL, коэффициента прозрачности и др. Многие колонки кликабельны, например можно щелкнуть по «колонке» с прозрачностью для быстрого ее изменения.

Минималистичность. Интерфейс (самого терминала, а не окна настроек) содержит всего два дополнительных графических элемента — табы и статусная строка. Но и их можно отключить, если вы предпочитаете «чистую» консоль.

Портабельность. Настройки можно хранить в файле ConEmu.xml созданном в папке программы.

Работа с текстом. Поддерживаются два стиля пометки текста — обычный для текстовых редакторов и «прямоугольный» как в обычной консоли. Пометка и вставка текста удобна как с клавиатурой так и с мышкой.

Quake/Tilda. Поддержка режима игровых консолей. Терминал умеет «выезжать» при нажатии выбранной комбинации клавиш (по умолчанию Ctrl+~) и прятаться при потере фокуса или нажатии Esc.

Запуск любых приложений. Пользователь может настроить любое количество предопределенных задач (Task) для быстрого запуска в ConEmu или из списка переходов (jump list) панели задач Windows 7. Задача может запускать один или несколько процессов или шеллов (powershell, SDK, компиляция проектов и т.д.) Можно даже запускать простые GUI приложения вроде PuTTY, TaskManager, GVim.

Работа с цветом. Несколько предопределенных палитр (например Solarized, PowerShell, xterm, и др.), возможность настройки своих цветов консоли, поддержка управляющих кодов ANSI X3.64, 24-битный цвет при работе в Far Manager.

Интеграция. Умеет добавлять себя (и выбранные команды-шеллы) в контекстное меню Windows Explorer. Умеет перехватывать создание стандартного терминала Windows.

Гибкая настройка и управление. В диалоге Settings можно найти настройки на любой вкус и цвет. Практически любому действию можно назначить комбинацию клавиш, а простейший макро-язык позволяет выполнять нестандартные действия.

Немного истории


В начале был Zoin и его анонс Эмулятор консоли на форуме Far Manager. Не знаю, планировал ли автор развитие эмулятора, но в 2009-м году появилось несколько форков предлагающих разные улучшения: вертикальную прокрутку, табы для редакторов и вьюверов Far, отображение контекстного меню для файлов по правой кнопке и перетаскивание файлов между консольным Far и другими приложениями. Идея мне понравилась и, объединив все «патчи», я стал развивать эмулятор добавляя новые возможности и исправляя баги. На тот момент было несколько альтернатив (самые известные – Console2 из бесплатных и TakeCommand из платных), но ни одна у меня не прижилась. «Пользуюсь фаром 15 лет» поэтому в первую очередь нужна была оболочка для него.

Установка


ConEmu можно скачать с оф.сайта в двух вариантах: инсталлятор и 7z архив. Разницы между ними в общем-то никакой, просто инсталлятор умеет создавать ярлыки и позволяет отключить не нужные части продукта. Рекомендую пробовать последние Alpha-версии, т.к. с момента выхода последнего Stable прошло много времени, исправлено много багов, появилось много новых возможностей.

Для адептов bash на зеркале проекта есть специально подготовленные пакеты для MinGW. Их достаточно развернуть в папку MinGW чтобы в ConEmu сразу запускался «sh.exe –login –i».

Пользователям Far Manager: для полноценной работы в Far должны быть загружены плагины ConEmu. Убедитесь, что при использовании инсталлятора плагины устанавливаются в подпапку Plugins вашего каталога с Far.exe. Обратите внимание, что инсталлятор позволяет выбрать папку установки как для самого ConEmu так и для плагинов к Far.

Пользователям антивирусов: инсталлятор как и сам ConEmu троянов не содержит, как говорится, «исходники открыты».

При первом запуске программа спросит где вы предпочитаете хранить настройки — в файле ConEmu.xml или в реестре.

Теперь можно запускать ConEmu.exe или ConEmu64.exe (разница между 32-битной и 64-битной версией отсутствует).

По умолчанию ConEmu при старте запускает один таб с «предпочитаемым» шеллом:
  • Far.exe (если найден рядом с ConEmu.exe);
  • cmd.exe или tcc.exe (если установлен TakeCommand или TCC/LE);
  • sh.exe (если ConEmu установлен в режиме «MinGW»).


Первый запуск


При первом запуске отображается диалог «Fast configuration», он содержит несколько основных опций влияющих на работу программы.



Install keyboard hooks. ConEmu умеет отбирать у системы определенные комбинации клавиш (когда в фокусе окно программы). Например Win+цифра можно переключаться на таб с определенным номером. Практически все комбинации клавиш с ConEmu настраиваются или отключаются (Win+Alt+K), но если вам вообще не нужен перехват комбинаций с модификатором Win – можете отключить флажок.

Inject ConEmuHk.dll. Для многих возможностей ConEmu требуется перехват определенных функций WinAPI. Библиотека ConEmuHk.dll (или ее 64-битная версия ConEmuHk64.dll) внедряется в запускаемые во вкладках ConEmu процессы и перехватывает функции через разделы импорта. К сожалению, перехватываемых функций становится все больше и соответственно увеличивается время перехвата. И хотя в цифрах это лишь миллисекунды, некоторые пользователи жалуются на замедление выполнения команд в ConEmu. Если вы из них – отключите этот флажок. В планах попробовать перейти на перехват в стиле detours, возможно это ускорит процесс.

Enable automatic updates. Думаю, в переводе не нуждается. Обновление выполняется тем же способом, что и при установке. То есть если вы установили ConEmu распаковкой 7z–архива, то для обновления потребуется архиватор (7–zip или WinRar).

Настройка


В принципе, ConEmu работает сразу и настройки не требует, но у любого пользователя/админа/программиста есть свои предпочтения и специфика работы.

Полный диалог настроек открывается либо с клавиатуры комбинацией Win+Alt+P либо вызовом из системного меню ConEmu пункта «Settings».

Можно заблудиться в куче вкладок и настроек, но все настройки сгруппированы по смыслу, а для неочевидных опций отображаются всплывающие подсказки при наведении курсора мышки. Наверное не стоит рассказывать в этой статье про каждую опцию, поэтому пробежимся только по основным и наиболее интересным.

Выбор шелла


Итак, скорее всего вам нужно будет настроить свой список шеллов, как запускаемых при старте, так и быстро доступных.



Идем на вкладку «Startup». Если нужно запускать только один шелл — все просто: выбираем «Command line» и вводим требуемое, например:

C:\MinGW\msys\1.0\bin\sh.exe --login -i

В принципе, в качестве шелла можно запускать любое консольное приложение или командный файл для cmd, python, и т.п. Можно даже запускать некоторые GUI приложения вроде PuTTY, notepad, gvim и т.п.

Если при старте нужно запустить сразу несколько шеллов — идем на вкладку «Tasks» (задачи) и начинается магия. Диалог настроек и так перегружен, поэтому задачи создаются «в текстовом виде».

>C:\MinGW\msys\1.0\bin\sh.exe --login -i
cmd /k set ConEmuHooks=OFF & "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" -new_console:sV -new_console:t:SDK & set ConEmuHooks=
cmd -new_console:s1TH
*powershell -new_console:s2TH -new_console:t:PowerShell



Называем его «Shells», возвращаемся на вкладку «Startup» и выбираем «Specified named task».

В итоге при старте ConEmu получаем 4 консоли в сетке 2x2 причем активной будет вкладка sh.exe, а powershell.exe запускается в режиме админа (после подтверждения UAC) и его вкладка получает фиксированное название «PowerShell».

Параметр "-new_console" специальный параметр, обрабатывающийся в ConEmu и вырезающийся из командной строки при запуске программы. О нем можно писать много и долго, а пока отошлю на сайт проекта.

Запуск новых консолей


Если отображается панель кнопок (toolbar) то кнопка [+] открывает диалог запуска новой консоли. Здесь можно указать любую программу с параметрами, выбрать строку запуска из истории или выбрать заранее созданную задачу. Здесь можно создать «split», запустив новую консоль на одном экране с текущей. «Run as administrator» запускает новую консоль в режиме администратора. Флажок «New window» запустит новый процесс ConEmu.exe с выбранной командой.



На панели кнопок у кнопки [+] есть «стрелка» для открытия меню. Это же меню можно открыть комбинацией Win+N. Здесь отображаются команды из истории и заранее созданные задачи. Правый щелчок мышкой по пункту с задачей открывает меню второго уровня со списком команд этой задачи – так можно посмотреть ее содержимое или запустить только одну из команд задачи.



Можно создать ярлык и запускать новую консоль в уже запущенной копии ConEmu. Например, создайте на рабочем столе ярлык для запуска Far Manager (считаем что Far и ConEmu установлены в папку C:\Far)

"C:\Far\ConEmu.exe" /single /cmd "C:\Far\Far.exe"

Запуск из списка переходов (Jump List) панели задач Windows 7. Отсюда удобно запускать наиболее употребительные задачи, например запуск компиляции ваших проектов.

Быстрый запуск по комбинации клавиш. Если ярлыков (хоткей можно задать в свойствах ярлыка) и задач (Win+N и цифра номера задачи) не хватает – можно создать макрос запуска любой команды. Откройте вкладку «Keys & Macro» диалога настройки (Win+Alt+K), выберите один из «Macro NN» и введите в поле «GUI Macro» что-то вроде:

shell("",@"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe")

Поддерживаются два синтаксиса строк: C-string где используются \r\n\t\a\e\"\\, и Verbatim-string вроде @"app.exe ""C:\My Documents\File.txt""".



Из командной строки шелла, запущенного во вкладке ConEmu можно запустить новую вкладку с помощью специального параметра -new_console. Его опции позволяют запускать вкладки в режиме администратора, под другим пользователем, включать и отключать подтверждение закрытия после завершения команды, запускать вкладки «в фоне», разбить активную консоль вертикально или горизонтально (split-screen).

cmd /c dir /s c:\ -new_console:bc

или использовать cmd-файл, включенный в поставку ConEmu

csudo dism.exe /online /enable-feature /featurename:NetFX3 /All /Source:D:\sources\sxs /LimitAccess

В контекстном меню таба (правый клик на табе или Shift+правый клик в консоли) есть пункт «Duplicate root». Он создает копию шелла в новой вкладке. Например в текущей вкладке cmd вы запустили компиляцию проекта, при вызове «Duplicate root» будет создана новая вкладка с тем же текущим путем, что был до запуска компиляции, и с теми же переменными окружения.

Аналогично действуют комбинации клавиш Ctrl+Shift+O и Ctrl+Shift+E, но они создают копию шелла, разбивая активную консоль вертикально или горизонтально (split-screen).

Пометка, копирование и вставка текста


Настроек на вкладках «Mark & Paste» и «Controls» много. Расскажу об умолчаниях.

Поддерживается два типа пометки текста:
  • Text selection — стандарт для текстовых редакторов;
  • Block selection — прямоугольные блоки, как в обычной консоли.

Варианты для начала пометки в стиле «Text selection»: Shift+СтрелкаВлево, Shift+СтрелкаВправо или удерживая ЛевыйShift начните пометку мышкой (drag с зажатой левой кнопкой мышки).

Варианты для начала пометки в стиле «Block selection»: Shift+СтрелкаВверх, Shift+СтрелкаВниз или удерживая ЛевыйAlt начните пометку мышкой (drag с зажатой левой кнопкой мышки).

Примечание: при работе в Far Manager Shift+Стрелка обрабатываются в Far а не в ConEmu.

Копирование в буфер обмена помеченного блока с клавиатуры: Ctrl+C или Enter. Нажатие Esc отменяет пометку.

При пометке текста мышкой копирование выполняется сразу при отпускании левой кнопки мышки.

Вставка текста из буфера обмена


Ctrl+V вставляет только первую строку из буфера обмена. Почему только первую? Чаще всего в терминале запущен шелл и было бы обидно, если команда начнет выполняться до того как вы проведете ревизию того, что вставилось в консоль.

Shift+Ins и щелчок правой кнопки мышки вставляет все строки из буфера обмена.

Выбор и вставка путей к файлам и папкам


Комбинации Ctrl+Shift+D и Ctrl+Shift+F открывают стандартные Windows-диалоги выбора пути к папке или файлу и вставляют выбранный путь в консоль.

Бонус в командной строке


При щелчке левой кнопкой мышки в командной строке ConEmu пытается переместить курсор в позицию щелчка. А Ctrl+BackSpace удаляет слово слева от курсора.

Гиперссылки и ошибки компиляции


ConEmu умеет открывать гиперссылки в браузере по умолчанию (ShellExecute) а ссылки на ошибки компиляции в редакторе. Удерживая ЛевыйCtrl щелкните левой кнопкой мышки по гиперссылке www... или по файлу с ошибкой test.c(50): error: ....

Шрифт


Вкладка «Main». Шрифт можно выбрать любой: моноширный или пропорциональный, растровый или векторный, с включенным сглаживанием или отключенным (Clear Type, Standard, None). Пропорциональный шрифт в консоли смотрится несколько странно, но если хочется – то можно отключить флажок «Monospace».

Хочется отметить также то, что ConEmu умеет использовать не только шрифты установленный в системе. Просто скопируйте желаемые файлы шрифтов (поддерживаются fon, ttf, otf, и моноширные bdf) в папку ConEmu и перезапустите программу. Новые шрифты появятся в списке доступных на вкладке настройки шрифтов «Main». Не стоит копировать слишком много шрифтов – их обработка может занять значительное время при старте программы. Регистрацию «локальных» шрифтов можно отключить на вкладке «Features» флажком «Auto register fonts».

Для отображения псевдографики (рамки в Far Manager и т.п.) можно настроить отдельный шрифт. В некоторых шрифтах используемых в качестве основного рамки получаются несимпатичными.

Иногда нужно быстро поменять размер шрифта. Это можно сделать не открывая окно настроек — удерживая клавишу Ctrl крутите колесико мышки.

Quake/Tilda


Вызов ConEmu в стиле игровых консолей доступен «из коробки». Открываем вкладку «Main» и включаем флажок «Quake style slide down». При желании там же включаем «Auto–hide on focus lose». Если рамка вообще не нужна – в поле «Frame width» поставьте «0» вместо "-1" ("-1" — показывать рамку полностью). Здесь же можно настроить отступы поля консоли от краев окна ConEmu – включите «Center console in ConEmu workspace» и выберите количество пикселей в «Pad size».

Режим «поверх всех окон» можно включит на вкладке «Appearance» флажком «Always on top».

Показывать ли окно ConEmu на панели задач? Открываем вкладку «Task bar» и выбираем желаемые опции. По умолчанию в Quake режиме при минимизации (скрытии) окно скрывается в TSA (taskbar status area – область рядом с часиками), это опция «Auto minimize to TSA». А чтобы вообще не показывать иконку в панели задач – щелкните радиокнопку «Don't show ConEmu window on Taskbar» и включите «Always show TSA icon» чтобы не потерять ConEmu.

Клавиша активации. Их может быть две (так все запущено на некоторых раскладках клавиатуры). Открываем вкладку «Keys & Macro» и в самом начале списка видим «Minimize/Restore» и «Minimize/Restore (alternative)». Можно выбрать любую комбинацию клавиш (по умолчанию это Ctrl+~), но имейте в виду, что эта комбинация регистрируется как глобальный хоткей в системе со всеми вытекающими. Например, некоторые комбинации могут быть уже зарезервированы системой или другими приложениями.

Клавиша скрытия. Та же что и клавиша активации, но дополнительно окно ConEmu можно скрывать просто клавишей Esc. Откройте вкладку «Task bar» и в группе «Minimize ConEmu by Esc» выберите опцию «Always». Там же есть флажок «Map Shift+Esc to Esc» чтобы можно было все-таки послать в консоль клавишу «Esc» если это необходимо.

Размер (высоту) окна можно менять. Наведите мышку на рамку (или на то место, где она должна быть), подождите пару секунд, и у окна появится обычная resizable рамка которую можно тянуть мышкой.

Панель задач Windows 7


Поддержка списка переходов (Jump List). После создания вашего списка задач на вкладке «Tasks» включите флажок «Add ConEmu tasks to taskbar» и нажмите кнопку «Update Now».



Отображение прогресса на панели задач.



Фоновая картинка


Если вам не нравится унылое черное окошко – фон можно заменить на картинку или сплошной цвет. Замена фона выполняется для выбранных индексов цветов – поле «Replace color indexes». По умолчанию в поле стоит "*" – автовыбор, но если, например, нужно заменять фон для темно-зеленого цвета (палитру можно посмотреть на вкладке «Colors») введите "#2" вместо "*". Фоновая картинка указывается в поле «Path» (bmp, jpg, png файлы), но в этом же поле можно указать и сплошной цвет, например «48 10 36» чтобы получить цвет фона терминала в Ubuntu. Если картинка слишком яркая – ее можно притушить слайдером «Darkening».

Еще одна возможность для пользователей Far Manager – установка цвета фона из плагинов Far. На Хабре уже была статья "Визуализация разных дисков в файловом менеджере или Не совсем консольный FAR". Описываемый там плагин устарел и не работает в текущих версиях ConEmu, но аналогичный функционал реализован плагином «ConEmu Background». Чтобы включить раскраску панелей откройте в Far Manager список «Plugins configuration» (Alt+Shift+F9 в панелях), выберите плагин «ConEmu Background» и включите флажок «Enable plugin».

Автообновление


ConEmu умеет обновляться автоматически, если он был установлен инсталлятором или развернут из 7z–архива. Для обновления 7z–архивом требуется установленный архиватор 7zip или WinRar. На владке «Update» можно выбрать параметры обновления: проверять при запуске или ежечасно; показывать диалог с сообщением о новой версии или только нотификацию в TSA; обновляться на последнюю или только на стабильную версию; настройка proxy–сервера; путь для хранения скачанных версий и т.д.

Цветовые палитры


На вкладке «Colors» можно выбрать одну из предопределенных цветовых схем (Solarized, Standard VGA, PowerShell, xterm, и др.) или настроить свою схему цветов. Настроенную схему можно сохранить: введите имя в поле «Schemes» и нажмите кнопку «Save».

Стандартной палитры в 16 цветов не всегда хватает, но в ConEmu есть две возможности расширения цветового пространства.

Extend foreground colors


За счет потери одного индекса цвета фона в ConEmu можно настроить дополнительно 16 цветов для текста. Например, для приглашения командной строки можно указать ярко-красный цвет фона, выбрать в выпадающем списке его индекс (#12) и настроить палитру цветов с индексами 16..31. После этого текст будет отображен цветами палитры 16..31, а цвет фона (ярко-красный) заменен на окружающий (скорее всего это будет черный).
Подробнее можно почитать здесь.

TrueColor


Унылая 16-цветная консольная палитра надоела разработчику плагина Colorer для редактора Far Manager и появился Colorer TrueMod. В результате консольный редактор засиял новыми красками, а информация о цветах стала храниться в SharedMemory в дополнение к собственно консоли. Кроме цветов появилась возможность использовать Bold/Italic/Underline шрифты для участков текста.

В Far 3.0 поддержка TrueColor стала нативной и настройку расширенных атрибутов (24бита на цвет и Bold/Italic/Underline) можно выполнить для любого элемента интерфейса. Кто говорил, что в фаре недостаточно цветов для подсветки групп файлов?

Опция может быть отключена на вкладке «Colors» флажком «TrueMod (24bit color) support». Ее отключение экономит некоторое количество мегабайт памяти.

ANSI X3.64


В *nix терминалах можно использовать Escape-последовательности и даже в DOS они были доступны со стандартным драйвером ANSI.SYS. В терминале Windows про них решили забыть, правда есть несколько программ позволяющих использовать ANSI в Windows, например ANSICON.

В ConEmu поддержка ANSI X3.64 встроена. Для этого должны быть включены флажки «Inject ConEmuHk» и «ANSI X3.64» на вкладке «Features». Полный список поддерживаемых в ConEmu ANSI кодов.

С помощью ANSI можно не только выводить цветной текст. Например в заголовке таба можно отображать текущую директорию в cmd.

Прозрачность окна ConEmu


При желании на вкладке «Transparency» можно настроить прозрачность окна ConEmu. Можно выбрать различные значения прозрачности для активного и неактивного окна. Например ConEmu может полностью «исчезнуть» с экрана при потере фокуса если слайдер прозрачности для неактивного окна передвинуть в крайнее левое положение.

Если вы не отключили статусную строку, то в ней может отображаться текущее значение прозрачности в процентах (список отображаемых «колонок» статусной строки тоже настраивается). При щелчке мышкой по колонке с прозрачностью всплывает меню в котором можно быстро изменить коэффициент прозрачности или отключить его.

Табы


При работе с несколькими консолями одновременно или при работе с редакторами и просмотрщиками в Far Manager (в Far должен быть загружен плагин ConEmu) табы сильно облегчают жизнь. Кроме того, в заголовке таба показывается прогресс операции в процентах (копирование, распаковка архивов, chkdsk, прогресс в PowerShell, и др.)

В табе отображается значок «Щит» если эта консоль запущена в режиме администратора.

Отображаемый текст можно настроить по шаблону, например можно в табе показывать имя и PID активного процесса, порядковый номер консоли, заголовок окна консоли, имя редактируемого или просматриваемого в Far Manager файла, признак наличия изменений в редакторе.

Если cmd.exe запущен в режиме администратора – в заголовке окна консоли он отображает префикс «Администратор:». ConEmu умеет отбрасывать эту избыточную информацию.

Если табы не нужны – их можно полностью отключить или включить автопоказ при появлении более одного таба.

Переключение между табами также настраивается по желанию. Стандартные комбинации Ctrl+Tab и Ctrl+Shift+Tab. Режим «Recent mode» включенный по умолчанию позволяет перебирать табы в порядке их активации. При включенном «Lazy tab switch» фактическое переключение таба произойдет при отпускании клавиши Ctrl. А до отпускания клавиши Ctrl табы можно переключать и стрелками Влево/Вправо.

Табы можно активировать по номеру консоли, который можно показывать в заголовке таба. По умолчанию предлагается комбинация Win+цифра (должны быть включены флажки «Install keyboard hooks» и «Win+Number – activate console» на вкладке «Controls»). То есть Win+1 активирует первую консоль, Win+2 – вторую и т.д. Если консолей открыто более 9 то нужно нажимать последовательно две цифры удерживая клавишу Win, например «Win+2,4» активирует 24-ю консоль (и кому их столько понадобится?). Если открыты редакторы/вьюверы в Far Manager то Win+цифра будет последовательно перебирать их (флажок «Host-Key+Number iterates Far windows»).

Вместо клавиши «Win» можно выбрать любую другую комбинацию клавиш-модификаторов, например Ctrl+Shift или Apps. Перейдите на вкладку «Keys & Macro» и прокрутите список клавиш до пункта «Activate console by number». Вы можете выбрать любые три клавиши-модификатора.

Статусная строка


По желанию отключается и настраивается. Доступно большое количество колонок вроде имени и PID активного процесса, координаты видимой области и курсора, ИД текущей раскладки клавиатуры, статусы CAPS/NUM/SCROLL, номер активной консоли, коэффициент прозрачности и т.д. По многим колонкам можно щелкать мышкой для их изменения.

ConEmu Here


На вкладке «Integration» можно настроить контекстное меню для Windows Explorer и установить ConEmu как терминал по умолчанию для запуска консольных приложений.

«ConEmu Here» и «ConEmu Inside». Вы можете создать неограниченное количество пунктов меню для запуска разных шеллов (cmd, powershell, bash, SDK и т.п.) Введите команду в поле «Command» дайте пункту меню соответствующее название в поле «Menu item», опционально укажите путь к иконке отображаемой в меню (не работает в WinXP) и нажмите кнопку «Register». Список ранее зарегистрированных пунктов отображается в выпадающем списке «Menu item».

Отличие «ConEmu Inside» от «ConEmu Here» в том, что терминал будет запущен как часть окна Windows Explorer (Inside).

ConEmu может использоваться как плагин и в других программах. Для этого укажите дескриптор окна в котором должен разместиться ConEmu и команду, которую он должен выполнить. Например:

ConEmu.exe /insidewnd 0x13A40 /cmd powershell.exe

Default terminal


ConEmu может подменять собой стандартный терминал Windows, запуск с ярлыка «Windows SDK Command Prompt», запуск «ipconfig /all» из диалога Win+R, запуск консольных приложений из TotalCmd, отладка консольных программ в Visual Studio – все может быть перехвачено и запущено в ConEmu.

Как это работает: на вкладке «Integration» нужно указать список процессов, в которые будет загружена библиотека ConEmuHk.dll (например «explorer.exe|devenv.exe|totalcmd.exe») и включить флажок «Force ConEmu as default terminal» а также, при желании, «Register on OS startup». В указанных процессах будут перехвачены функции CreateProcessA, CreateProcessW, WinExec для запуска консольного приложения в ConEmu.

IDE style


Выше уже было сказано про запуск любых команд из списка переходов. Например, для сборки ConEmu я сделал cmd-файл настраивающий окружение SDK и запускающий nmake или devenv.com.



Ключ "/single" в поле «Task parameters» указывает использовать один экземпляр ConEmu (запуск в новом табе). Ключ "-new_console:c" в тексте команды является аналогом «pause» в cmd, чтобы консоль не закрылась после завершения компиляции.

В случае ошибок компиляции (вывод компилятора сохраняется в файл Error.log) вызывается скрипт TypeBuildErrors.cmd "%~dp0Errors.log" подсвечивающий строки с информацией об ошибках красным шрифтом, а предупреждения — синим. Исправив ошибки в редакторе Far Manager можно перезапустить компиляцию — Win+~ (хоткей по умолчанию для перезапуска таба).

App distinct


Здесь можно изменить некоторые опции в зависимости от процесса в консоли.
Например для PowerShell запущенном в режиме админа задать свою палитру.
Здесь же будет возможность задать свою фоновую картинку (просят давно, но пока не готово).

Keys & Macro


Здесь можно увидеть список всех комбинаций клавиш используемых в программе. Быстрый способ открыть эту вкладку – Win+Alt+K.
Также есть возможность задавать некоторое количество пользовательских действий через GuiMacro. Например назначить на Ctrl+D выход из текущего шелла: print("exit\n").

Far Manager


Интеграция с Far это тема для отдельной статьи. Важно, чтобы в Far был загружен плагин ConEmu (то есть в списке F11 из панелей был виден пункт «ConEmu»).



Краткий список возможностей.
  • Drag&Drop файлов из панелей в другие приложения;
  • щелчок правой кнопкой мышки помечает файлы, а длинный щелчок (удерживайте правую кнопку мышки >1 секунды) открывает графическое EMenu;
  • панели можно двигать мышкой
  • в плагине Unicode CharMap символы отображаются соответствующим шрифтом;
  • файлы в панелях можно отображать в режиме Tile и Thumbnail;
  • поддержка тачскринов, например прокрутка двумя пальцами, жест zoom, длинный тап по кейбару открывает меню (Alt/Shift/Ctrl/Fn).


Вкладка Debug


В основном вкладка для отлова багов. Но может быть интересна и пользователям.
Например, при выборе радиокнопки «Shell» ConEmu показывает запускаемые в консоли процессы и загружаемые dll-ки. Почти то же самое можно подсмотреть в ProcessMonitor, но здесь есть бонус — при компиляции проектов VC cl.exe и link.exe запускаются не с ключами а с параметром пакетным-файлом. ConEmu покажет содержимое этого файла.

Разное


Win+A или кнопка на тулбаре — заморозить консоль (поставить на паузу).

Щелчок правой кнопкой мышки по крестику в заголовке окна скрывает ConEmu в область уведомлений (Taskbar status area).

Полоса прокрутки по умолчанию скрыта и появляется при наведении мышки в правый край консоли. При работе в Far Manager колесо мышки обычно обрабатывается самим Far (прокрутка панелей, меню, и пр.), но при наведении курсора на полосу прокрутки — колесо прокручивает консоль.

Поиск текста — Apps+F или из меню «Edit» пункт «Find text». Искать умеем по всей консоли, но для этого консоль должна быть заморожена (Freeze console).


Можно показать «настоящую» консоль комбинацией Ctrl+Win+Alt+Space.

Заключение


Казалось бы от терминала нужно не много, но работа над ConEmu далека от завершения и в планах реализация многих возможностей. Например «бесконечный» буфер (сейчас ограничен 9999 строками «реальной» консоли), полноценная поддержка xterm 256 colors, горизонтальная прокрутка, сниппеты, оптимизация и т.д.
И, конечно, документация. Банально не хватает времени чтобы поддерживать актуальность wiki, некоторые страницы ожидают перевода, а многие возможности описаны только в WhatsNew.

Обновлено


Официальный сайт переехал по адресу http://conemu.github.io.
@Maximus5
карма
86,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (169)

  • +5
    Quake-режим — мегазачет, давно о таком мечтал, думал было даже грешным делом самому написать…
    • 0
      Справедливости ради, «Quake» вполне возможен и для терминалов не умеющих такое из коробки. Например здесь рассказывают как прикрутить Quake для Console2 с помощью AutoHotkey. А недавное про rCons статья была.
    • 0
      Ан нет, беру свои слова обратно, неправильный там Quake-style )

      Тут просто показывается исключительно декоративная анимация прорисовывания окна сверху вниз (даже не сдвиг окна, а именно постепенное увеличение отображаемой области, самую нижнюю строчку консоли видно только в конце анимации), в этом время содержимое окна не обновляется, печатаемые символы не отображаются до конца анимации…

      Пришлось оставить мгновенный показ окна, но по хоткею…
      • +2
        Поменял анимацию на «Slide».
        • 0
          Странно. Баг мб.
          Почему в Quake-режиме не меняется размер окна? Ни курсором, ни в main>size&pos. Приходится отключать квейк, менять размер и включать обратно.
          • 0
            Для баг-репорта информации недостаточно. Версия, скрин, настройки, что значит не меняется…
            • 0
              В личке. :)
        • 0
          У меня Quake-режим по-особенному работает для Putty.

          Для cmd.exe и FAR'a Quake-режим работает красиво:
          Картинка 1


          А вот для Putty окно просто отрисовывается сверху вниз, что не очень:
          Картинка 2


          Версия 140124 x86.
          • 0
            Консольные приложения ConEmu отрисовывает, а Путти — приложение графическое и с ним анимации красивой не получится.
    • 0
      В ReactOS программа жалуется на проблему со шрифтом Lucida Console
      • 0
        Наверное надо Issue со скриншотом создать, чтобы не забылось. Или там люциды вообще нет?
        • 0
          Возможно нету.
          Я создал у нас баг, там есть скриншот.
          jira.reactos.org/browse/CORE-6868

          А так программа кажется даже работает.
          • +2
            Не. Я про другое подумал. При работе в Windows ConEmu нужно чтобы в консоли был выставлен TrueType шрифт, иначе не будет юникода. А выставить TrueType можно только для тех шрифтов, которые зарегистрированы в HKLM (на что диалог и ругается).
            Для Wine эта ругань специально убиралась.
            Если в ReactOS это требование не актуально — ее тоже можно убрать, если расскажете как сдетектить ReactOS из приложения.
            • +1
              Вот что найдено на их форумах:

              ===
              Before calling GetVersionEx, you should set the Version variable to all nulls, then set Version.dwVersionInfoSize to SizeOf(Version) like you do now. Call GetVersionEx. On return, if you're running on ReactOS, Version.szCSDVersion will contain two strings. The first string is the Windows compatible service pack number, «Service Pack 6». At the end of that string is a null byte. Following that null byte is the ReactOS version string (something like «ReactOS 0.2.5-RC1 (Build 20041227)».
              When running on Windows, there will be only one string in Version.szCSDVersion.
              ===

              www.reactos.com/forum/viewtopic.php?p=1145
              • 0
                Может в 2004-м году это и работало — но сейчас нет. Сделал проверку ключа реестра
                [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
                «ProductName»=«ReactOS»
  • 0
    Windows 7, конфигурация с одним экраном, стартую cmd.exe под ConEmu, максимизирую окно ConEmu стандартной кнопкой в правом-верхнем углу, потом пытаюсь вернуть ею же в обычное состояние — размер не возвращается к прежнему. Окно остается максимизированным, просто отлипает от краев экрана. Непривычно и неудобно :( С остальными окнами на этой же системе все пучком.

    Спасибо за проект. Ранее не сталкивался, теперь же must have, однозначно!
    • 0
      Хм. После легкого переконфигурирования (вроде только опции из раздела Main -> Size & Pos щупал) появились проблемы с перерисовкой. Т.е. после изменения размеров окна ConEmu контент не перерисовывается. Даже сброс настроек не помог исправить проблему.


      Как и в предыдущем комментарии использовался ConEmu 130102 [64]
      • 0
        Судя по скрину — это не проблема с перерисовкой, а то, что осталось в консоли после уменьшения ширины буфера. ConEmu показывает то, что есть в «реальной консоли» (Ctrl+Win+Alt+Space).
        • 0
          Хм, так и есть, вы правы. А можно ли ресайзить консоль без потерь? Понимаю, что виндовая консоль не позволяет делать свой ресайз на уровне окна, лишь изменением ширины буфера. Просто стало интересно.
          • +1
            Теоретически — можно. Когда соберусь сделать виртуально-бесконечный буфер — сразу все получится, т.к. информация о выведенном тексте будет храниться уже не в консоли, а в моем внутреннем буфере, и потери строк уже не будет.
            • 0
              Собственно к этому и клонил, думал, что виртуальный буфер уже реализован (был смущен опцией BufferHeight [не вчитался в хинт], думал это и есть свитч между оригинальным и виртуальным). Теперь вижу, что только в RoadMap'е. Ну, что же, успехов вам! Проект очень интересный.
            • 0
              Отличная программа!

              Жалко только, что до реализации бесконечного буфера Ваши руки не дошли… :(
      • –2
        Я тоже недавно подумал о создании терминала.
        планировал сделать так

        Но есть одна проблема. Как выделять текст из двух компонентов ??

        Думается мне они эту консоль графически разрисовывают и он не основан на компонентах CEdit и CRichedit.
        Отсюда и всякие проблемы с кареткой.
        Писать с нуля консоль ?? Неее много костылей, тут потребуется по крайней мере месяца 3, чтобы показать консоль и не стеснятся
        • +1
          Как выделять текст из двух компонентов ??

          Не понял. Каких таких компонентов?

          «месяца 3» это я бы сказал не просто сильно заниженная оценка, а очень сильно заниженная.
    • +2
      А вот Restore — да. Поломал, исправлюсь.
  • +1
    Здравствуйте. Во-первых, большое спасибо за ConEmu. Перешел на него после Console 2 и был несказанно рад.
    Во-вторых, если у вас найдется свободное время, не могли бы вы посмотреть вот это issue
  • –4
    Прошел по ссылке с MinGW — ничего не понял. В архивах две папки с двумя бинарниками conemu и парой библиотек. Никаким sh.exe или установочником не пахнет.
  • –1
    Подскажите, какие действия нужно выполнить, чтобы подключиться к удаленной машине по ssh, используя ConEmu? Привык через xshell, но хотелось бы перейти на quake-подобный терминал.
    • 0
      Cygwin + SSH?
      • 0
        В том то и вопрос, как связать\запустить? Где почитать?
        • +1
          Что почитать? Вы не знаете как запустить ssh.exe? Или не знаете, как используя ssh.exe подключиться к удаленной машине?
          • 0
            Я не знал о существовании ssh.exe. А путти не запускается в терминале.
            • +2
              путти запускается в ConEmu, о чем написано в статье.
              • 0
                Прошу прощения, действительно невнимательно читал. Точнее, неверно понял, нужно было пробовать, а не болтать.
                Кстати, xterm от netsarang тоже запустился в conemu, это, наверное, будет самым удобным выходом для меня.
              • 0
                А вот при попытке запустить путти, не все так гладко прошло. Зависает терминал. Windows 7 x64, последняя Putty x32. Сначала говорит, что процесс id=такой-то — was attached to conemu, потом пишет путь до Putty, выводит диалогов окно, а после нажатия кнопки Open — ничего не происходит. Через 2 минуты путти вылетает.
                • 0
                  Подозреваю, что версия ConEmu не последняя, а «Stable».
                  • 0
                    Обновил до последней, то же самое.
                    • 0
                      Странно. Если в сборке 130104 то же самое — лучше новый Issue создать.
                      • 0
                        С крайним апдейтом устаканилось, спасибо. Собственно, программа предложила обновиться повторно уже после написания поста.
  • +5
    Человеческое Вам спасибо — пользовался с фаром долгое время. Под виндой 100% мастхев.
  • 0
    Пользуюсь уже пару лет наверное.

    Пока только один глюк заметил. Не знаю как сейчас, раньше можно было привязать ConEmu к консоли, т.е. как открываешь cmd, сразу автоматом и ConEmu стартует. Не было проблем, пока не попробовал юзать «Командную строку Visual Studio 2010». Ну которая bat-ник с прописыванием окружения. В общем открывается сразу 2 вкладки ConEmu и обе без возможности ввода. Думаю, видимо стоит отвязать cmd от ConEmu.

    Из недостатков, не очень нравится присоединение Putty, как-то ненативно получается. А просто консольный SSH вроде не особо удобен.

    Если говорить про красоты, то было бы клево, если бы можно было сделать прозрачность не всего окна, а только области терминала, как это в Linux делается. Ну чтоб заголовок окна обычный, а терминал просвечивает :). Я правда не уверен что такое вообще можно сделать в винде, API прозрачности вроде сразу на все окно работают. Хотя у Miranda IM что-то такое есть в clist_modern. Но это мелочи.
    • +1
      раньше можно было привязать ConEmu к консоли, т.е. как открываешь cmd, сразу автоматом и ConEmu стартует.

      Это и сейчас можно. «Register ConEmu autorun» на вкладке ComSpec. Повторилось, если ConEmu не был запущен.
      не очень нравится присоединение Putty, как-то ненативно получается.

      Хм, заголовок окна PuTTY? Так его отключать можно в настройках ConEmu.
      если бы можно было сделать прозрачность не всего окна, а только области терминала

      Есть в TODO. Это можно сделать для окон со стилем WS_EX_LAYERED.
      • 0
        Подскажете, где можно отключать заголовок окна Putty? Можно ли отключить заголовок у других приложений, например xshell?
        • +1
          Последняя версия ConEmu, Settings -> Appearance -> Hide caption of child GUI windows
          • 0
            А как при отключенном заголовке показать меню Putty (about putty, new session, restart session и тд)?
            • 0
              Ага. Заголовок изначально для меню и оставлялся.
              • 0
                А никак отключить заголовок, но оставить меню?
                • 0
                  Теоретически, меню должен AltSpace показывать. Но это не сработает, если программа обрабатывает это нажатие «по своему».
                  В планах прикрутить вызов меню к меню таба или еще как-то…
                  • 0
                    У меня как раз по Alt+Space в nano в Putty должен быть переход на слово назад, но вызывается такое же меню, которое появляется по правому клику по табу.
                    Правда у меня версия где-то недельной давности. Будет время — обновлю, проверю там.
                    • 0
                      Еще зависит от того, где сейчас фокус ввода: в последних версиях его можно автоматом в дочернее приложение ставить.
                      • 0
                        Дочернее некуда :) Редактируешь текст в nano в putty, жмешь alt+space, получаешь меню ConEmu
                        • 0
                          О. В крайней версии норм — меню не открывается по Alt+Space — приложение перехватывает.

                          Кстати, апдейтер ругнулся на ConEmuHk.dll — не захотел замещаться. Попробовал удалить руками — тоже не хочет, хотя все консольные приложения закрыты.
                          Проверил taskman — оказалось, что висит куча процессов putty и far, которых нигде кроме таск менеджера не видно
                          • 0
                            В штатном режиме должно все нормально закрываться. Интересно было бы взглянуть на минидампы «зависших» приложений если повторится.
                            • 0
                              Если смогу сгененировать, скину :)

                              Кстати, есть функция «Duplicate root», а просто «Duplicate» не ожидается? Не охота выбирать доп параметры или жать Enter, чтобы запустить еще один экземпляр Putty

                              И можно как-нибудь поменять дефолтную команду при создании новой консоли? У меня cmd.exe используется довольно редко, а вот Putty запускать приходится очень часто :)
                              • 0
                                Смысла не понял. Как вы смогли запустить путти не как root?
                                • 0
                                  Все. Вопрос снят — не понял сначала смысла «duplicate root». Возможно есть смысл убрать слово 'root' — для админа *nix все обретает другой смысл :)
                                  • 0
                                    Не согласен… Возможно, что вопрос в терминологии, но это не просто «Duplicate». Запустите например баш и в нем Vim. Что должен думать юзер, вызывая «Duplicate...»?
                                    • 0
                                      Все равно «root» не отображает смысла (и как видим, может внести некоторую путаницу). С учетом размера меню туда вполне поместится «Duplicate terminal» или «session», как в Putty. Хотя это мне тоже не нравится :)
                                      • 0
                                        «Duplicate terminal» по мне так должен «склонировать» состояние терминала полностью (читай — со всеми процессами).
                                        А вот «Копия корневого процесса» (что есть смысл) я по другому перевести не могу.
                                        • 0
                                          Duplicate parent

                                          Fork root (fork автоматически ассоциируется с процессом, а не со специальным пользователем)

                                          New similar terminal (многословно, но из всех вариантов — этот единственный, который я воспринимаю как надо; «Duplicate root» понятностью тоже не страдает)

                                          Ничего лучше что‐то не придумывается.
                                          • 0
                                            «Duplicate parent» и «Fork root» — имхо, хорошие варианты. Путаницы значительно меньше.
                                            «New similar terminal» — тут действительно кто-то может подумать, что должно все процессы появиться. Хотя на «duplicate session» в putty вроде как никто так не думает :)
                • 0
                  у меня, кстати (вин 7х64)Ю меню патти и при включенном заголовке не работает — панель заголовка есть, а меню по пкм нет…
                  и мне кажется, что кроме нескольких команд меню (например, рестарт сессион), оно там не особо надо, поскольку новая сессия, и все что с этим связано, будет открывать терминал патти, а не conemu — хотя, может быть, я и ошибаюсь…
                  я для себя сделал так: все свои ssh -сессии открыл одну за другой в новых вкладках conemu, они сохранились в истории и выходят в выпадающем списке, благо их у меня не много…
                  • 0
                    Меню putty замечательно вызывается по лкм на иконке в заголовке putty.
                    • 0
                      сорри, да, по иконке вызывается… тормознул…
                  • 0
                    Наиболее полезное для меня «restart session». Ну и кроме того — есть ведь такая вещь, как 'Change settings'

                    Кстати, я сам пару минут пытался вызвать меню по пкм по заголовку, как это всегда делается в путти. Кое-как нашел лкм на значке
  • +2
    Спасибо! Долгое время пользуюсь, все замечательно! Рад видеть на хабре ;).
  • 0
    Quake slidedown сделал мой день. Спасибо большое!
  • 0
    Расскажите пожалуйста, а почему в Windows вообще такая большая проблема с эмуляторами терминала? Насколько я знаю, все что есть (console2 и ваш) работают как обертка над cmd, это так? И если так, почему нужно привязываться к cmd, а не с нуля написанное? И еще мне странно что в Microsoft PowerShell сделали, а терминал забыли.

    Или вот например, почему нельзя взять за основу putty и заменить им виндовый эмулятор терминала?

    И да, спасибо большое за вашу работу, буду использовать :)
    • 0
      В самом начале статьи
      стандартное консольное окошко, которое часто ошибочно называют «cmd.exe»

      требуется работа с консольными приложениями, использующими консольное API или ncurses: например Far просто не запустится в mintty или PowerShell ISE;

      Так что эмуляторы работают как обертка над консолью. Реализация же настоящего терминала «с нуля» если и возможна (сомневаюсь, если честно), то с невменяемым количеством кода. Работа API заточена на специальные хэндлы, которые совсем не пайпы, хотя на первый взгляд ими кажутся. И даже если написать хуки всех консольных функций (которых наверное около сотни), то не факт, что реализация получится достойной.
      • 0
        Т.е. тот же Far использует кучу чисто виндовых консольных API, которые привязаны к этому самому «стандартное консольное окошко, которое часто ошибочно называют «cmd.exe»»?

        Потому что тот например любой софт использующий ncurses удовольствуется любым эмулятором терминала совместимым аж с VT-100.
        • 0
          Да, Far использует, хотя бы, WriteConsoleOutput.
          На счет ncurses — признаюсь, сам не не пробовал, возможно неправильно понял thread на gmane.org
    • 0
      В Microsoft сделали PowerShell ISE и решили что хватит. Наверное, типа, зачем юзеру или админу запускать в консоли что-то сложнее .ps1-скриптов или простейших утилиток, которые довольствуются printf…
      • +1
        Вот кстати их идея разнести stdin и stdout сама по себе офигенная. Я начал ею пользоваться в никсах, бывает удобно. Делается так:

        pastie.org/private/ow0pqn59bhkidjvzzx2t6a

        Весь ввод внизу, весь вывод вверху, цвета сохраняются, работают даже mc и vim (а фигли — tail эскейп последовательности в верхий буфер послушно посылает), только ругаются на терминал и вим курсор не рисует.
        • 0
          А, да — я эти извращения проделываю в screen, но подойдет что угодно, хоть tmux, хоть два окна терминала.
  • +1
    Maximus5, большое вам спасибо — как и многие, пользуюсь ConEmu уже несколько лет. Не подскажете, а можно ли сделать более удобную прокрутку консоли, без необходимости каждый раз тянуться мышкой к Alternative Mode?
    • +1
      О чем именно речь? В смысле, зачем включать Alternative Mode?
      Если речь о фаре — то есть Win+A (да и Win+Alt+K рекомендую прошерстить).
      Если не о фаре — то Ctrl+PgUp/PgDn и так работают.
      • 0
        Вот, например, я только что выполнил у себя pip install scipy --upgrade. Вывод получился на несколько страниц. В Far 2.0.1807 Win+A (я так понял, что это то же самое, что и кнопка Alternative Mode справа вверху) даёт просто поскроллить страницу, при этом отключая возможность ввода в консоль с клавиатуры. В Far 3.0.3000 та же самая последовательность действий выдаёт просто чёрный экран. Можно ли как-нибудь сделать нормальную прокрутку без переходов в какие-то другие режимы, или это связано с фундаментальными техническими ограничениями?
        • +1
          Про «Far.exe /w» знаете? В 3.0 плагин ConEmu установлен? Версия ConEmu последняя?
          • 0
            Нет, не знаю. Нет, не установлен, где его взять? Да, теперь последняя.
            Только всё равно по-прежнему Win+A выдаёт чёрный экран.
            • 0
              Начиная с какой-то сборки Far 2.0 появился ключик «far.exe /w», позволяющий фару работать с длинным буфером, то есть не убирать прокрутку. Это как вариант.

              Плагин ConEmu.dll для фара содержится в дистре ConEmu. О плагине есть предупреждение в разделе установки.
              • 0
                Непонятно тогда, почему /w не включён по умолчанию.
                Сейчас взял другой компьютер с Win x64, снёс там старую версию ConEmu, поставил новую, Far3, прописал в команде запуска ключ /w. Всё вроде как работает, в том числе и Win+A, и Win+Alt+K. Плагин, кстати, тоже установился — не знаю, почему на другом компьютере это не произошло. Единственное — полоса прокрутки появляется не когда курсор находится у края экрана, а чуть левее. Спасибо за советы :)

                Насколько я понял, после включения TrueMod в Colorer'е настройка «Color style» перестаёт на что-либо влиять. Может быть, стоит это как-то подчеркнуть в интерфейсе, скрыть её, например?

                P.S.: тема «Black (scarlet)» великолепна!
                • 0
                  «Color style» это про что? Если про 16-цветные схемы, то если приложение выводит не индексированный цвет, а RGB значение — понятно, что будет использовано последнее.
                  • 0
                    Вот этот Color style:

                    Честно говоря, мне было ни разу не понятно, что эта настройка перестаёт играть роль, когда включён True Color, пока я не выяснил это методом тыка, попереключав её несколько раз и не увидя никаких изменений. Может, хотя бы подсказку добавить, типа «this option has no effect when TrueMod is enabled»?
                    • +1
                      Я вижу два «Color style»: один для 4-битного режима, а другой для 24-битного. Как бы все логично.
                      В любом случае, предложение не по адресу — я не автор колорера. Есть тема на форуме фара и сайт колорера.
                      • 0
                        Пардон. Я, конечно же, имел в виду верхний. И извините, что не по адресу )
                • +1
                  /w это «новый режим» (которому уж года два как), имеющий некоторые проблемы с UserScreen-ом. Да и полосы прокрутки в консоли олдскульных пользователей раздражать могут… Совместимость короче.
                  • 0
                    Странно это. Почему бы не сделать, наоборот, флаг для отмены этого режима? Тогда пользователи, у которых нет времени на то, чтобы прочитывать документацию каждого используемого приложения в поисках новых фич, не будут узнавать об обновлениях двухлетней давности по чистой случайности :)
                    • +1
                      Вопрос не ко мне. Весьма спорные, с моей точки зрения, нововведения включаются по умолчанию, а другие востребованные — остаются отключенными. Это уже от разработчиков фара зависит.
      • 0
        Кстати, при нажатии Win+Alt+K не происходит вообще ничего.
        • 0
          В последней версии ConEmu? Сомневаюсь что-то… Наверное «Stable» установлен?
          • 0
            Да, stable. Сейчас скачаю версию 130102.
  • 0
    Огромное вам спасибо за такую круть!
  • +1
    полноценная поддержка xterm 256 colors
    Интересно, а xterm 24-bit color будет? Xterm позволяет указывать 24‐битный цвет в виде последовательностей \e[48;2;{R};{G};{B}m (фон, цвет текста — 48 вместо 38) (все цифры — десятичные, от нуля до 255).

    Я сейчас пилю vim для поддержки 24‐битного цвета и хотелось бы видеть эти цвета в качестве фактического стандарта. Известно, что, по крайней мере, konsole также поддерживает эти цвета.
    • +1
      Можно. В первый раз слышу про xterm 24-bit.
      • 0
        Описание есть здесь, искать «Character Attributes (SGR)», последний абзац. Кстати, у меня наверху опечатка: должно быть «38 вместо 48», конечно.

        Там написано, что это ISO-8613-3. И ещё там написано, что xterm не поддерживает 24‐битный цвет, вместо этого используя ближайший из 256‐цветной палитры (что интересно — человек, давший эту ссылку также пропустил сей факт). Эксперимент показал, что это утверждение верно, но konsole при той же последовательности выдаёт реальный 24‐битный цвет, а не приближение. Теперь мне надо искать какой‐то ещё терминал. Сейчас установлю ещё 13 терминалов и потом скажу, кто ещё поддерживает 24‐битный цвет.
        • +3
          Сборка 130104. Добавлен 24-битный цвет xterm. Пока что с теми же ограничениями что и 256-битный цвет, то есть буфер/прокрутку лучше просто отключить.
          • 0
            Прикольно. Кроме konsole полной (и вообще какой‐либо) поддержки 24‐битного цвета нет просто ни у кого из терминалов, имеющих хотя бы одну стабильную версию (rxvt-unicode, aterm, eterm, evilvte, mlterm, mrxvt, sakura, xvt, xfce4-terminal, valaterm, rxvt, roxterm, kterm, gnome-terminal).
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Может будете вести дерево исходником на GitHub вместо Google Code?
    • 0
      git а пока не осилил, да и смысла особого не вижу. Хотя на GitHub есть редирект в svn гуглокода.
      • 0
        • 0
          Не особо. Не дает ответа на вопрос «зачем», да и в Express оно скорее всего не вставится.
          • 0
            У меня стоит Ultimate поэтому не обращаю внимание :)
        • 0
          о, и мне :)
      • +4
        Лучше mercurial и bitbucket. На него легче перебираться с svn. Хотя главное здесь не то — на googlecode неудобно вести совместную разработку: bug tracker куда как хуже конкурентов, даже bug tracker’а github; нет pull request’ов (впрочем с svn они невозможны); нет многих возможностей вроде annotate, автоматического создания архивов с исходниками (если человеку неохота ставить subversion), показа изменений бок о бок, и т.д.
  • +2
    Большое спасибо за ConEmu! Помогает удивлять местных коллег и демонстрировать преимущества консоли :)

    Такой вопрос, а можно ли в Far под ConEmu выводить иконку файла в обычной файловой панели перед его именем? Т.е. что-то среднее между обычным режимом и Tiles View (вроде details view в Explorer).
    • +2
      Иконка перед именем файла — в планах.
  • +1
    Нашел как-то восторженную статью у Хансельмана, и с тех пор всегда под рукой. Большое спасибо!

    По поводу улучшений: скачал сейчас последний билд и долго и нудно пытался найти настройку под длительность slide анимации в quake style mode, пока не догадался заглянуть в сорцы. Оказалось захардкожено. Есть какие-нибудь варианты? Для меня текущие настройки — это дико медленно.
  • +1
    А скорость выезжания в quake style нигде не регулируется? Хотелось бы ускорить раза в два\три.
  • +1
    Добавлю настройку
    • 0
      Спасибо!

      Вообще, офигенная тулза. Из статьи, кстати, много нового узнал.
      • 0
        Настройка длительности анимации добавлена. Флажки переехали на вкладку Appearance.
  • +1
    Присоединяюсь ко всем.

    Давно искал подобную вещь
  • 0
    Все круто, но хочется просто минимализма в стиле minTTY, этого монстра можно обрезать до такого состояния. Плюс желательно с простенькими приятными на вид табами и нормальной хистори.
    • +1
      А зачем вам второй mintty?
      • 0
        Потому что первый не работает нормально с powershell'ом.
  • 0
    Хм промахнулся окошком…
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Ну и как сравниваете? Я-то могу задрать «FPS» до небес, только зачем?
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          И для кого документация пишется… Даже в этой статье упомянуто значение флажка Inject ConEmuHk. Отключите его — раз, не говорите про «скорость вывода» — два. При чем здесь «скорость вывода»?
  • 0
    Для мира Windows общеизвестный терминал только один – стандартное консольное окошко

    Я долгое время использовал Console (by Marko Božiković). Более-менее эстетичная штука с прозрачностью и XML-конфигами. Но в один прекрасный день столкнулся с тем, что забыл как там выделить и скопировать текст и перешёл обратно на стандартную консоль Windows.

    Известных шеллов больше, их целых два: cmd.exe и powershell.exe

    А как же 4DOS/4NT (ныне Take Command)?
    • 0
      Лично мне 4NT мне показался диким адом, плюс он еще и платный. У меня он оставил впечатление unix-way шиворот-навыворот. PowerShell тот же — вызвал намного меньше отторжения. А вообще, coreutils из msys + полный пакет gnuwin32 + perl под виндой неплохо живут и из-под стандартного cmd (99% задач, я бы сказал, а для остальных вызываю bash из msys).
      • +1
        Лично мне 4NT мне показался диким адом,

        Ну, это лучше чем ничего. Во времена DOS и NT4 выбор был не велик. Кстати bash для скриптинга тоже «не айс» по моему мнению. Вот сделали бы что-нибудь на подобие Groovy (полноценный, современный, сравнительно удобный сценарный язык с кучей доступных библиотек) поверх CLR (.Net) стандартным компонентом системы — цены бы им не было.
        плюс он еще и платный

        На сколько я понимаю, сейчас бесплатный TCC/LE — это и есть классический 4NT, а платна только версия с IDE и дебаггером.
      • 0
        полный пакет gnuwin32 + perl под виндой неплохо живут и из-под стандартного cmd

        Тоже пользуюсь gnuwin32, но удалить кавычки из файла командой tr -d \" < infile > outfile лично у меня в винде не получилось — что-то оно со сколько-нибудь сложным перенаправлением ввода-вывода не очень справляется, похоже… :-(
        • 0
          Да, баги есть, еще какие, но в целом — неплохо.
          Что я видел, например: под кэшированном доменным аккаунтом все, что использует обертки из msys-1.0.dll, запускается по минуте, а то и больше (ищет логон-сервер, вытягивает имя пользователя и т.д., извращенно мучая WinAPI при этом). В гневе патчил прямо в бинарном коде пару раз, но так и не зафайлил баг-репорт, спасибо, что напомнили :)
        • 0
          Перенаправлять оно нормально умеет, а с кавычками, если не помогают эскейпы (\ и ^), то только коды символов, если повезет.

          tr -d \042 < infile > outfile

          Еще у бинарной сборки ggw32 есть феерические приколы с флагами configure, с которыми их собирали, что в редких случаях тоже дает прикурить.
    • 0
      Console не прижился — неудобно в нем с Far-ом работать.

      Есть еще TCC/LE (бесплатная версия шелла из TakeCommand).

      Но все-таки, о них мало кто знает (это судя по пользователям Far).
  • 0
    Огромное спасибо за статью, пользуюсь уже много лет и тем не менее узнал много нового!

    … запускается в режиме админа (после подтверждения UAC)

    Вот если бы ещё была возможность запускать conemu с правами админа без надоедливого окошка UAC — было бы просто здорово (под Windows 7 это иногда бывает нужно).
    Сейчас я просто создаю ярлык для запуска conemu, пользуясь вот таким «хаком»:
    Run UAC restricted programs without the UAC prompt
    (И этот хак не очень хорошо работает при использовании desktops от Марка Руссиновича — окошко открывается всегда на первом десктопе).
    Если бы подобная функциональность была доступна «из коробки» — было бы очень удобно.
    • +1
      Не думаю, что такую функциональность нужно встраивать в ConEmu. UAC не для того был придуман, чтобы его обходить… Если уж юзер хочет звать хак — пусть делает это осознанно.
  • +3
    Это же какая гора времени и сил, затрачены на такую классную утилиту?! Более тяжелые пакеты типа сигвина за собой везде не потаскаешь, а эта — однозначно на флешку, благо она портабельна из коробки. Да и написана она специально под винду, есть приятные плюшки.

    Одним словом,- спасибо огромное!
  • 0
    Вопрос — существует ли single instance mode?
    Я пользуюсь тоталом и по хоткею вызываю консоль в активном каталоге, проблема в том что если консоль уже открыта я хочу чтобы создавался новый таб. Для console2 кое как сделал себе запускалку, которая чекает процесс и эмулирует хоткей создания новой вкладки (если он уже есть) и делает cd в каталог, который передается как параметр.
    Я поизучал настройки и не нашел подобной опции, может плохо смотрел? По умолчанию у меня всегда открывается новое окно с консолью.
    • 0
      Ключ "/Single" упоминается в статье.
    • 0
      А поделитесь пожалуйста рецептом, где в ТС эта волшебная настройка? А то я всегда через командную строчку cmd.exe вызываю.
  • 0
    Подскажите, как решить проблему с фокусировкой? ConEmu используя для запуска SSH-клиента xshell. При нажатии горячей клавиши выезжает quake-терминал, но фокус остается на ConEmu, а не на xshell.
    v. 130105x64, win7x64
    • 0
      Обновитесь, должно помочь.
      • 0
        Благодарю, словно нарыв исчез. Подтверждаю, в х108 во время открытия перефокусирует на врутреннее окно.
  • +2
    Хочу отдельно поблагодарить Вас, Maximus5, за очень ценный труд!
    Буквально около месяца назад понял, что нужна нормальная консоль и среди множества вариантов наткнулся на ConEmu.
    По-моему, это лучшее что есть под Windows среди терминалов. Спасибо большое.
  • 0
    Спасибо, действительно, тоже считаю, что это лучшее из того, что есть под винду из терминалов!
    Есть пару вопросов: как бы проще всего вычистить выпадающий список при открытии новых табов — пока настраивал, такая каша собралась, нужное — несколько сессий Putty, far да по одному каждого шелла — пока найду, упарюсь… можно конечно на дефолт все скинуть, но может можно проще как то почистить?
    И второе — то, чего мне всегда не хватает в виндах — история ввода команд не только в текущей сессии, но и вообще, ну как в линукс… задача возможно не для терминала а для шелла, но все же, может, есть тут какой хитрый ход один на все шеллы…
  • 0
    как бы проще всего вычистить выпадающий список при открытии новых табов

    Чего уж проще? тык или тык.

    не хватает в виндах — история ввода команд не только в текущей сессии, но и вообще, ну как в линукс…

    Это таки задача шелла. Я уже говорил, что в будущем возможно встрою в ConEmu свою историю, а пока…
    Для cmd.exe есть clink.
    • 0
      Чего уж проще? тык или тык.

      прошу прощения, не совсем видимо ясно выразил свою мысль — так конечно проще, но так вычищается все, а хотелось бы выборочно… просто при постоянных экспериментах и добавлениях периодически добавляется и мусор — таки если надо удалить пару строк, а 10-15 оставить… но в общем то конечно не критично…
      Для cmd.exe есть clink.

      за это спасибо
  • 0
    Выборочно — только ручками, через реестр или xml. Не хочется еще один интерфейс плодить.
  • 0
    Пожелание: при создании таба через диалог «new console dialog» установки «new console split» не срабатывают, если выбрать задачу с установленным позиционированием в коммандлайне.
    Просьба сделать настройки диалога более приоритетными, чем установки, сохранённые в {sometask}.
    • 0
      Диалог более приоритетен. Если в последней версии это не так — создайте Issue с конкретным примером.
  • 0
    Ещё пожелание:
    Сделать опцию «не закрывать программу когда закрыты все табы». Т.е. чтобы можно было в автозапуск положить эту консоль и пользовать постоянно одно окно, иначе quake-стиль не слишком хорош.

    Кстати, у меня наблюдается странность: на панели задач windows закрепил программу. Когда она сворачивается в трей — на панели остаётся кнопка, которая уже не показывает активные окна (в трее). И при нажатии — запускается новое окно с программой (а не новый таб, как при перехвате «Win+R:cmd.exe», например).
    • 0
      Вы какую версию-то пользуете? Есть подозрение, что это уже давно реализовано.
      • 0
        130113 x64
    • 0
      На счет странности — в чем странность? Что просили — то и получили.

      С какой радости exe-шник (ярлык что делает? правильно, запускает ConEmu.exe) должен решить, что ему нужно восстановить программу из трея, вместо запуска новой копии.
      Hint: но exe-шник об этом можно попросить специальным ключиком.
      • 0
        С той радости, что закрепление на панели задач не является простым ярлыком и ни одна программа после сворачивания в трей не запускает свою копию. Т.е. это нестандартное поведение ПО под windows 7/8.

        • 0
          1. Закрепление на панели задач является простым ярлыком. Покажите пруф в MSDN что это не так, или изобразите способ узнать как именно запущена программа.
          2. О чем может быть разговор, если ни одна из ваших программ «не умеет» запускаться в нескольких копиях?
          • 0
            1. Ок, я ошибся (проверил только что).
            2. Можем поговорить о поэзии, лишь бы не переходить в такой тон дискуссии.

            Есть ли в настройках запрет одновременного запуска нескольких копий основного окна без ключей в ярлыке?
            • 0
              В настройках нет, пока никто не просил. Только "/single".
              Хотя не, для quake-style как раз single сам включается.
              • 0
                Тогда я ещё попрошу вынести отдельно как опцию. И, кстати, когда программа в трее, хотелось бы иметь хоткей для возвращения её обратно. Он, скорее всего, уже имеется, но у меня не получилось его найти.
                • +1
                  Хоткей — «Minimize/Restore»
                  • 0
                    Спасибо! Поставил на минимизацию «Win+`» — теперь Quake-style действительно крут.
  • 0
    Пользуюсь Console, потому что в ней есть много вкладочность, к которой привык в Konsole под линухами.

    Вопрос. Настраивается ли у вас внешний вид курсора и скорость его мигания? Я очень трепетно отношусь к комфорту работы с консолью, а курсор — это вообще предмет отдельного исследования:

    Меняем форму курсора в Konsole

    • 0
      Вам нужна только многовкладочность? И все? Так никто не заставляет переходить на что-то другое…

      Курсор — блок/горизонтальный/вертикальный, высота настраивается, режим цвета или инверсии, частота мигания (отключаемого) настраивается в OS.
      Как по мне — так это баловство (прыгающие, взрывающиеся, падающие, распахивающиеся и прочие).
  • 0
    Возможно ли настроить «ConEmu here» в Explorer'е, чтобы создаваемая консоль открывалась не в новом окне, а в новой вкладке? Обычный запуск консольных программ обрабатывается нормально — вкладка создается.

    Перерыл все настройки, FAQ и google, ничего подобного не нашел. Самое близкое это ключ /single, но его видимо нельзя прикрутить в пункте integration.
    • +1
      Можно его прикрутить, введите в поле «Command»

      /single /cmd cmd.exe
      • 0
        Спасибо! Завтра попробую на работе. Кстати столкнулся с такой проблемой — после открытия консоли режим ввода в терминал по умолчанию становится overwrite, постоянно приходится нажимать insert после выполнения команд, для того чтобы перейти в режим вставки текста. Для меня это критично, потому что приходится писать длинные команды и исправлять уже исполненные, иногда нажимать insert просто забываю и затираю часть командной строки. Есть ли какое-нибудь решение? Опять просмотр настроек, гугл и faq не помогли…
        • 0
          Версия ConEmu, какой shell? ConEmu overwrite сам не ставит. (Разве что в последней 140122alpha в результате изменений некоторых, что будет пофиксено в следующей).
          Но я подозреваю, что вы на tcc жалуетесь, так и настройку в нем ищите, а не в ConEmu.
          Last chance — кто-то мог поменять настройку «ConInMode» в реестре или xml (в интерфейсе настройки нет).
          • 0
            Ok, понятно. У меня сейчас как раз последний билд :) Пока откачусь на более раннюю версию. Спасибо за информацию.
          • 0
            К сожалению, откат на старую версию не помог. В общем отправил тикет с описанием проблемы, может быть моя информация окажется полезной.

            P.S. С нетерпением жду нового релиза с исправлениями :)
            • 0
              P.P.S. Да все-таки проблема решается как вы написали выше с помощью ключа реестра HKEY_CURRENT_USER\Software\ConEmu\.Vanilla\ConInMode — поменял с 600000 на 0. Все заработало. Но все равно хотелось бы, чтобы это было по-умолчанию после свежей установки программы.
  • 0
    Хотел сделать (даже делать регулярный) донейт через PayPal, а он мне отказал по причине того, что из РФ в РФ можно передавать только рубли. Может быть сделаете прием и в рублях? Или там Яндекс.Деньги прикрутите?
    • +1
      Попробуйте Яндекс
      • 0
        Да, работает, спасибо.
  • 0
    Спасибо автору за мое счастливое conemu+far
  • 0
    ОК! Отлично! Пользуюсь. Спасибо автору.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.