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

Пробую Git в Windows. Я дошел до попытки "git commit" и получил эту ошибку:

Terminal is dumb but no VISUAL nor EDITOR defined. Please supply the message using either -m or -F option.

Итак, я понял, что мне нужна переменная среды EDITOR. Без проблем. Я установил его так, чтобы он указывал на Блокнот. Это почти сработало. Сообщение о фиксации по умолчанию открывается в Блокноте. Но Блокнот не поддерживает перевод строки. Я вышел и получил Блокнот ++, но я не могу понять, как настроить Notepad ++ как %EDITOR% таким образом, чтобы он работал с Git, как ожидалось.

Я не замужем за Notepad ++. На данный момент меня не волнует, какой редактор я использую. Я просто хочу иметь возможность введите сообщения фиксации в редакторе, а не в командной строке (с -m).

Те из вас, кто использует Git в Windows: какой инструмент вы используете для редактирования сообщений о фиксации и что вам нужно было сделать, чтобы он заработал?

TL; DR: заключите путь к исполняемому файлу редактора в одинарные кавычки

yoyo 17.03.2014 03:19

Наверное, бесполезно, но FWIW, я просто использую обычный блокнот. Я ничего не сделал, чтобы заставить его работать. Просто по умолчанию это работало из коробки ...

BrainSlugs83 05.09.2014 10:05

Обновление от сентября 2015 года: теперь достаточно простого git config core.editor notepad. См. мой обновленный ответ ниже.

VonC 21.09.2015 14:59

Замечу, что JEdit не подходит для git. JEdit открывает только один экземпляр даже для нескольких файлов. Если он уже был открыт, git заставит его открыть новый файл, но тогда вам нужно полностью закрыть JEdit, прежде чем git продолжит работу. Нет параметра командной строки, чтобы JEdit открывал отдельный экземпляр для редактирования сообщения фиксации.

GrantRobertson 26.02.2017 06:23

Если кому-то нравится Sublime Text 3, вот мои инструкции по настройке его для Windows ... и Linux тоже: Лучшие настройки для Sublime Text 3 в качестве редактора git (инструкции для Windows и Linux). @yoyo, TL; DR для использования любого текстового редактора: заключите путь к исполняемому файлу редактора в одинарные кавычки И используйте косую черту (/) НЕ обратную косую черту (\) в имени пути к исполняемому файлу Windows.

Gabriel Staples 03.02.2018 22:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
582
6
338 918
34
Перейти к ответу Данный вопрос помечен как решенный

Ответы 34

Мне было трудно заставить Git сотрудничать с Word Pad, Комодо Править и почти со всеми остальными редакторами, которые я ему даю. Большинство из них открыты для редактирования, но Git явно не ждет, пока произойдет сохранение / закрытие.

В качестве костыля я только что делал т.е.

git commit -m "Fixed the LoadAll method"

чтобы все двигалось. Обычно мои сообщения о фиксации немного короче, чем они, вероятно, должны быть, но очевидно, что над версией Git для Windows нужно проделать некоторую работу.

GitGUI тоже не так уж плох. Это требует некоторой ориентации, но после этого работает довольно хорошо.

Notepad ++ работает нормально, хотя я предпочитаю использовать Notepad, -m или даже иногда встроенное «редактирование».

Проблема, с которой вы сталкиваетесь при использовании Notepad ++, связана с тем, как Git запускает исполняемый файл редактора. Мое решение - установить переменную среды EDITOR в пакетный файл, а не в исполняемый файл редактора, который выполняет следующие действия:

start /WAIT "E:\PortableApps\Notepad++Portable\Notepad++Portable.exe" %*

/WAIT приказывает сеансу командной строки останавливаться до тех пор, пока приложение не выйдет, таким образом, вы сможете редактировать, сколько душе угодно, пока Git с радостью ждет вас. % * передает все аргументы командного файла в Notepad ++.

C:\src> echo %EDITOR%
C:\tools\runeditor.bat

У меня были проблемы с тем, чтобы это работало под PowerShell. Однако этот метод (stackoverflow.com/questions/10564/…) работал нормально.

Peter Stephens 05.10.2009 03:44

Vim / gVim у меня хорошо работает.

>echo %EDITOR%

c:\Vim\Vim71\vim.exe

Кажется, что Git не найдет редактор, если в пути есть пробелы. Таким образом, вам нужно будет поместить командный файл, упомянутый в Ответ Патрика, в путь без пробелов.

Этот формат отлично подходит для путей с пробелами: git config --global core.editor "\" c: \ Program Files \ textpad 5 \ textpad.exe \ "", поэтому вам может быть удобно избежать создания командного файла.

Carl 12.06.2009 13:31
Ответ принят как подходящий

