Настройка терминала Cmder в Windows

Предполагается, что вы уже справились с установкой Cmder, поэтому я буду рассказывать исключительно про настройку. Действие происходит под Windows 10.0, версия ConEmu, которая пришла в поставке Cmder, 160710. Поднимается занавес.

При первом запуске вижу консоль с приглашением, кажется это cmd:

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

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

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

Резервная копия настроек

Перед тем, как проводить эксперименты, забекаплю настройки, чтобы в случае чего откатиться. Окно настроек открывается по Win+Alt+P. В самом верху есть поле Storage, в котором указан файл с настройками. Рядом с ним кнопка Export:

Настройки можно экспортировать в файл и импортировать из файла

Настройки можно экспортировать в файл и импортировать из файла

Жму эту кнопку «Export», он предлагает сохранить файл. Я сохраняю на рабочий стол и называю conemu1.xml. Если я вдруг что-то сломаю в настройках, я смогу нажать Import внизу и восстановить настройки из этого файла.

А ещё так можно перенести настройки с одного компьютера на другой. Или поделиться с друзьями.

Вкладки при запуске

Для начала сделаю, чтобы при запуске Cmder открывался Bash. Открываю настройки, там секцию «Startup» и выбираю Startup options → Specified named task → {bash::bash}. Можно выбрать Auto save/restore opened tabs, чтобы при открытии Cmder восстанавливались вкладки с прошлого раза. Но я люблю начинать с чистого листа:

Запускать при старте таску {bash::bash}

Запускать при старте таску {bash::bash}

Перезапускаю Cmder и проверяю, что запустился bash. Ввожу команду echo $SHELL, она отвечает /usr/bin/bash, значит точно баш:

Узнаю текущий шелл

Узнаю текущий шелл

Папка при запуске

Такая шляпа, что Cmder открывается в домашней папке пользователя: C:\Users\Пользователь. А у меня весь код лежит на рабочем столе в папке Projects. Сделаю, чтобы консоль при запуске открывалась там. Startup → Tasks, выбираю {bash::bash}. Последний параметр запуска -new_console:d:%USERPROFILE%, здесь %USERPROFILE% это домашняя папка текущего пользователя. А мне нужна папка с проектами, дописываю %USERPROFILE%/Desktop/Projects:

Bash будет запускаться в папке Desktop/Projects

Bash будет запускаться в папке Desktop/Projects

Если вам нужна папка не в домашней директории, то у вас получится что-то вроде -new_console:d:D:/Projects.

Новая вкладка

Нажимаю Ctrl+T, чтобы открыть новую вкладку. Открывается окно с вопросом, какой именно шел запустить, от администратора или нет, и прочие скучные вопросы:

Дурацкие вопросы при открытии вкладки

Дурацкие вопросы при открытии вкладки

Жизнь слишком коротка, чтобы на них отвечать. Хочу, чтобы по Ctrl+T открывалась вкладка bash без всяких вопросов. И ещё чтобы в новой вкладке открывалась та же папка, что в текущей вкладке. Сначала поручу башу отдавать информацию о папке терминалу, по умолчанию он этого не делает. Для этого открываю вкладку с {bash::bash}, и в ней выполняю команду

echo "PROMPT_COMMAND='ConEmuC -StoreCWD'" >> ~/.bashrc

Эта команда добавит строку в .bashrc — файл настроек баша. Если файла ещё нет, он появится. Проверяю:

Настройки в .bashrc

Настройки в .bashrc

Теперь в настройках Startup → Tasks создам новую задачу. Назову её {bash::cwd}, потому что она запускает bash в текущей папке — current working directory. Поле «Task parameters» скопирую из задачи {bash::bash}, команду тоже копирую из этой задачи, но меняю в последнем параметре папку на %CD%:

cmd /c "%ConEmuDir%\..\git-for-windows\bin\bash --login -i" -new_console:d:%CD%

В поле Hotkey жму на многоточие и выбираю Ctrl+T:

Задача {bash::cwd} будет запускаться в текущей папке

