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

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

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

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

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

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

30 ответов


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

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

настройки git config core.editor notepad пользователи теперь можете использовать notepad.exe в качестве редактора по умолчанию.
Настройка git config format.commitMessageColumns 72 будет подобран оберткой блокнота и line-wrap сообщение фиксации после его редактирования пользователем.

посмотреть совершить 69b301b by Иоганнес Schindelin (dscho).

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

посмотреть совершить abfb04d (07 Дек 2017), и совершить a64f213 (29 ноя 2017) by Ларс Шнайдер (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

предпочитаю не нужно установить переменную редактора, поэтому я попытался:

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" %*'.

если я определяю АЭС.летучая мышь, в том числе:

"c:\Program Files\Notepad++\notepad++.exe" %*

и я типа:

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

он просто работает с сеанса DOS,но не из оболочки git.
(не то, что с ядром.редактор механизма настройки, скрипт с "start /WAIT..." в это не сработает, а только откроет новое окно DOS)


Беннет!--39--> упоминает возможность избежать добавления скрипта, но ссылаться непосредственно на саму программу между простой кавычки. Обратите внимание на направление косых черт! Использовать / не \ для разделения папок в пути!

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' option) и дождитесь, пока этот экземпляр будет закрыт, прежде чем продолжить.

обратите внимание, что я использую только '/', а не \'. И Я установлен msysgit с помощью опции 2. (добавить до PATH переменная окружения, но без переопределения некоторых встроенных инструментов windows)

тот факт, что вызывается оболочка notepad++.летучая мышь не важна.
Лучше назвать его по имени .npp.sh - и положить его в...!--32--> каталог, Хотя (или в любом каталоге, на который ссылается переменная среды PATH).


Читайте также:


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

для тех, у кого есть проблема, когда N++ просто открывает пустой файл, и git не принимает ваше сообщение фиксации, см."прерывание фиксации из-за пустого сообщения": изменить .bat или сказать:

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

это скажет notepad++, чтобы открыть временную фиксацию файл, а не пустой новый.


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

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


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

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

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

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

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


Edit: после обновления в 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 '%*'"

один gotcha, который занял у меня некоторое время, это не обратные косые черты в стиле Windows, это обычные косые черты.


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

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

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

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

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

Wordpad!

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

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

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


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

чтобы сделать эту работу, я сделал следующее:

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

С этим сделать, git commit, etc. правильно вызовет gvim выполнимый.

Примечание 1:--nofork опция для gvim гарантирует, что она блокирует, пока сообщение фиксации не будет написано.

примечание 2: кавычки вокруг пути к gvim требуется, если у вас есть пробелы в пути.

Примечание 3: кавычки вокруг "% * " необходимы на случай, если git передает путь к файлу с пробелами.


спасибо сообществу SO ... и небольшое исследование я смог получить мой любимый редактор,EditPadPro, для работы в качестве основного редактора с msysgit 1.7.5.GIT и TortoiseGit v1.7.3.0 над WinXP SP3 ...

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

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

однако после нескольких неудачных попыток вышеупомянутых решений ... Я наконец-то смог заставить это работать. За Документация EditPadPro, добавление флага "/ newinstance " позволит оболочке ждать ввода редактора ....

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

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

В Vim/GVim Выступает работает хорошо для меня.

>echo %EDITOR%

c:\Vim\Vim71\vim.exe

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

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

export TERM=msys

вы можете сделать это из подсказки Git BASH так:

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

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

контроль Панель / Система / Расширенная/Окружающая Среда Переменная... (или подобное, в зависимости от ваша версия Windows) где установлены переменные среды sticky в Windows. По умолчанию TERM не является набор. Если термин установлен там, то вы (или одна из программ, которые у вас есть установлено, например. Клубника на Perl) имеет установить ее. Удалите этот параметр, и вы должны быть хорошо.

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

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


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

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

и аналогично для VSCode

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

, который откроет Атом или VSCode окно для вас, чтобы совершить через

или возвышенное

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

У меня был PortableGit 1.6, работающий нормально, но после обновления до PortableGit - 1.7 Windows release возникли проблемы. Некоторые из команд git открывают Notepad++.exe хорошо, но некоторые не делают, особенно git rebase ведет себя по-разному.

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

1) Создайте скрипт для запуска соответствующий текстовый редактор. Скрипт выглядит странно, но обрабатывает как Windows, так и Unix. c:/PortableGit/cmd/git-editor.летучая мышь!--10-->

#!/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) Установите глобальное ядро.переменная редактора Сценарий был сохранен в папке git / cmd, поэтому его уже в пути gitconsole, это обязательно, так как полный путь может работать неправильно.

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

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


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

Я редактор to giteditor

git config --global core.editor giteditor

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

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


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

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

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


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

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

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

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

со следующим содержанием в geany.летучая мышь :

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

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


мне было трудно заставить git сотрудничать с wordpad, KomodoEdit и почти каждым другим редактором, который я ему даю. Большинство открыто для редактирования, но git явно не ждет сохранения/закрытия.

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

git commit -m "Fixed the LoadAll method"

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

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


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

export EDITOR="emacs -nw"

на -nw на no-windows, т. е. скажите Emacs не пытаться использовать X11.

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


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


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

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

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


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

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

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

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

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


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

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

Я использую 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", данный автором. Я запускаю Win 7 x64, и мне пришлось поместить файл "subl" в мой чтобы заставить его работать. Хотя это работает как шарм.


ATOM и Windows 10

  1. щелкните правой кнопкой мыши значок Atom на рабочем столе и выберите Свойства.
  2. скопировал "Start in" путь к местоположению
  3. посмотрел туда с проводником windows и нашел "atom.исполняемый."
  4. набрал это в Git bash:

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

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

atom-editor git git-bash windows-10


при использовании удаленного homedrive (Samba share, nfs,...) ваш ~/.git папка является общей acros всех систем, которые могут привести к нескольким проблемам. Таким образом, я предпочитаю скрипт для определения правильного редактора для правильной системы:

#!/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, поскольку perl поставляется с msysgit и ваши unixoid-системы также предоставят его. Ввод скрипта в /home/username/bin, который следует добавить в PATH на .bashrc или .profile. Однажды добавлено с git config --global core.editor giteditor.pl у вас есть правильный редактор, где бы вы ни находились.


это работает для меня, используя 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 `"

вот решение с 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 позволяет скрипту работать с хаб команды

источник


Я просто использовать TortoiseGit прямо из коробки. Прекрасно интегрируется с моими открытыми ключами PuTTY. Имеет идеальный редактор для фиксации сообщений.