Git Bash Здесь, в Console2?

47

MSysGit устанавливает пункт контекстного меню, который открывает приглашение Git Bash в текущей выбранной папке; однако, это открывает окно cmd.exe, и я хотел бы открыть его в Console2 .

Какие изменения мне нужно сделать, чтобы это работало?

Обратите внимание, я видел этот связанный вопрос , но ответ устарел - MSysGit теперь использует скрипт vba для вызова приглашения bash. Кроме того, в этом документе не говорится о том, как работать с Console2.

Обновление: вам может быть интересно сделать то же самое с ConEmu , довольно преемником Console . Смотрите здесь: Git Bash Здесь, в ConEmu

Чарльз Ропер
источник

Ответы:

44

Вот что я сделал (ваши пути почти наверняка меняются):

  1. Создайте новую вкладку в консоли со следующими значениями:
    • Заглавие: Git Bash
    • Икона: C:\Program Files\Git\etc\git.ico
    • Ракушка "C:\Program Files\Git\bin\sh.exe" --login -i
    • Startup dir: %HOMEDRIVE%%HOMEPATH%
  2. Создайте новый ключ в HKEY_CLASSES_ROOT\Directory\shell\вызываемой git_shell2со значением данныхGit Console Here
  3. Создайте новый ключ в HKEY_CLASSES_ROOT\Directory\shell\git_shell2\вызываемой commandсо значением данных"C:\Users\charlesr\My Dropbox\Software\Console2\Console.exe" -t "Git Bash" -d "%1"

Это делает трюк.

Вместо того, чтобы выполнять шаги 2 и 3, описанные выше, вы можете просто скопировать следующее в файл .reg (сначала измените пути в соответствии с вашей конфигурацией), а затем импортировать в реестр.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\git_shell2]
@="Git Console Here"

[HKEY_CLASSES_ROOT\Directory\shell\git_shell2\command]
@="\"C:\\Users\\charlesr\\My Dropbox\\Software\\Console2\\Console.exe\" -t \"Git Bash\" -d \"%1\""
Чарльз Ропер
источник
Просто заметка для других, которые найдут это позже, убедитесь, что вы используете 32-битную версию Console2, иначе это не удастся.
Coderanger
Обратите внимание, что в последней версии msysgit значок теперь находится в C: \ msysgit \ share \ resources \ git.ico
Кевин Берридж,
1
Спасибо Чарльз, но зачем запускать шаги 2 и 3? Работает нормально, просто выполняя шаг 1, не уверен, зачем менять настройки репозитория?
Марк Кадлец
2
Очень аккуратный. Обратите внимание, что вы также можете добавить контекстное меню при нажатии на «фон» папки (белая часть, а не значок) gist.github.com/4048138
Ож
Я использовал эту настройку некоторое время, но, похоже, у нее есть к сожалению ограничение, заключающееся в невозможности выполнения .batсценариев (без перехода на другую вкладку, работающий без ошибок Cmd.exe). У кого-нибудь есть идеи по этому поводу?
Eoin
7

Скрипт vba просто запускает ярлык Git Bash в том же каталоге; просто измените этот ярлык, чтобы он указывал на исполняемый файл Console2, и настройте Console2 так, чтобы он использовал sh MSysGit в качестве оболочки.


ОБНОВЛЕНО

Если вдаваться в подробности, мне просто нужно было сделать это снова на новом компьютере:

  • Настройка консоли2

    1. добавлена ​​новая вкладка под названием "git"
    2. установить значок C:\Program Files (x86)\Git\etc\git.ico
    3. установите оболочку в C:\Program Files (x86)\Git\bin\sh.exe --login -i
  • Тонкая настройка Git Bash

    1. измените цель ярлыка на C:\Tools\Console2\Console.exe -t git -d .(хорошо, где находится ваш бинарный файл Console2)
    2. наслаждайтесь новым Git Bash Here, запускающим Console2!

Хитрость "-d." параметр передан в Console2: Git Bash.vbsсценарий изменяет текущий каталог на точку, указанную мышью, перед запуском ярлыка.

Надеюсь, это поможет.

Григорий Пакош
источник
5

В случае, если кто-то наткнется на это желание использовать MinGW Bash, я нашел решение для этого.

  1. Консоль2, Редактировать, Настройки, Вкладки, Добавить
  2. Название = Bash
  3. Shell = C:\MinGW\msys\1.0\bin\sh.exe -l
  4. Изменить реестр

    ni hklm:software/classes/directory/shell/bash/command `
      -f -va 'c:/Console2/Console.exe -t Bash -d %v'
    
  5. Создайте ~/.profileсо следующим:

    cd -
    

CD Man Page

Это работает с 64-битной и 32-битной консолью2, не знаю, о чем был написан кодрангер .

Стивен Пенни
источник
Есть несколько проблем с этой командой, которая заставляет консоль возвращать ошибку. Во-первых, HKCR\...\commandне следует заключать в кавычки. Далее, я полагаю, \-dвы имеете в виду передать /dпараметр, чтобы указать данные для новой записи реестра. Кроме того, вам нужны двойные кавычки вокруг значения данных, и -tпараметр заставляет Console.exe вообще не открываться, поэтому исключите это. Это должно выглядеть так:reg add HKCR\Directory\shell\Bash\command /d "C:\Console2\Console.exe -d \"%V\""
Дэвид Кеннеди
Из ваших комментариев очевидно, что вы все еще используете cmd.exe, поскольку Bash позволяет использовать одинарные и двойные кавычки для строк. Вы должны рассмотреть возможность обновления до Bash.
Стивен Пенни
0

Предполагая, что у вас есть вкладка Console2 с именем 'bash':

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\console2_bash]
@="Bash here (Console2)"
"NoWorkingDirectory"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\console2_bash\command]
@="\"C:\\Program Files (x86)\\Console2\\Console.exe\" -t Bash -d \"%V\"\\"
Полковник паника
источник