Обновление сентябрь 2015 (6 лет спустя)
Последний выпуск мерзавца-для-Windows , (2.5.3) теперь включает в себя:
После настройки git config core.editor notepad
пользователи теперь могут использовать notepad.exe
их в качестве редактора по умолчанию .
Конфигурация git config format.commitMessageColumns 72
будет подхвачена блокнотом-блокнотом и перенесет сообщение о коммите после того, как пользователь его отредактирует.
См совершить 69b301b по Johannes Schindelin ( dscho
) .
И Git 2.16 (Q1 2018) покажет сообщение, сообщающее пользователю, что он ожидает, когда пользователь закончит редактирование при порождении редактора, в случае, если редактор открывается в скрытое окно или где-то в тени, и пользователь теряется.
Смотрите коммит abfb04d (07 декабря 2017 г.) и коммит a64f213 (29 ноября 2017 г.) от Lars Schneider ( larsxschneider
) .
При поддержке: Junio C Hamano ( gitster
) .
(Объединено Junio C Hamano - gitster
- в коммите 0c69a13 , 19 декабря 2017 г.)
launch_editor()
: указать, что Git ждет ввода пользователя
Когда графическое GIT_EDITOR
изображение порождается командой Git, которая открывается и ожидает ввода пользователя (например, " git rebase -i
"), тогда окно редактора может быть скрыто другими окнами.
Пользователь может смотреть в исходное окно терминала Git, даже не осознавая, что ему / ей нужно взаимодействовать с другим окном, прежде чем Git сможет продолжить работу. Для этого пользователя Git кажется висящим.
Распечатайте сообщение о том, что Git ждет ввода редактора в исходном терминале, и избавьтесь от него, когда редактор вернется, если терминал поддерживает удаление последней строки.
Оригинальный ответ
Я только что проверил это с git версии 1.6.2.msysgit.0.186.gf7512 и Notepad ++ 5.3.1
Я предпочитаю не устанавливать переменную EDITOR, поэтому я попытался:
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\""
# or
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\" %*"
Это всегда дает:
C:\prog\git>git config --global --edit
"c:\Program Files\Notepad++\notepad++.exe" %*: c:\Program Files\Notepad++\notepad++.exe: command not found
error: There was a problem with the editor '"c:\Program Files\Notepad++\notepad++.exe" %*'.
Если я определю npp.bat в том числе:
"c:\Program Files\Notepad++\notepad++.exe" %*
и я печатаю:
C:\prog\git>git config --global core.editor C:\prog\git\npp.bat
Он работает только из сеанса DOS, но не из оболочки git .
(не то, что с механизмом конфигурации core.editor, скрипт с " start /WAIT...
" в нем не будет работать, а только откроет новое окно DOS)
В ответе Беннетта упоминается возможность избежать добавления сценария, но ссылаться непосредственно на саму программу между простыми кавычками . Обратите внимание на направление косых черт! Используйте /
НЕ \
для разделения папок в имени пути!
git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
Или, если вы находитесь в 64-битной системе:
git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
Но я предпочитаю использовать скрипт (см. Ниже): таким образом я могу играть с разными путями или разными вариантами без необходимости повторной регистрации a git config
.
Реальное решение (со сценарием) состояло в том, чтобы понять, что:
то, на что вы ссылаетесь в файле конфигурации, на самом деле является /bin/sh
сценарием shell ( ) , а не сценарием DOS.
Так что же работает:
C:\prog\git>git config --global core.editor C:/prog/git/npp.bat
с C:/prog/git/npp.bat
:
#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"
или
#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"
С этой настройкой я могу сделать ' git config --global --edit
' из DOS или Git Shell, или я могу сделать ' git rebase -i ...
' из DOS или Git Shell.
Команды бота вызовут новый экземпляр notepad ++ (отсюда и -multiInst
опция ') и будут ждать закрытия этого экземпляра, прежде чем продолжить.
Обратите внимание, что я использую только «/», а не \
«. И я установил msysgit, используя вариант 2. (Добавьте git\bin
каталог в PATH
переменную окружения, но не переопределяя некоторые встроенные инструменты Windows)
Тот факт, что обертка notepad ++ называется .bat, не важен.
Было бы лучше назвать его 'npp.sh' и поместить его в [git]\cmd
каталог (или в любой каталог, на который ссылается переменная среды PATH).
Смотрите также:
lightfire228 добавляет в комментариях :
Если у вас возникли проблемы, когда N ++ просто открывает пустой файл, а git не принимает ваше сообщение о коммите , см. « Отмена фиксации из-за пустого сообщения »: измените свой файл .bat
или .sh
файл, чтобы сказать:
"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>.
Это скажет notepad ++ открыть файл временного коммита, а не пустой новый.