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

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

Терминал тупой, но не определен ни визуальный, ни редактор. Пожалуйста, укажите сообщение, используя опцию -m или -F.

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

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

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

14.08.2008 01:43:04
TLDR: поместите одинарные кавычки вокруг пути к исполняемому файлу редактора
yoyo 16.03.2014 23:19:51
Вероятно, не полезно, но FWIW, я просто использую обычный блокнот. Я ничего не сделал, чтобы это сработало. Он просто работал из коробки по умолчанию ...
BrainSlugs83 5.09.2014 06:05:30
Обновление сентябрь 2015: простого git config core.editor notepadтеперь достаточно. Смотрите мой обновленный ответ ниже .
VonC 21.09.2015 11:59:17
Просто заметьте, что JEdit не подходит для git. JEdit открывает только один экземпляр даже для нескольких файлов. Если он уже был открыт, git заставит его открыть новый файл, но затем вы должны полностью закрыть JEdit, прежде чем git продолжит работу. Нет опции командной строки, чтобы JEdit открывал отдельный экземпляр для редактирования сообщения фиксации.
GrantRobertson 26.02.2017 03:23:06
Если кому-то нравится Sublime Text 3, вот мои инструкции о том, как я настроил его для Windows ... и Linux: лучшие настройки Sublime Text 3 в качестве редактора git (инструкции для Windows и Linux) . @yoyo, TLDR для использования любого текстового редактора: ставьте одинарные кавычки вокруг пути к исполняемому файлу редактора и используйте прямую косую черту (/), а НЕ обратную косую черту (\) в имени пути к исполняемому файлу Windows.
Gabriel Staples 3.02.2018 19:07:04
30 ОТВЕТОВ
РЕШЕНИЕ

Обновление сентябрь 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 ++ открыть файл временного коммита, а не пустой новый.

559
29.01.2018 06:57:35
В вашем сценарии оболочки вам нужны двойные кавычки около $ *, иначе он не будет работать правильно для путей с пробелами в них. Спасибо за подробное объяснение - я устанавливаю git (и кучу других вещей) в Windows для начинающих программистов, и командную строку достаточно сложно взломать, не заставляя их изучать команды vi.
Sarah Mei 26.05.2009 00:09:48
Другой конкретный пример: stackoverflow.com/questions/1634161/…
VonC 1.11.2009 22:59:56
После ответа Беннетта вам не нужно создавать сценарий, вы можете просто использовать апостроф «внутри кавычек».
Tobias Kienzler 22.07.2010 07:49:17
@Tobias: правда, я включил его ответ в свой, а также причину, по которой я все еще предпочитаю ссылаться на скрипт в моих git configнастройках.
VonC 22.07.2010 08:23:43
@NateGlenn Используйте сокращенный dir /Xэквивалент: " PROGRA~2" для " Program Files (x86)", что является хорошей привычкой, когда вы используете кроссплатформенные совместимые инструменты в Windows, что позволяет вам заполнять пробелы.
JJ Zabkar 8.05.2013 15:54:39

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

Как костыль, я просто делал то есть

git commit -m "Fixed the LoadAll method"

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

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

2
13.11.2019 07:51:38

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
15
13.11.2019 07:54:18
У меня были проблемы с тем, чтобы заставить это работать под PowerShell. Этот метод ( stackoverflow.com/questions/10564/… ) работал нормально, хотя.
Peter Stephens 4.10.2009 23:44:54

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

>echo %EDITOR%

c:\Vim\Vim71\vim.exe
5
13.11.2019 07:55:04

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

2
23.05.2017 11:55:03
Этот формат отлично работает для путей с пробелами: git config --global core.editor "\" c: \ Program Files \ textpad 5 \ textpad.exe \ "", поэтому может быть практичным избежать создания командного файла
Carl 12.06.2009 09:31:15

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

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

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

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

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

50
25.12.2013 23:35:06
Спасибо за объяснение одинарной / двойной кавычки, теперь имеет смысл!
Patrick McDonald 31.05.2012 14:13:29
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"работает как шарм для меня.
Vlad Holubiev 6.01.2015 01:05:43
Я использовал `git config --global code.editor" 'C: \\ Program Files \\ Sublime Text 3 \\ sublime_text.exe' -n -w -m "`, однако когда я запускаю "git commit", он открывается редактор блокнота. Любые мысли о том, почему это будет иметь место? Заранее спасибо.
Ryan Chase 24.11.2016 04:30:22
@RyanChase Удалить локальную конфигурационную запись из ./git/config, напримерeditor = notepad
Ricky Boyce 15.05.2018 02:15:00
Git Bash работает под MingW64, а не Cygwin. Cygwin имеет свой собственный двоичный файл Git.
Hans Deragon 14.04.2020 21:06:45

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

