Обновление сентябрь 2015 (6 лет спустя)
Последний выпуск git-for-Windows (2.5.3) теперь включает в себя:
Настроив git config core.editor notepad
, пользователи теперь могут использовать notepad.exe
в качестве редактора по умолчанию .
Конфигурация git config format.commitMessageColumns 72
будет подхвачена блокнотом-блокнотом и перенесет сообщение о фиксации строки после того, как пользователь отредактирует его.
См. коммит 69b301b от Йоханнес Шинделин (dscho
) .
И Git 2.16 (Q1 2018) покажет сообщение, сообщающее пользователю, что он ожидает, когда пользователь закончит редактирование при порождении редактора, в случае, если редактор
открывается в скрытое окно или где-то неясное, и пользователь получает
потерял.
См. коммит abfb04d (07 декабря 2017 г.) и коммит a64f213 (29 ноября 2017 г.) от Ларс Шнайдер (larsxschneider
) .
Помощник: Джунио С Хамано (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
Я предпочитаю , а не , чтобы установить переменную РЕДАКТОРА, поэтому я попытался:
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)
В ответе Беннетта упоминается возможность избежать добавления скрипта, но непосредственно ссылаться на саму программу между простыми кавычками . Обратите внимание на направление косых черт! Используйте /
NOT \
для разделения папок в имени пути!
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"
Но я предпочитаю использовать скрипт (см. Ниже): таким образом я могу играть с разными путями или разными вариантами без необходимости заново регистрировать git config
.
Фактическим решением (со сценарием) было понять, что:
в конфигурационном файле вы ссылаетесь на сценарий оболочки (/bin/sh
) , а не на сценарий 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 ++ открыть файл временного коммита, а не новый пустой файл.