Как я могу использовать Notepad ++ (или другой) с msysgit?

210

Как мне использовать Notepad ++ (или любой другой редактор, кроме vim) с msysgit?

Я попробовал все следующее безрезультатно:

git config --global core.editor C:\Program Files\Notepad++\notepad++.exe

git config --global core.editor "C:\Program Files\Notepad++\notepad++.exe"

git config --global core.editor C:/Program Files/Notepad++/notepad++.exe

git config --global core.editor C:\\Program Files\\Notepad++\\notepad++.exe
PHLAK
источник
1
Есть сообщения об ошибках? Вы пытались установить переменную среды EDITOR?
csl
4
Попробуйте поискать здесь: stackoverflow.com/questions/10564/…
JasonTrue
Просто добавил некоторую информацию о пути скрипта, включая пробелы, по запросу.
VonC

Ответы:

76

Обновление 2010-2011:

zumalifeguard «s решение (upvoted) проще , чем исходный, так как ему не нужно больше оболочек обертки сценария.

Как я объясняю в « Как я могу настроить редактор для работы с Git в Windows? », Я предпочитаю оболочку, так как проще попробовать и переключать редакторы, или изменять путь одного редактора без необходимости регистрировать указанное изменение. с еще git configраз .
Но это всего лишь я.


Дополнительная информация : следующее решение работает с Cygwin , а решение zuamlifeguard - нет.


Оригинальный ответ.

Последующий:

C:\prog\git>git config --global core.editor C:/prog/git/npp.sh

C:/prog/git/npp.sh:
#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"

работает. Эти команды интерпретируются как сценарий оболочки, поэтому идея заключить в shсценарий любой набор команд Windows .
(Как говорит Фрэнки : «Не забудьте сохранить свой файл с окончаниями строк в стиле Unix или получать таинственные сообщения об ошибках!»).sh

Подробнее о SO вопросе Как настроить редактор для работы с Git в Windows?

Обратите внимание на -multiInstопцию ' ', чтобы обеспечить новый экземпляр notepad ++ для каждого вызова из Git.

Также обратите внимание, что если вы используете Git на Cygwin (и хотите использовать Notepad ++ от Cygwin ), то в « использовании Notepad ++ для Git внутри Cygwin » scphantm объясняет, что вы должны знать, что:

gitпроходит cygwinпуть и nppне знает, что с ним делать

Таким образом, сценарий в этом случае будет:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$(cygpath -w "$*")"

Несколько строк для удобства чтения:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar \
  -nosession -noPlugin "$(cygpath -w "$*")"

С "$(cygpath -w "$*")"является важной частью здесь.

Вал прокомментировал (а затем удалил), что вы не должны использовать -notabbarопцию:

Отключать вкладку во время перебазирования бесполезно, но наносит большой вред общему удобству использования Блокнота, поскольку он -notabстановится настройкой по умолчанию, и вы должны это делать Settings>Preferences>General>TabBar> Hide>uncheckкаждый раз, когда запускаете блокнот после перебазирования. Это ад Вы рекомендовали, черт возьми.

Так что используйте скорее:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -nosession -noPlugin "$(cygpath -w "$*")"

То есть:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -nosession \
  -noPlugin "$(cygpath -w "$*")"

Если вы хотите поместить скрипт ' npp.sh' в путь с пробелами (как в ' c:\program files\...'), у вас есть три варианта:

  • Попробуйте указать путь (одинарные или двойные кавычки), как в:

    git config --global core.editor 'C:/program files/git/npp.sh'
  • или попробуйте обозначение короткого имени (не защищенное от дурака):

    git config --global core.editor C:/progra~1/git/npp.sh
  • или (мое любимое) место ' npp.sh' в директории вашей %PATH%переменной среды. Тогда вам не нужно было бы указывать какой-либо путь для скрипта.

    git config --global core.editor npp.sh
  • Steiny сообщает в комментариях, что нужно сделать:

    git config --global core.editor '"C:/Program Files (x86)/Git/scripts/npp.sh"'
VonC
источник
Я получил это к работе, поместив npp.sh в корень моего диска (то есть - C: /npp.sh). Всякий раз, когда я пытаюсь нацелить папку с пробелами (то есть - D: / Program Files (x86) /Git/npp.sh), она терпит неудачу, как правильно избежать пробелов и / или заставить это работать?
PHLAK
поставить вокруг него цитаты. Видите, как он цитирует все это в своем примере?
Фред
2
Ответ zumalifeguard работал для меня. Это не требует оболочки сценария оболочки.
wbinford
1
@wbinford: я добавил ссылку на ответ zumalifeguard (за который я проголосовал), а также причину, по которой я предпочитаю регистрировать оболочку, а не прямую команду.
VonC
1
Я пробовал несколько комбинаций выше, и ни одна из них не работает с Git. у меня есть мой скрипт npp в моем пути, и если из моей консоли cygwin я набираю, «npp {file}» npp открывает файл очень хорошо, но когда я делаю «git rebase -i», npp открывается с пустым файлом вместо объединить файл. есть идеи, почему это произойдет?
scphantm
433
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Или для 64-битной Windows и 32-битной установки Notepad ++:

git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Или следующее может быть выдано в командной строке в 32-битной или 64-битной Windows. Он извлечет местоположение notepad ++. Exe из реестра и настроит git для его автоматического использования:

FOR /F "usebackq tokens=2*" %A IN (`REG QUERY "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\notepad++.exe" /ve`) DO git config --global core.editor "'%B' -multiInst -notabbar -nosession -noPlugin"