export EDITOR="emacs -nw"

Это -nwдля no-windowsEecs, т.е. не пытаться использовать X Window .

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

3
13.11.2019 07:58:21

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

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

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

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

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

1
13.11.2019 08:00:16

Основываясь на ответе Даррена , чтобы использовать 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.

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

298
13.11.2019 08:01:09
Я тоже! Кстати, эти переключатели описаны в C: / Program Files / Notepad ++ / user.manual / Documentation / notepad-user-manual / command-line.html
Andrew Swan 9.05.2011 03:21:43
Следите за тем, чтобы Notepad ++ находился в `C: \ Program Files (x86)`
mindless.panda 4.08.2011 14:09:53
Для изменения x64 Windows , чтобы: мерзавец конфигурации --global core.editor "" C: / Program Files (x86) / Notepad ++ / Notepad ++ еха. -MultiInst -notabbar -nosession -noPlugin"
Dariusz 25.09.2012 15:13:00
Я понимаю, что опаздываю на эту вечеринку, но из любопытства кто-нибудь знает (или даже вспоминает, после всех этих лет), почему нужно указать «-notabbar»? Я понимаю причину, лежащую в основе других параметров (ну, на самом деле, я не уверен, почему "-noPlugin"), но не этот.
Wilson F 31.10.2014 20:52:06
@WilsonF Причина в том, что вы ДОЛЖНЫ выйти из notepad ++, чтобы git прекратил ждать ввода и продолжил. Вы не хотите открывать другие вкладки в этом экземпляре Notepad ++, потому что тогда ваш git-сеанс будет заморожен! Эти настройки делают абсолютно правильно: если у вас уже открыт Notepad ++, вы получаете новый экземпляр, который не позволяет открывать другие файлы, и который вы должны закрыть, когда закончите, чтобы git знал, что вы закончили редактирование , Работает так же для фиксации сообщений.
ErikE 21.10.2015 22:59:08

Я также использую 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. Параметр --noforkgVim гарантирует, что он блокируется до тех пор, пока не будет написано сообщение о коммите.

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

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

9
13.11.2019 08:03:34
Для людей, которые используют msysgit (не cygwin git), я смог немного упростить это. stackoverflow.com/questions/10564/…
Nick Knowlson 10.01.2011 22:04:39
Если подумать, это может сработать и с cygwin, я не совсем уверен
Nick Knowlson 10.01.2011 22:07:25

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

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

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

    с: /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.

4
13.11.2019 08:08:29

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

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

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

2
13.11.2019 08:11:41

Комп !

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

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

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

11
13.11.2019 08:13:03
Мне понравилась простота этого, но он не работал для меня из коробки. Вот что я попробовал. Я получаю следующее сообщение об ошибке: ошибка: возникла проблема с редактором «C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe».
Shaun Luttin 24.08.2013 02:00:35
Цитаты неверны. Вы должны поместить двойные кавычки вне одинарных кавычек . То есть используйте «C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe», и тогда он будет работать.
Shaun Luttin 24.08.2013 02:10:48
Вы также можете извлечь выгоду из прямой косой черты (/) вместо обратной косой черты (\).
Chris Jones 4.02.2014 18:16:00
Также, вероятно, для этого лучше использовать «git config --global» вместо просто «git config». Скорее всего, вы хотите, чтобы этот параметр применялся ко всем репозиториям git на вашей рабочей станции, а не только к тому, в котором вы сейчас находитесь.
Chris Jones 4.02.2014 18:17:45
@ChrisJones, в этом случае нет смысла, потому что между «программными файлами» есть пробел.
Pacerier 14.10.2015 10:53:14

Это моя установка использовать 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.

3
13.11.2019 08:14:21
VonC ответил о notepad ++, мой ответ для Geany?
CharlesB 9.05.2011 06:12:40

Изменить: После обновления до 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. Это нормальные слеши.

27
13.11.2019 08:19:07
Если vim установлен в Program Files(x86), то вам нужно явно изменить путь.
Swapnil 12.11.2014 11:26:06

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

EDITOR="c:/Program Files (x86)/Notepad++/notepad++.exe"
1
25.01.2012 07:44:11

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

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

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

export TERM=msys

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

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

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

Панель управления / Система / Дополнительно / Переменные среды ... (или аналогичные, в зависимости от вашей версии Windows) - это то место, где в Windows задаются переменные среды. По умолчанию TERM не установлен. Если там установлен TERM, то вы (или одна из установленных вами программ - например, Strawberry Perl) установили его. Удалите этот параметр, и все будет в порядке.

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

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

