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

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

Терминал немой, но нет VISUAL и РЕДАКЦИЯ определена. Пожалуйста, поставьте сообщение с использованием опции -m или -F.

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

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

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

+452
источник поделиться
31 ответ
  • 1
  • 2

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

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

Конфигурируя git config core.editor notepad, пользователи теперь могут использовать notepad.exe в качестве своего редактора по умолчанию.
Конфигурирование git config format.commitMessageColumns 72 будет подхвачено оболочкой блокнота и обматывает сообщение об окончании после того, как пользователь отредактирует его.

См. commit 69b301b Йоханнес Шинделин (dscho).


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

Я только что протестировал его с помощью 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, script с "start /WAIT..." в нем не работает, а только открывает новое окно DOS)


Bennett answer упоминает о возможности избежать добавления script, но напрямую ссылаться на самую программу между простыми кавычками:

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"

Но я предпочитаю использовать script (см. ниже): таким образом я могу играть с разными путями или разными опциями, не регистрируясь снова git config.


Фактическое решение (с script) состояло в том, чтобы понять, что:
то, что вы называете в конфигурационном файле, на самом деле является оболочкой (/bin/sh) script, а не DOS script.

Итак, что работает:

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.
Команды Bot вызовут новый экземпляр 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 ++ открывает файл temp commit, а не пустой новый.

+446
источник

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

В 32-разрядной ОС: 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"

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

Работает как прелесть для меня.

+237
источник
другие ответы

Связанные вопросы


Похожие вопросы

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

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

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

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

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

+44
источник

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

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

  • Запустите это: 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, они являются нормальными косыми чертами.

+23
источник

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

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

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

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

c:\src>echo %EDITOR%
c:\tools\runeditor.bat
+13
источник

Wordpad!

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

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

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

+10
источник

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

Чтобы выполнить эту работу, я сделал следующее:

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

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

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

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

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

+9
источник

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

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

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

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

Флаг </новый "был ключом в моем случае...

#!/bin/sh
"C:/Program Files/JGsoft/EditPadPro6/EditPadPro.exe" //newinstance "$*"
+8
источник

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

>echo %EDITOR%

c:\Vim\Vim71\vim.exe
+6
источник

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

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

export TERM=msys

Вы можете сделать это из приглашения Git BASH следующим образом:

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

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

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

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

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

+6
источник

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

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

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

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

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

+4
источник

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

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

git config --global core.editor giteditor

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

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

+4
источник

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

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

git commit -m "Fixed the LoadAll method"

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

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

+3
источник

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

export EDITOR="emacs -nw"

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

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

+3
источник

Это моя настройка для использования 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
источник

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

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

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

+3
источник

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

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

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

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

который откроет окно Atom или VSCode, через которое вы сможете совершить,

или для Sublime

git config --global core.editor "subl -n -w"
+3
источник

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

+2
источник

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

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

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

+2
источник

Измените файл .gitconfig в папке c:\Users\YourUser и добавьте:

[core]
editor = 'C:\\Program files\\path\\to\\editor.exe'
+2
источник

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

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), и все было в порядке.

+1
источник

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

EDITOR="c:/Program Files (x86)/Notepad++/notepad++.exe"
+1
источник

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

git config --global core.editor vim

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

+1
источник

Это работает для Powershell и cmder-1.2 (при использовании с powershell). В ~/.gitconfig

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

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

+1
источник

Воскрешая старую нить, но я нашел aa красиво простое решение, размещенное здесь - хотя может быть ошибка в путь, в котором вам нужно скопировать файл "subl", предоставленный автором. Я запускаю Win 7 x64, и мне пришлось поместить файл подрезов в мою папку /Git/cmd/, чтобы он работал. Это работает как шарм.

+1
источник

ATOM и Windows 10

  • Щелкните правой кнопкой мыши значок Atom на рабочем столе и нажмите на свойства.
  • Скопирован путь "Начать вход"
  • Посмотрел там с помощью проводника Windows и нашел "atom.exe".
  • Набрал это в git bash:

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

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

+1
источник

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

#!/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";

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

0
источник

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

~/.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
источник

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

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

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

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

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

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'

Источник

0
источник

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

-1
источник
  • 1
  • 2

Посмотрите другие вопросы по меткам или Задайте вопрос