Обновление сентябрь 2015 г. (6 лет спустя)

последний выпуск git-for-Windows (2.5.3) теперь включает:

By configuring git config core.editor notepad, users can now use notepad.exe as their default editor.
Configuring git config format.commitMessageColumns 72 will be picked up by the notepad wrapper and line-wrap the commit message after the user edits it.

См. совершить 69b301b от Йоханнес Шинделин (dscho).

И Git 2.16 (Q1 2018) покажет сообщение, чтобы сообщить пользователю, что он ожидает, пока пользователь закончит редактирование при создании редактора, в случае, если редактор открывается в скрытое окно или в какое-то непонятное место, и пользователь получает потерял.

См. совершить abfb04d (7 декабря 2017 г.) и совершить a64f213 (29 ноября 2017 г.) от Ларс Шнайдер (larsxschneider).
Помог: Junio ​​C Hamano (gitster).
(Merged by Junio C Hamano -- gitster -- in commit 0c69a13, 19 Dec 2017)

launch_editor(): indicate that Git waits for user input

When a graphical GIT_EDITOR is spawned by a Git command that opens and waits for user input (e.g. "git rebase -i"), then the editor window might be obscured by other windows.
The user might be left staring at the original Git terminal window without even realizing that s/he needs to interact with another window before Git can proceed. To this user Git appears hanging.

Print a message that Git is waiting for editor input in the original terminal and get rid of it when the editor returns, if the terminal supports erasing the last line


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

Я только что протестировал его с помощью 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"

Но я предпочитаю использовать сценарий (см. Ниже): таким образом я могу играть с разными путями или разными параметрами без необходимости повторно регистрировать 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).


Смотрите также:


огонь228 добавляет в комментариях:

For anyone having an issue where N++ just opens a blank file, and git doesn't take your commit message, see "Aborting commit due to empty message": change your .bat or .sh file to say:

"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>. 

That will tell notepad++ to open the temp commit file, rather than a blank new one.

В вашем сценарии оболочки вам нужны двойные кавычки вокруг $ *, иначе он не будет работать должным образом для путей с пробелами в них. Спасибо за подробное объяснение - я устанавливаю git (и кучу других вещей) в Windows для начинающих программистов, и командная строка достаточно сложна, чтобы грокнуть, не заставляя их изучать команды vi.

Sarah Mei 26.05.2009 04:09

Другой конкретный пример: stackoverflow.com/questions/1634161/…

VonC 02.11.2009 01:59

После Беннетт ответ вам не нужно создавать скрипт, вы можете просто использовать апостроф «внутри кавычек».

Tobias Kienzler 22.07.2010 11:49

@Tobias: правда, я включил его ответ в свой, а также причину, по которой я все еще предпочитаю ссылаться на скрипт в моих настройках git config.

VonC 22.07.2010 12:23

Также обратите внимание, что вы не можете использовать «Program Files (x86)»; Git будет жаловаться на паренсы. Если ваш Git установлен там, вам просто нужно поместить скрипт в другое место.

Nate Glenn 01.11.2012 04:33

@NateGlenn Используйте сокращенный эквивалент dir /X: «PROGRA~2» вместо «Program Files (x86)», что является хорошей привычкой при использовании кроссплатформенных совместимых инструментов в Windows, что позволяет сократить пробелы.

JJ Zabkar 08.05.2013 19:54
Это ответ на другой вопрос takes this to the logical conclusion and cuts out the ".bat file" (bourne [again] shell script)
SamB 10.09.2015 22:13

git config --global core.editor "\" C: \ Program Files (x86) \ Vim \ vim74 \ gvim.exe \ ""

jonincanada 30.09.2015 00:34

У вас нет права жить после варианта -notabbar. Он убивает глобальные параметры Блокнота, делая их непригодными для использования после каждого редактирования git. Я также не понимаю, какой смысл заключать название программы в одинарные кавычки.

Valentin Tihomirov 13.12.2015 20:02

@ValentinTihomirov Я согласен, но, поскольку этот старый ответ, я теперь обычно использую специальный портативный Notepad ++ («портативный» означает несжатый везде, где я хочу, как в notepad-plus-plus.org/repository/6.x/6.8.8/npp.6.8.8.bin.zip‌, не установленный с помощью установки msi). Это означает, что я не возражаю против -notabbar, поскольку этот экземпляр notepad ++ предназначен для использования только как git core.editor. У меня есть другой блокнот ++, установленный в другом месте для обычного редактирования текста.

VonC 13.12.2015 20:09

Хотя Microsoft Notepad может выполнять сносную работу по редактированию сообщений фиксации, я обнаружил, что он не подходит для редактирования файлов конфигурации git. Блокнот неправильно обрабатывает маркеры конца строки.