Задача {bash::cwd} будет запускаться в текущей папке

Проверяю — не работает. Открывается дурацкое окно с вопросами. Иду в настройках в «Keys & Macro» и вижу, что на Ctrl+T всё ещё висит «открыть окно с вопросами», выбираю его и добавляю к хоткеям шифт, чтобы окно висело на Ctrl+Shift+T:

Добавляю шифт

Добавляю шифт

Сохраняю и проверяю. По Ctrl+T открывается вкладка с bash в текущей папке без вопросов, по Ctrl+Shift+T открывается окно с вопросом, какую вкладку открыть. Отлично.

Запуск из папки

Когда я смотрю в проводнике какую-то папку, иногда хочу запустить терминал прямо в ней. Иду в настройки → Integrations. Там две группы полей: «ConEmu Here» и «ConEmu Inside». Первый добавляет в контекстное меню пункт, по которому можно открыть окно ConEmu, а второй добавляет пункт, по которому можно открыть ConEmu прямо во вкладке проводника. Мне нужен первый вариант — открыть ConEmu. Прописываю команду:

{bash::cwd} -cur_console:n

Заодно переименовываю ConEmu Here в Terminal (мне так больше нравится):

Добавляю в меню проводника пункт Terminal

Добавляю в меню проводника пункт Terminal

И нажимаю кнопку «Register». Если не нажать, настройки не применятся. Закрываю настройки, закрываю терминал, захожу в папку, проверяю. Пункт в меню появился:

Теперь из любой папки можно консоль открыть

Теперь из любой папки можно консоль открыть

Жму на него, открывается консоль в этой папке. Круто. Даже с рабочего стола запускается! Кстати, с таской {bash::bash} не заработало. Видимо потому, что в ней уже прописана папка.

Деление экрана

Я люблю открывать две-три консоли одновременно. В одной вкладке запущен дев-сервер, во второй ввожу всякие команды, например манипулирую гитом:

В одной вкладке висит вечный сервер, в другой пишу команды

В одной вкладке висит вечный сервер, в другой пишу команды

Экран можно сплитить, если открыть окошко с вопросами про новую вкладку (Ctrl+Shift+T, как я настроил) и выбрать New console split → To bottom или To right:

New console split → To right

New console split → To right

Тыкать кнопки долго, нужны хоткеи, которые делят экран без вопросов, запуская bash в текущей папке. В меню «Keys & Macro» я нашёл какие-то на первый взгляд нужные команды «Split: Duplicate active ‘shell’ split to bottom» и to right, но у меня с ними не сохранялась папка после cd, а без этого неудобно.

В меню «Keys & Macro» есть свободные слоты «Macro N», куда можно вписать свои команды и хоткеи. У меня первыми свободными слотами были 12 и 13. В первый я добавил команду:

Shell("new_console:s50H", "", "{bash::cwd}")

s50H — это значит поделить (split) экран на 50% по горизонтали (Horizontal). Добавил хоткей Ctrl+S (от слова Split). В следующий слот добавил деление по вертикали (V):

Shell("new_console:s50V", "", "{bash::cwd}")

Получилось так:

Сплит экрана с bash в текущей папке

Сплит экрана с bash в текущей папке

Проверяю, как работает. Закрываю cmder и снова открываю. Он открывается в Desktop/Projects (левая панель). Я перехожу в папку sicamp и жму Ctrl+S, экран делится по вертикали (правая верхняя панель). Теперь в этой панели захожу в папку Desktop/Projects/Test и жму Ctrl+Shift+S, панель делится пополам и открывается правая нижняя:

Смотрю, как делится окно

Смотрю, как делится окно

Теперь наконец можно пользоваться.


Вот хоткеи для вкладок пачкой:

  • Новая вкладка Ctrl+T
  • новая вкладка с настройкой Ctrl+Shift+T
  • открыть панель справа Ctrl+S
  • открыть панель снизу Ctrl+Shift+S
  • закрыть вкладку Ctrl+W.