Если вы хотите поместить вышеперечисленное из файла .BAT или .CMD, вы должны заменить% A на %% A и% B на %% B

zumalifeguard
источник
9
работает и в расширениях git. обратите внимание, что для 64-битных окон вход"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin
Тим Абелл
15
Глупость в том, что -notabbar отключит панель вкладок навсегда, не только для этого сеанса. При нормальном запуске в notepad ++ вам нужно снова зайти в диалог настроек и снова включить панель вкладок.
Оскар Берггрен
4
Я должен был использовать: git config --global core.editor "c\:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -nosession -noPlugin" ... не уверен, почему.
Дэвид Фэйвр
1
У меня Windows 7 64-bit, msysgit v1.9.2 и Notepad ++ v6.6.9, и это работало ОТЛИЧНО . Спасибо.
Раду Мурзеа
2
@CoDEmanX Без -multiInstэтого, скорее всего, просто подаст сигнал уже запущенному Notepad ++, чтобы открыть файл и немедленно выйти из него. Это может быть большой проблемой, если все, что вызывает редактор, ожидает, что оно вернется только после завершения редактирования (т. Е. Синхронной операции, как в случае вызова vi). Попробуйте интерактивную rebase ( git rebase -i), например. Если это все еще работает, как ожидалось, тогда вы в порядке.
blubberdiblub
7

Это работает для меня

git config --global core.editor C:/Progra~1/Notepad++/notepad++.exe
Тим Скотт
источник
я сделал то же самое .. теперь, как открыть notepad ++ для фиксации с сообщением ?? что за запятая ?? не могли бы вы привести пример
Шридутт Котари
4
Добавление -multiInstопции имеет решающее значение здесь, как и в других ответах.
blubberdiblub
1
Это не хорошо по двум причинам. Во-первых, если том C: является NTFS с отключенной опцией имени файла 8.3, его вообще нет C:\Progra~1. Во-вторых, может быть несколько C:\Progra*каталогов, поэтому ~1суффикс не обязательно является действительным.
ккм
5
git config core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""
закон
источник
Это помогло мне! Впоследствии .gitconfig выглядит следующим образом: [core] editor = \ "c: \\ Program Files (x86) \\ Notepad ++ \\ notepad ++. Exe \" -multiInst -nosession -noPlugin
AtliB
Смотрите ответ с наибольшим количеством голосов, который включает это (я не читал достаточно далеко)
AtliB
3

Я использую подход с переменной PATH. Путь к Notepad ++ добавляется в системную переменную PATH, а затем устанавливается core.editor следующим образом:

git config --global core.editor notepad++

Также вы можете добавить некоторые дополнительные параметры для Notepad ++:

git config --global core.editor "notepad++.exe -multiInst"

(как я подробно описал в " Git core.editorдля Windows ")

И здесь вы можете найти некоторые параметры, которые вы можете использовать при указании параметров командной строки Notepad ++ .

starikovs
источник
1

ОБНОВЛЕНИЕ 2015

Если вы распакуете / установите Notepad ++ в c:\utils\npp\и переименуете notepad ++. Exe в npp.exe для простоты, то все, что вам нужно сделать, это

git config --global core.editor c:/utils/npp/npp.exe

Никаких скриптов-обёрток или других хитростей. Нет необходимости иметь Notepad ++ в PATH.

Дан Дакалеску
источник
Обновление 2020: кажется, вы пропустили варианты, чтобы открыть новый экземпляр блокнота. Я использовал от cmd.exe, git config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin"и он работает от обоих cmd terminalиgit bash
oleksa
1

Я использую Windows 10 и notepad ++, и я получаю это сообщение об ошибке:

line 0: syntax error near unexpected token `(' git windows

Поэтому я делаю настройку следующим образом:

git config --global core.editor 'C:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe'

и это работает

Хуан Луис Вивас Окчипинти
источник
0

Следуйте этим инструкциям,

  1. Сначала убедитесь, что у вас установлен notepad ++ и что это программа по умолчанию для открытия .txt файлов.

  2. Затем установите gitpad в вашей системе. Обратите внимание, что в последний раз я проверял, что ссылка для скачивания была сломана, поэтому загрузите ее отсюда, как описано .

Затем во время коммита вы должны увидеть ваш любимый текстовый редактор.

Адитья П
источник
0

Я использовал решение Стариковых. Я начал с окна bash и дал команды

cd ~
touch .bashrc

Затем я нашел файл .bashrc в проводнике Windows, открыл его с помощью notepad ++ и добавил

PATH=$PATH:"C:\Program Files (x86)\Notepad++"

так что Bash знает, где найти Notepad ++. (Наличие Notepad ++ в bash PATH само по себе полезно!) Затем я вставил его строку

git config --global core.editor "notepad++.exe -multiInst"

в окно Я запустил новое окно bash для git-репозитория, чтобы проверить вещи с помощью команды

git rebase -i HEAD~10

и файл, открытый в Notepad ++, как и ожидалось.

Иван
источник
0

Вот решение с Cygwin:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. Если нет пути, не передайте путь

  2. Если путь пуст, пропустите пустой путь

  3. Если путь не пустой, конвертируйте в формат Windows.

Затем я установил эти переменные:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. РЕДАКТОР позволяет скрипту работать с Git

  2. GIT_EDITOR позволяет скрипту работать с командами Hub

Источник

Стивен Пенни
источник