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

Я бы предложил использовать твердую библиотеку с открытым исходным кодом в качестве http-клиента. Если вы посмотрите на http client от ASF, вы найдете жизнь намного проще. Это простой в использовании, масштабируемый и надежный клиент для http.

536
задан Steven Penny 24 December 2016 в 17:26
поделиться

13 ответов

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

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

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

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

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

См. commit abfb04d (07 декабря 2017 г.) и commit a64f213 (29 ноября 2017 г.) автора Lars Schneider ( larsxschneider ) .
При поддержке: Хунио С. Хамано ( Гитстер ) .
(Объединено Хунио С. Хамано - Гитстер - в commit 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"

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


Реальным решением (со сценарием) было осознать, что:
то, на что вы ссылаетесь в конфигурационном файле фактически находится сценарий оболочки ( / bin / sh ) , Команды бота вызовут новый экземпляр notepad ++ (отсюда опция -multiInst ') и будут ждать закрытия этого экземпляра, прежде чем продолжить.

Обратите внимание, что я использую только' / ', а не \ ». И я установил msysgit, используя вариант 2. (Добавьте каталог git \ bin в переменную среды PATH , но не переопределяя некоторые встроенные инструменты Windows)

Тот факт, что оболочка notepad ++ называется .bat, не является важно.

549
ответ дан 22 November 2019 в 22:20
поделиться

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

>echo %EDITOR%

c:\Vim\Vim71\vim.exe
5
ответ дан Matt McMinn 24 December 2016 в 17:26
поделиться

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

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

git commit -m "Fixed the LoadAll method"

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

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

2
ответ дан kenorb 24 December 2016 в 17:26
поделиться

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

проблема Вы встречаетесь, Блокнот использования ++ связан с тем, как мерзавец запускает исполняемый файл редактора. Мое решение этого состоит в том, чтобы установить РЕДАКТОРА на пакетный файл, а не фактический исполняемый файл редактора, который делает следующее:

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

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

c:\src>echo %EDITOR%
c:\tools\runeditor.bat
15
ответ дан Patrick Johnmeyer 24 December 2016 в 17:26
поделиться

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

2
ответ дан 22 November 2019 в 22:20
поделиться

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

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

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

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

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

50
ответ дан 22 November 2019 в 22:20
поделиться

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

export EDITOR="emacs -nw"

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

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

3
ответ дан 22 November 2019 в 22:20
поделиться

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

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

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

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

Это позволяет мне редактировать файлы из командной строки с помощью ec , а установка VISUAL означает, что большинство unix-программ также подхватывают его. Git, похоже, ищет путь иначе, чем другие мои команды - когда я посмотрел на git commit в Process Monitor , я увидел, что он просматривает каждую папку на пути для ec и для ec.exe , но не для ec.bat .

1
ответ дан 22 November 2019 в 22:20
поделиться

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

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

288
ответ дан 22 November 2019 в 22:20
поделиться

Я также использую 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 передает путь к файлу с пробелами.

9
ответ дан 22 November 2019 в 22:20
поделиться

У меня 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 
     # Открыть новый экземпляр 
     
    function doUnix () {{ {1}} "c: \ program files \ notepad ++ \ notepad ++. Exe" -multiInst -nosession -notabbar $ * 
    exit 
    } 
     
    doUnix $ * 
     
    : WINCALL 
     "c: \ program files \ notepad ++ \ notepad ++. Exe" -multiInst -nosession -notabbar% * 
     
  2. Установить глобальное ядро .editor variable

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

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

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

4
ответ дан 22 November 2019 в 22:20
поделиться

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

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

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

2
ответ дан 22 November 2019 в 22:20
поделиться

WordPad!

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

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

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

11
ответ дан 22 November 2019 в 22:20
поделиться