GrantRobertson 26.02.2017 06:26

Для всех, у кого есть проблема, когда N ++ просто открывает пустой файл, а git не принимает ваше сообщение о фиксации, stackoverflow.com/questions/30085970/…. для ленивых измените свой файл .bat или .sh на "<path-to-n++" .git/COMMIT_EDITMSG -<arguments>. Это скажет notepad ++ открыть временный файл фиксации, а не пустой новый

Lightfire228 19.04.2017 07:12

@ Lightfire228 Интересно. Я включил ваш комментарий в ответ для большей наглядности.

VonC 19.04.2017 09:29

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

Lightfire228 24.02.2018 20:23

Сэр, вы Нео в мире Gitrix. если вы снимете очки, вы вернетесь в этот мир :) спасибо за решение notepad ++. мне очень помогли.

Reza 18.11.2020 12:41

Во всяком случае, я только что поигрался с этим и обнаружил, что следующее мне хорошо работает:

git config --global core.editor "'C:/Program Files/TextPad 5/TextPad.exe' -m"

Я не думаю, что CMD любит одинарные кавычки, поэтому вы должны использовать двойные кавычки, «чтобы указать аргумент встроенной строки пробела».

Cygwin (который, как я считаю, является базовой платформой для Git Bash), с другой стороны, любит как ', так и "; вы можете указать пути, подобные CMD, используя / вместо \, при условии, что строка заключена в кавычки, то есть в этом случае, используя одинарные кавычки.

-m отменяет / указывает на использование нескольких редакторов, и нет необходимости в %*, прикрепленном к концу.

Спасибо за объяснение одинарных / двойных кавычек, теперь имеет смысл!

Patrick McDonald 31.05.2012 18:13

git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m" работает для меня как шарм.

Vlad Holubiev 06.01.2015 04:05

Я использовал `git config --global code.editor" 'C: \\ Program Files \\ Sublime Text 3 \\ sublime_text.exe' -n -w -m "`, однако, когда я запускаю "git commit", он открывается редактор Блокнота. Есть мысли о том, почему это так? Заранее спасибо.

Ryan Chase 24.11.2016 07:30

@RyanChase Удалите локальную запись конфигурации из ./git/config, например editor = notepad

Ricky Boyce 15.05.2018 05:15

Git Bash работает под MingW64, а не Cygwin. Cygwin имеет собственный двоичный файл Git.

Hans Deragon 15.04.2020 00:06

Я использую Cygwin в Windows, поэтому использую:

export EDITOR = "emacs -nw"

-nw предназначен для no-windows, т.е. говорит Emacs не пытаться использовать X Окно.

Привязки клавиш Emacs не работают для меня из оболочки Windows, поэтому я бы использовал ее только из оболочки Cygwin ... (рекомендуется rxvt.)

У меня была такая же проблема, и я нашел другое решение. Я получал

error: There was a problem with the editor 'ec'

У меня есть VISUAL=ec и командный файл ec.bat на моем пути, который содержит одну строку:

c:\emacs\emacs-23.1\bin\emacsclient.exe %*

Это позволяет мне редактировать файлы из командной строки с помощью ec <filename>, а установка VISUAL означает, что большинство unix-программ тоже его подхватят. Git, похоже, ищет путь иначе, чем другие мои команды - когда я посмотрел на git commit в Монитор процесса, я увидел, что он просматривает каждую папку на пути для ec и ec.exe, но не для ec.bat. Я добавил еще одну переменную среды (GIT_EDITOR=ec.bat), и все было в порядке.

Основываясь на Ответ Даррена, чтобы использовать Notepad ++, вы можете просто сделать это (все в одной строке):

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

Очевидно, что часть C:/Program Files/Notepad++/notepad++.exe должна быть путем к исполняемому файлу Notepad ++ в вашей системе. Например, это может быть C:/Program Files (x86)/Notepad++/notepad++.exe.

На меня это действует как оберег.

Я тоже! Кстати, эти переключатели описаны в C: / Program Files / Notepad ++ / user.manual / documentation / notepad-user-manua‌ l / command-line.html

Andrew Swan 09.05.2011 07:21

Следите за тем, чтобы Notepad ++ находился в `C: \ Program Files (x86)`

mindless.panda 04.08.2011 18:09

В этой конфигурации после выполнения фиксации с помощью git в следующий раз, когда я использую notepad ++, панель вкладок будет скрыта. По крайней мере, так обстоит дело с notepad ++ v5.7 и git v1.7.11. Чтобы исправить это в блокноте ++, мне нужно сделать Настройки -> Настройки -> Общие -> Панель вкладок -> Скрыть снимите флажок.