6
13.11.2019 08:24:59
спасибо большое! У меня была эта проблема из-за клубничного Perl, и это сводило меня с ума! спасибо за указание на это
Dmitry Avtonomov 9.05.2013 18:06:20

При использовании удаленно смонтированного домашнего диска ( общий ресурс Samba , 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вас есть правильный редактор, где бы вы ни находились.

0
13.11.2019 08:57:04

Благодаря сообществу 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 "$*"
8
13.11.2019 08:31:29
Да, эта двойная косая черта для параметра newinstance должна быть в документации Editpad. Спасибо, что отметили это здесь!
gwideman 10.11.2014 06:45:32
EditPad Pro требует, чтобы переключатели командной строки /newinstanceимели ровно одну косую черту. Это вполне нормально для приложений Windows. Если вы вызываете EditPad из оболочки UNIX, вам нужно будет использовать любой механизм, предлагаемый вашей оболочкой, чтобы избежать прямого слеша, чтобы он не рассматривал переключатель как абсолютный путь и передавал один буквенный слеш в командную строку EditPad.
Jan Goyvaerts 11.11.2014 07:53:32
Если у вас есть EditPad Pro 7, и вы хотите вызвать EditPad Pro из процесса, который хочет дождаться процесса EditPad, то вы должны передать /waitпереключатель в командной строке EditPad. Вы можете использовать /waitс или без, /newinstanceчтобы контролировать, нужно ли открывать новое окно EditPad или использовать существующее окно повторно. Процесс, запущенный вашим сценарием, будет ожидать закрытия файла независимо от того, было ли окно создано или повторно использовано. EditPad Pro 6 и более ранние версии не поддерживают /wait.
Jan Goyvaerts 11.11.2014 07:57:14
@JanGoyvaerts ~ Спасибо за /waitподсказку, сэр ... :)
Eddie B 18.11.2016 15:12:24
Я не смог заставить 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 20:43:20

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

Он имеет идеальный редактор для фиксации сообщений.

-1
13.11.2019 08:33:43

Это работает для меня, используя Cygwin и TextPad 6 (РЕДАКТИРОВАТЬ: он также работает с 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 $1`

"$APP_PATH" -m "$FILE_PATH"

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

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

"`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`" -m "`cygpath -w $1`"
0
13.11.2019 08:35:08

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

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

git config --global core.editor giteditor

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

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

4
13.11.2019 08:36:46
На самом деле, я попробовал это на Windows7, и это не работает с MSY GIT. Это говоритerror: cannot spawn giteditor: No such file or directory
DanielSank 16.07.2014 04:32:59

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

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

Это оно!

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

0
13.11.2019 08:38:26
При такой настройке Sublime Text 3 открывает несколько экземпляров или обрабатывает тот факт, что git нужен для закрытия, чтобы сигнализировать об окончании редактирования?
James World 22.01.2014 13:48:40
Я думаю, что это откроет новое окно. Вы можете добавить параметр --wait ( sublimetext.com/forum/viewtopic.php?f=3&t=3257 )
nikoskip 30.07.2014 23:02:18

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

git config --global core.editor vim

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

1
13.11.2019 08:41:14

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

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

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

1
13.11.2019 08:42:42

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

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

Это работает как шарм, хотя.

1
13.11.2019 08:43:53

По предложению VonC , это сработало для меня (сводило меня с ума):

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

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

4
13.11.2019 08:45:55

Атом и Windows 10

  1. Я щелкнул правой кнопкой мыши значок Atom на рабочем столе и нажал на свойства.
  2. Скопировал путь местоположения «Начать в»
  3. Посмотрел там с Windows Explorer и нашел "atom.exe".
  4. Я набрал это в Git Bash:

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

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

1
13.11.2019 08:50:57
Пожалуйста, проверьте этот URL, это будет полезно для повышения качества вашего контента
Willie Cheng 1.06.2016 02:32:36
@Willie Спасибо, я отформатировал текст и добавил несколько тегов. Надеюсь, что это немного улучшит.
Jonathan Ramos 4.06.2016 05:40:54

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

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

и подобное для кода Visual Studio

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

который откроет окно кода Atom или Visual Studio для фиксации,

или для возвышенного текста :

git config --global core.editor "subl -n -w"
8
13.11.2019 08:53:42
Гораздо проще и эффективнее. Спасибо.
rom5jp 26.02.2018 13:19:30

Вот решение с 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

Источник

0
24.12.2016 23:03:24