Craig McQueen 12.09.2012 04:26

Для x64 Windows измените на: git config --global core.editor "'C: / Program Files (x86) / Notepad ++ / notepad ++. Exe' -multiInst -notabbar -nosession -noPlugin"

Dariusz 25.09.2012 19:13

Для sublime / windows 7 мне нужно иметь '""'вместо"' '"по какой-то причине.

Glenn 03.04.2013 07:30

Я понимаю, что опаздываю на эту вечеринку, но из любопытства знает ли кто-нибудь (или даже помнит, после всех этих лет), почему нужно указать "-notabbar"? Я понимаю причину других параметров (ну, на самом деле не уверен, почему именно "-noPlugin"), но не этот.

Wilson F 31.10.2014 23:52

@WilsonF Причина в том, что вы ДОЛЖНЫ выйти из notepad ++, чтобы git перестал ждать вашего ввода и продолжил. Вы не можете хотеть открывать другие вкладки в этом экземпляре Notepad ++, потому что тогда ваш сеанс git будет зависать! Эти настройки делают именно то, что нужно: если у вас уже открыт Notepad ++, вы получаете новый экземпляр, который не позволяет вам открывать другие файлы, и который вы должны закрыть, когда закончите, чтобы git знал, что вы закончили редактирование. . То же самое и для сообщений фиксации.

ErikE 22.10.2015 01:59

У вас нет права жить после варианта -notabbar. Он убивает глобальные параметры Блокнота, делая их непригодными для использования после каждого редактирования git. Я также не понимаю, какой смысл заключать название программы в одинарные кавычки.

Valentin Tihomirov 13.12.2015 19:55

@ValentinTihomirov у меня отлично работает. Откройте экземпляр блокнота ++. Используйте его как обычно. Делай свое мерзкое дело. Откроется второй экземпляр. Закрой его. Все в порядке. Ничего не убито. Notepad ++ отлично работает в других ситуациях. Я использую эти инструменты ежедневно и обещаю, что они работают.

ErikE 13.12.2015 21:12

@ValentinTihomirov Я говорю, что вкладки работают нормально в обычном экземпляре notepad ++, в то время как экземпляр, который запускает git, имеет одну вкладку, из которой я выхожу, чтобы сообщить git, что я закончил редактирование. НЕ открывайте больше вкладок при открытии экземпляра git - это вызовет проблемы.

ErikE 14.12.2015 23:14

@ValentinTihomirov Я не сомневаюсь, что у вас проблемы, но я нет, и я не вру! Возможно, вам стоит заглянуть в файл настроек / конфигурации notepad ++?

ErikE 15.12.2015 23:44

@ValentinTihomirov Может быть, это вам поможет: расположение файлов конфигурации Notepad ++. Когда вы впервые установили блокнот ++, вы отметили опцию «Не использовать папку% APPDATA%»? Возможно, вам может помочь удаление и повторная установка без выбора этой опции.

ErikE 15.12.2015 23:59

@ErikE Reinsallation действительно исправил проблему. % APPDATA% также не имеет значения. Интересно, почему я обычно такой особенный. Исчезающие вкладки меня действительно разозлили.

Valentin Tihomirov 16.12.2015 01:49

@ValentinTihomirov P.S. вы вводите имя программы в одинарные кавычки, потому что в Program Files есть пробел.

ErikE 16.12.2015 02:38

Notepad ++ теперь доступен с 64-битной сборкой, поэтому он больше не находится в c: \ Program Files (x86). Правильная команда для 64-битной сборки Notepad ++: "git config --global core.editor" 'C: / Program Files / Notepad ++ / notepad ++. Exe' -multiInst -notabbar -nosession -noPlugin "

NMrt 11.09.2018 10:27

@NMrt Я упростил ответ на основе вашего комментария. Спасибо!

Bennett McElwee 12.09.2018 03:33

Я также использую Cygwin в Windows, но с gVim (в отличие от терминального Vim).

Для этого я сделал следующее:

  1. Создан однострочный пакетный файл (с именем git_editor.bat), который содержит следующее: "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. Поставил git_editor.bat на свой PATH.
  3. Установить GIT_EDITOR=git_editor.bat

После этого git commit и т. д. Будут правильно вызывать исполняемый файл gVim.

ПРИМЕЧАНИЕ 1. Параметр --nofork для gVim гарантирует, что он блокируется до тех пор, пока не будет записано сообщение фиксации.

ПРИМЕЧАНИЕ 2: кавычки вокруг пути к gVim необходимы, если в пути есть пробелы.

ПРИМЕЧАНИЕ 3. Кавычки вокруг «% *» нужны на тот случай, если Git передает путь к файлу с пробелами.

Для людей, которые используют msysgit (а не cygwin git), я смог немного упростить это. stackoverflow.com/questions/10564/…

Nick Knowlson 11.01.2011 01:04

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

Nick Knowlson 11.01.2011 01:07

У меня PortableGit 1.6 работал нормально, но после обновления до версии PortableGit 1.7 Windows у меня возникли проблемы. Некоторые команды Git отлично открывают Notepad ++. Exe, а некоторые нет, особенно Git rebase ведет себя по-другому.

Проблема в том, что некоторые команды запускают процесс cmd Windows, а некоторые используют процесс cmd Unix. Я хочу дать редактору Notepad ++ атрибуты запуска, поэтому мне нужен настраиваемый скрипт. Мое решение таково.

  1. Создайте сценарий для запуска соответствующего текстового редактора. Сценарий выглядит странно, но он обрабатывает варианты как для Windows, так и для Unix.

    c: /PortableGit/cmd/git-editor.bat

    #!/bin/sh
    # Open a new instance
    
    function doUnix() {
      "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar $*
      exit
    }
    
    doUnix $*
    
    :WINCALL
    "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar %*
    
  2. Установите глобальную переменную core.editor

    Скрипт был сохранен в папку git / cmd, поэтому он уже находится в пути gitconsole. Это обязательно, поскольку полный путь может работать некорректно.

    git config --global core.editor "git-editor.bat"
    

Теперь я могу запускать команды git commit -a и git rebase -i мастер. Попробуйте, если у вас есть проблемы с инструментом Git Windows.

Я предпочитаю использовать Emacs. Настроить его может быть немного сложно.

  1. Скачайте Emacs и распакуйте его где-нибудь вроде c:\emacs.
  2. Запустите c:\emacs\bin\addpm.exe. Вам нужно щелкнуть правой кнопкой мыши и «Запуск от имени администратора», если вы используете Windows Vista или более позднюю версию. Это поместит исполняемые файлы на ваш путь.
  3. Добавьте (server-start) в свой файл .emacs. См. Emacs Windows FAQ для получения совета о том, где разместить файл .emacs.
  4. git config --global core.editor emacsclientw

Git теперь будет открывать файлы в существующем процессе Emacs. Вам придется запустить этот существующий процесс вручную из c:\emacs\bin\runemacs.exe.

Word Pad!

Я доволен использованием Vim, но поскольку я пытаюсь представить Git компании, я хотел что-то, что у всех нас было, и обнаружил, что WordPad, похоже, работает нормально (т.е. Git действительно ждет, пока вы не закончите редактирование, и закроете окно).

git config core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'

Это использование Git Bash на msysgit; Я не пробовал из командной строки Windows (если это имеет значение).

Мне понравилась простота этого, но из коробки это не сработало. Вот что я пробовал. Я получаю следующее сообщение об ошибке: ошибка: возникла проблема с редактором C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe.

Shaun Luttin 24.08.2013 06:00

Цитаты неверны. Вы должны поставить двойные кавычки вне одинарных кавычек. То есть используйте «C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe», и тогда он будет работать.

Shaun Luttin 24.08.2013 06:10

Вы также можете использовать косую черту (/) вместо обратной (\).

Chris Jones 04.02.2014 22:16

Кроме того, вероятно, лучше использовать для этого «git config --global» вместо просто «git config». Скорее всего, вы хотите, чтобы этот параметр применялся ко всем репозиториям git на вашей рабочей станции, а не только к тому, в котором вы сейчас находитесь.

Chris Jones 04.02.2014 22:17

@ChrisJones, Нет смысла в этом случае потому что в "программных файлах" есть пробел между ними.

Pacerier 14.10.2015 13:53

Это моя установка для использования Geany в качестве редактора для Git:

git config --global core.editor C:/path/to/geany.bat

со следующим содержанием в geany.bat:

#!/bin/sh
"C:\Program Files\Geany\bin\Geany.exe" --new-instance "$*"

Он работает как в консоли DOS, так и в msysgit.

VonC ответил о блокноте ++, мой ответ для Geany?

CharlesB 09.05.2011 10:12

Редактировать: После обновления до Vim 7.3 я пришел к выводу, что самый чистый и простой способ сделать это:

  1. Добавьте основную папку Vim в свой путь (щелкните правой кнопкой мыши Мой компьютерХарактеристикиПередовойПеременные среды)

  2. Запустите это:

    git config --global core.editor "gvim --nofork '%*'"
    

Если вы сделаете это таким образом, я почти уверен, что он будет работать и с Cygwin.

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

Даже с парой ответов, связанных с Vim, у меня возникли проблемы с тем, чтобы заставить это работать с gVim под Windows (без использования командного файла,% EDITOR% или Cygwin).

В конечном итоге я пришел к хорошему и чистому результату, основанному на нескольких решениях, представленных здесь:

git config --global core.editor \
"'C:/Program Files/Vim/vim72/gvim.exe' --nofork '%*'"

Одна проблема, которая заняла у меня некоторое время, заключается в том, что это не обратная косая черта в стиле Windows. Это обычные косые черты.

Если vim установлен в Program Files(x86), вам, очевидно, нужно изменить путь.

Swapnil 12.11.2014 14:26

Мне удалось заставить работать версию среды, установив переменную EDITOR с использованием кавычек и /:

EDITOR = "c:/Program Files (x86)/Notepad++/notepad++.exe"

Это один из симптомов более серьезных проблем. Примечательно, что у вас что-то настраивает TERM=dumb. Другие вещи, которые не работают должным образом, - это команда less, которая сообщает, что у вас нет полностью функционального терминала.

Похоже, что это чаще всего вызвано тем, что TERM установлен на что-то в ваших глобальных переменных среды Windows. Для меня проблема возникла, когда я установил Клубничный перл, некоторая информация об этом есть на Ошибка msysgit для этой проблемы, а также несколько решений.

Первое решение - исправить это в вашем ~ / .bashrc, добавив:

export TERM=msys

Вы можете сделать это из командной строки Git Bash следующим образом:

echo "export TERM=msys" >> ~/.bashrc

Другое решение, которое я и сделал, потому что меня не волнуют причины, по которым Strawberry Perl добавил TERM=dumb в настройки моей среды, - это пойти и удалить TERM=dumb как направленный в этом комментарии к отчету об ошибке msysgit.

Control Panel/System/Advanced/Environment Variables... (or similar, depending on your version of Windows) is where sticky environment variables are set on Windows. By default, TERM is not set. If TERM is set in there, then you (or one of the programs you have installed - e.g. Strawberry Perl) has set it. Delete that setting, and you should be fine.

Точно так же, если вы используете Strawberry Perl и заботитесь о клиенте CPAN или что-то в этом роде, вы можете оставить TERM=dumb в покое и использовать unset TERM в своем файле ~ / .bashrc, который будет иметь такой же эффект, как и установка явного термина, как указано выше.

Конечно, все остальные решения верны в том смысле, что вы можете использовать git config --global core.editor $MYFAVORITEEDITOR, чтобы убедиться, что Git использует ваш любимый редактор, когда ему нужно запустить его за вас.

спасибо большое! У меня была эта проблема из-за Strawberry Perl, и это сводило меня с ума! спасибо за указание на это

Dmitry Avtonomov 09.05.2013 22:06

При использовании удаленно смонтированного домашнего диска (общий ресурс Самба, NFS, ...) ваша папка ~/.git является общей для всех систем, что может привести к нескольким проблемам. Поэтому я предпочитаю сценарий для определения правильного редактора для правильной системы:

#!/usr/bin/perl
# Detect which system I'm on and choose the right editor
$unamea = `uname -a`;
if ($unamea =~ /mingw/i){
    if ($unamea =~ /devsystem/i){#Check hostname
        exec('C:\Program Files (x86)\Notepad++\notepad++.exe', '-multiInst', '-nosession', @ARGV);
    }
    if ($unamea =~ /testsystem/i){
        exec('C:\Program Files\Notepad++\notepad++.exe', '-multiInst', '-nosession', @ARGV);
    }
}
$MCEDIT=`which mcedit`;
if ($MCEDIT =~ /mcedit/){
    exec($MCEDIT, @ARGV);
}
$NANO=`which nano`;
if ($NANO =~ /nano/){
    exec($NANO, @ARGV);
}
die "You don't have a suitable editor!\n";

Можно было бы рассмотреть простой сценарий оболочки, но я использовал Perl, поскольку он поставляется с msysgit, и ваши системы Unix-подобный обычно также предоставляют его. Помещаем скрипт в /home/username/bin, который нужно добавить в PATH в .bashrc или .profile. После добавления git config --global core.editor giteditor.pl у вас будет нужный редактор, где бы вы ни находились.

Благодаря сообществу Stack Overflow ... и небольшому исследованию я смог заставить мой любимый редактор, EditPad Pro, работать как основной редактор с msysgit 1.7.5.GIT и TortoiseGit v1.7.3.0 поверх Windows XP SP3 .. .

Следуя приведенному выше совету, я добавил путь к сценарию Bash для редактора кода ...

git config --global core.editor c:/msysgit/cmd/epp.sh

Однако после нескольких неудачных попыток вышеупомянутых решений ... я наконец смог заставить это работать. Согласно документации EditPad Pro, добавление флага '/ newinstance' позволит оболочке ждать ввода редактора ...

Флаг '/ newinstance' был ключевым в моем случае ...

#!/bin/sh
"C:/Program Files/JGsoft/EditPadPro6/EditPadPro.exe" //newinstance "$*"

Да, эта двойная косая черта для параметра newinstance должна быть в документации Editpad. Спасибо, что отметили это здесь!

gwideman 10.11.2014 09:45

EditPad Pro требует, чтобы переключатели командной строки, такие как /newinstance, имели ровно одну косую черту. Это нормально для приложений Windows. Если вы вызываете EditPad из оболочки UNIX, вам нужно будет использовать любой механизм, который ваша оболочка предлагает, чтобы избежать прямой косой черты, чтобы она не воспринимала переключатель как абсолютный путь и передавала одну буквальную косую черту в командную строку EditPad.

Jan Goyvaerts 11.11.2014 10:53

Если у вас есть EditPad Pro 7, и вы хотите вызвать EditPad Pro из процесса, который хочет ждать процесса EditPad, вам следует передать переключатель /wait в командной строке EditPad. Вы можете использовать /wait с /newinstance или без него, чтобы контролировать, следует ли открывать новое окно EditPad или нужно ли повторно использовать существующее окно. Процесс, запущенный вашим скриптом, будет ждать закрытия файла независимо от того, было ли окно создано или использовано повторно. EditPad Pro 6 и более ранние версии не поддерживают /wait.

Jan Goyvaerts 11.11.2014 10:57

@JanGoyvaerts ~ Спасибо за подсказку с флагом /wait, сэр ... :)

Eddie B 18.11.2016 18:12

Мне не удалось заставить EditPad Lite работать на меня, используя приведенные выше инструкции. Возможно, это произошло потому, что я пытался вызвать EditPad (через Git), используя терминал Windows, а не Git Bash или другую оболочку UNIX. Что сработало для меня, так это прямое редактирование раздела [core] в .gitconfig, чтобы включить строку editor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance".

user697473 29.10.2019 23:43

Я просто использую TortoiseGit прямо из коробки. Он прекрасно интегрируется с моими открытыми ключами PuTTY.

У него есть идеальный редактор для сообщений коммитов.

Это работает для меня с использованием Cygwin и TextPad 6 (EDIT: он также работает с TextPad 5, если вы вносите очевидные изменения в сценарий), и, предположительно, модель может использоваться и для других редакторов:

Файл ~/.gitconfig:

[core]
    editor = ~/script/textpad.sh

Файл ~/script/textpad.sh:

#!/bin/bash

APP_PATH=`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`
FILE_PATH=`cygpath -w `

"$APP_PATH" -m "$FILE_PATH"

Этот однострочник тоже работает:

Файл ~/script/textpad.sh (вариант 2):

"`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`" -m "`cygpath -w `"

Я использую Git на нескольких платформах, и мне нравится использовать одни и те же настройки Git на всех из них. (Фактически, у меня все мои файлы конфигурации находятся под контролем выпуска с помощью Git, и я помещаю клон репозитория Git на каждую машину.) Решение, которое я придумал, таково:

Я установил редактор на giteditor

git config --global core.editor giteditor

Затем я создаю символическую ссылку под названием Giteditor, которая находится в моем ДОРОЖКА. (У меня есть личный каталог мусорное ведро, но где угодно в ДОРОЖКА работает.) Эта ссылка указывает на мой текущий выбор редактора. На разных машинах и разных платформах я использую разные редакторы, поэтому это означает, что мне не нужно менять мою универсальную конфигурацию Git (.gitconfig), а только ссылку, на которую указывает giteditor.

Символические ссылки обрабатываются каждой известной мне операционной системой, хотя они могут использовать разные команды. Для Linux вы используете ln -s. Для Windows вы используете встроенный cmdmklink. У них разный синтаксис (который вы должны найти), но на самом деле все работает одинаково.

На самом деле, я пробовал это на Windows7, и это не работает с msys git. Там написано error: cannot spawn giteditor: No such file or directory

DanielSank 16.07.2014 08:32

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

  1. Добавьте каталог, содержащий исполняемый файл редактора, в вашу переменную ДОРОЖКА. (Например, "C: \ Program Files \ Sublime Text 3 \")
  2. Перезагрузите компьютер.
  3. Измените глобальную переменную Git core.editor на имя исполняемого файла редактора без расширения'.EXE' (например, git config --global core.editor sublime_text)

Вот и все!

ПРИМЕЧАНИЕ:Возвышенный текст 3 - это редактор, который я использовал для этого примера.

При такой настройке Sublime Text 3 открывает несколько экземпляров или обрабатывает тот факт, что git нужно закрыть, чтобы сигнализировать об окончании редактирования?

James World 22.01.2014 17:48

Я думаю, это откроет новое окно. Вы можете добавить переключатель --wait (sublimetext.com/forum/viewtopic.php?f=3&t=3257)

nikoskip 31.07.2014 03:02

Я использую GitHub для Windows, это хороший визуальный вариант. Но я также предпочитаю командную строку, поэтому, чтобы она работала, когда я открываю репозиторий в оболочке Git, я просто устанавливаю следующее:

git config --global core.editor vim

который отлично работает.

Это работает для PowerShell и cmder 1.2 (при использовании с PowerShell). В файле ~/.gitconfig:

[core]
    editor = 'c:/program files/sublime text 3/subl.exe' -w

Как я могу сделать Sublime Text редактором по умолчанию для Git?

Я нашел красиво простое решение, опубликованное здесь - хотя может быть ошибка в пути, в котором вы должны скопировать файл "subl", указанный автором.

Я использую Windows 7 x64, и мне пришлось поместить файл «subl» в папку /Git/cmd/, чтобы он заработал.

Тем не менее, это работает как шарм.

Основываясь на VonC'sпредложение, это сработало для меня (сводило меня с ума):

git config --global core.editor "'C:/Program Files (x86)/Sublime Text 3/subl.exe' -wait"

Пропуск -wait может вызвать проблемы, особенно если вы работаете с Геррит и меняете идентификаторы, которые необходимо вручную скопировать в конец сообщения о фиксации.

Атом и Windows 10

  1. Я щелкнул правой кнопкой мыши значок Atom на рабочем столе и выбрал свойства.

  2. Скопирован путь к местоположению "Начать в"

  3. Посмотрел там с помощью проводника Windows и нашел "atom.exe".

  4. Я набрал это в Git Bash:

    git config --global core.editor C:/Users/YOURNAMEUSER/AppData/Local/atom/app-1.7.4/atom.exe"
    

Примечание: я заменил все \ на /. Я создал .bashrc в моем домашнем каталоге и использовал / для установки моего домашнего каталога, и это сработало, поэтому я предположил, что / будет подходящим вариантом.

пожалуйста, проверьте это URL, это будет полезно для повышения качества вашего контента

Willie Cheng 01.06.2016 05:32

@willie Спасибо, я отформатировал текст и добавил теги. Надеюсь, что это немного улучшит его.

Jonathan Ramos 04.06.2016 08:40

Для Атом вы можете сделать

git config --global core.editor "atom --wait"

и аналогично для Код Visual Studio

git config --global core.editor "code --wait"

который откроет окно Атом или Код Visual Studio, через которое вы сможете выполнить фиксацию,

или для Возвышенный текст:

git config --global core.editor "subl -n -w"

Намного проще и эффективнее. Спасибо.

rom5jp 26.02.2018 16:19

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

#!/bin/dash -e
if [ "" ]
then k=$(cygpath -w "")
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 позволяет скрипту работать с Команды концентратора

Источник

Отредактируйте файл .gitconfig в папке c: \ Users \ YourUser и добавьте:

[core]
editor = 'C:\Program files\path\to\editor.exe'

Мне нужно было выполнить обе из следующего, чтобы Git запускал Notepad ++ в Windows:

  • Добавьте в .gitconfig следующее:

    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
    
  • Измените ярлык для запуска оболочки Git Bash от имени администратора, а затем используйте его для запуска оболочки Git Bash. Я предполагал, что пункт контекстного меню «Git Bash here» не запускал Notepad ++ с необходимыми разрешениями.

После выполнения обоих вышеперечисленных все заработало.

Those of you using Git on Windows: What tool do you use to edit your commit messages, and what did you have to do to make it work?

Инструмент, который я считаю наиболее полезным как мои git editor и мой универсальный редактор кода, в обеих Windows и Linux, - это Возвышенный текст 3. Он работает очень хорошо, но требует небольшой настройки, чтобы сделать его правильным, поэтому я полностью задокументировал это здесь:

Боковое примечание о моем основном редакторе: для больших проектов я использую Eclipse в качестве основного редактора и Sublime Text 3 в качестве редактора git и дополнительного редактора файлов, когда мне нужно использовать его расширенные функции, такие как режим с несколькими курсорами, вертикальный / столбец режим выбора и т. д. Для малых и средних проектов я использую только Sublime Text 3. Инструкции по установке Eclipse см. В разделе мой PDF-документ здесь.

добавить возвышенный git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe'"

Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, почему и / или как этот код отвечает на вопрос, улучшает его долгосрочную ценность.

Donald Duck 18.12.2020 14:11

Другие вопросы по теме