Как использовать код Visual Studio в качестве редактора по умолчанию для Git


365

При использовании git в командной строке мне интересно, возможно ли использовать Visual Studio Code в качестве редактора по умолчанию, то есть при создании комментариев комитетов и при просмотре различий файла из командной строки.

Я понимаю, что это не будет возможно использовать его для выполнения слияний (по крайней мере, в минуту), но кто-нибудь знает, возможно ли использовать его для просмотра различий, и если да, то какие параметры командной строки потребуются в файл .gitconfig, чтобы это произошло?

ОБНОВЛЕНИЕ 1:

Я пробовал подход, аналогичный тому, что я делал для Notepad ++ в прошлом , т.е.

#!/bin/sh

"c:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"

И использовал:

#!/bin/sh

"C:\Users\gep13\AppData\Local\Code\app-0.1.0\Code.exe" "$*"

Но это приводит к сообщению об ошибке:

C:\temp\testrepo [master +1 ~0 -0]> git commit
[8660:0504/084217:ERROR:crash_reporter_win.cc(70)] Cannot initialize out-of-process crash handler
Aborting commit due to empty commit message.
C:\temp\testrepo [master +1 ~0 -0]>

Код открывается правильно, с ожидаемым содержимым, но он не ожидает ответа, т. Е. Нажимает кнопку «Сохранить» и закрывает окно, чтобы вернуться к запросу.

ОБНОВЛЕНИЕ 2:

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

https://twitter.com/IsidorN/status/595501573880553472

Если вы заинтересованы в добавлении этой функции, вы можете подумать о том, чтобы добавить свои голоса здесь:

http://visualstudio.uservoice.com/forums/293070-visual-studio-code/suggestions/7756482-support-git-configure-diff-and-merge-tools

ОБНОВЛЕНИЕ 3:

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

ОБНОВЛЕНИЕ 4:

Благодаря комментарию @ f-boucheros, приведенному ниже, я смог заставить VS Code работать в качестве редактора по умолчанию для комментариев коммитов, перебазирования и т. Д. Я все еще хотел бы посмотреть, возможно ли использовать его в качестве инструмента сравнения.

ОБНОВЛЕНИЕ 5:

Согласно принятому ответу на вопрос, это теперь возможно с использованием версии V1.0 кода.

Ответы:


674

В последнем выпуске (v1.0, выпущенном в марте 2016 года ) вы теперь можете использовать VS Code в качестве инструмента git commit / diff по умолчанию . Цитируется из документации:

  1. Убедитесь, что вы можете запустить code --helpиз командной строки, и вы получите помощь.

    • Если вы не видите справку, выполните следующие действия:

      • Mac: выберите команду «Shell»: установите команду «Code» в пути из палитры команд.

        • Палитра команд - это то, что появляется, когда вы нажимаете shift+ + Pвнутри кода VS. ( shift+ ctrl+ Pв Windows)
      • Windows: Убедитесь, что вы выбрали « Добавить в PATH» во время установки.
      • Linux: убедитесь, что вы установили код с помощью наших новых пакетов .deb или .rpm.
  2. Из командной строки запустите git config --global core.editor "code --wait"

Теперь вы можете запустить git config --global -eи использовать VS Code в качестве редактора для настройки Git. введите описание изображения здесь Добавьте следующее, чтобы включить поддержку использования VS Code в качестве инструмента сравнения:

[diff]
    tool = default-difftool
[difftool "default-difftool"]
    cmd = code --wait --diff $LOCAL $REMOTE

Это использует новую --diffопцию, которую вы можете передать VS Code для сравнения двух файлов рядом.

Подводя итог, вот несколько примеров, где вы можете использовать Git с VS Code:

  • git rebase HEAD~3 -i позволяет интерактивно перебазировать используя VS Code
  • git commit позволяет использовать VS Code для сообщения коммита
  • git add -pзатем eдля интерактивного добавления
  • git difftool <commit>^ <commit> позволяет использовать VS Code в качестве редактора изменений для изменений

84
Я также нашел, что добавление --new-windowк команде было полезным. Таким образом, операция git откроется в новом окне.
Джротелло

2
Когда мы говорим о командной строке, мы имеем в виду Ctrl+Shift+P? Мой не работает (нет в code --helpналичии), и я не понимаю, что означает: "Убедитесь, что вы выбрали Добавить в PATH во время установки" Что я должен сделать, чтобы проверить это? Может кто-нибудь, пожалуйста, помогите мне?
Паоло Фаломо,

2
Обратите внимание, что начиная с версии 1.1 вам нужно отключить «горячий выход» или не забудьте явно сохранить файл перед выходом из vscode, иначе git не увидит никаких изменений. Если вы предпочитаете получать напоминания о необходимости сохранения при выходе, вы можете отключить эту функцию, отредактировав свои пользовательские настройки: Вставьте "files.hotExit": "off"внизу своего
конфига

6
Мне пришлось использовать git config core.editor "code -n --wait"VS Code 1.17.2, работающий из внешней командной строки. И то codeи другое code --waitдало мне «Отмена коммита из-за пустого коммита».
Роберт Калхун

3
И слияние теперь доступно, а также: [merge] tool = vscode [mergetool "vscode"] cmd = code --wait $ MERGED
Стинг

31

Насколько я понимаю, VSCode больше нет в AppData.

Поэтому установите редактор git по умолчанию, выполнив эту команду в окне командной строки:

git config --global core.editor "'C:\Program Files (x86)\Microsoft VS Code\code.exe' -w"

Параметр -w, --waitчтобы ждать , пока окно будет закрыто , прежде чем вернуться. Код Visual Studio основан на редакторе Atom. если у вас также установлен атом, выполните командуatom --help . Вы увидите последний аргумент в справке подождать.

В следующий раз, когда вы это сделаете, git rebase -i HEAD~3появится Visual Studio Code. Как только VSCode закроется, Git вернет лидерство.

Примечание. Моя текущая версия VSCode - 0.9.2.

Я надеюсь, что это поможет.


Спасибо! Какое значение имеет -wи где вы нашли это документально?
Гэри Юэн Парк

1
Хорошая точка зрения. Это исходит от Атома -w для ожидания. Я отредактировал свой ответ.
Фрэнк Баучер

Я настроил это, и я счастлив сказать, что это работает. Если бы я мог заставить это работать сейчас, так как Visual Studio Code также выполняет проверку файлов, это было бы здорово! :-)
Гэри Юэн Парк

10
теперь это, похоже, больше не работает с последним обновлением VS Code. У тебя есть идеи? Спасибо!
Гэри Юэн Парк

2
@GaryEwanPark: Вам нужно запустить code.cmd (или код на * nix) из подкаталога bin , чтобы параметры командной строки работали. В идеале вы должны добавить подкаталог bin в переменную окружения% PATH% (инсталлятор сделает это и для вас) и настроить запуск редактора git config --global core.editor "code --wait".
Инспектируемый

13

Вам нужно использовать команду:

git config --global core.editor "'C:\Program Files\Microsoft VS Code\code.exe' -n -w"

Убедитесь, что вы можете запустить свой редактор из Git Bash

Если вы хотите использовать Code.exe с коротким путем, вы можете сделать это, добавив следующую строку в ваш .bash_profile:

alias vscode="C:/Program\ Files/Microsoft\ VS\ Code/Code.exe"

И теперь вы можете вызвать его, используя только vscodeкоманду (или как вы ее назвали)

Некоторая дополнительная информация:

Программа установки добавит код Visual Studio в ваш% PATH%, поэтому в консоли вы можете ввести «код», чтобы открыть VS Code в этой папке. Вам потребуется перезапустить консоль после установки, чтобы изменение переменной среды% PATH% вступило в силу.


1
-nэто сокращение от --new-windowgit, чтобы открыть новое окно редактора, и -wсокращение от --waitgit, чтобы вы снова закрыли окно. Это единственный ответ, который работает для меня, потому что я, если у меня уже есть открытый код VS --wait, не будет работать без --new-window.
Ян Огард

11

Еще одна полезная опция - установить EDITORпеременную окружения. Эта переменная окружения используется многими утилитами, чтобы узнать, какой редактор использовать. Git также использует его, если не core.editorустановлено.

Вы можете установить его для текущей сессии, используя:

export EDITOR="code --wait"

Таким образом, не только git, но и многие другие приложения будут использовать VS Code в качестве редактора.

Чтобы сделать это изменение постоянным, добавьте его к вашему ~/.profileпримеру. Смотрите этот вопрос для получения дополнительных возможностей.


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

  1. Когда вы работаете с локального терминала.
  2. Когда вы подключены через сессию SSH.

Это особенно полезно с VS Code (или любым другим редактором GUI), потому что он просто не работает без GUI.

В ОС Linux поместите это в свой ~/.profile:

# Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then # SSH mode
  export EDITOR='vim'
else # Local terminal mode
  export EDITOR='code -w'
fi

Таким образом, при использовании локального терминала $SSH_CONNECTIONпеременная среды будет пустой, поэтому code -wбудет использоваться редактор, но когда вы подключены через SSH, $SSH_CONNECTIONпеременная среды будет непустой строкой, поэтому vimбудет использоваться редактор. Это консольный редактор, поэтому он будет работать, даже если вы подключены через SSH.


2

Я открыл свой .gitconfigи поправил его:

[core]
    editor = 'C:/Users/miqid/AppData/Local/Code/app-0.1.0/Code.exe'

Это сделало это для меня (я на Windows 8).

Тем не менее, я заметил, что после того, как я попробовал произвольно, git commitчто в моей консоли Git Bash я вижу следующее сообщение:

[9168:0504/160114:INFO:renderer_main.cc(212)] Renderer process started

Не уверен, каковы могут быть последствия этого.


Я также пытался это сделать, однако, я получал строку 14 файла «fatal: bad config» в C: \ Users \ gep13 / .gitconfig », затем я заметил, что у меня есть обратные слеши, где у вас есть косые черты. Изменение этого раунда сделало его работоспособным, но, как и вы, я вижу вывод «Процесс рендерера запущен», который на самом деле выводит дважды для меня, а затем показывает: «[11956: 0504/091108: ОШИБКА: ipc_channel_win.cc (136)] pipe ошибка: 109 "но фиксация действительно сработала.
Гэри Юэн Парк

Ах, интересно. Похоже, что мое предложение работает только в том случае, если у вас есть полностью закрытый код (не очень удобно!) Перед выполнением фиксации. Я обнаружил ту же ошибку, о которой вы сообщили в своем обновлении, если открыт код.
miqh

действительно интересно. Я предполагаю, что именно здесь вступит в силу флаг -multiInst для Notepad ++. Интересно, есть ли что-то подобное для VSCode.
Гэри Юэн Парк

Только FYI, app-0.1.0/resources/app/env.jsкажется, содержит несколько флагов командной строки, которые принимает исполняемый файл Code. Никто не предполагает поведение , эквивалентный -multiInstхотя.
miqh

вам нужно добавить --waitфлаг, и этот --new-windowфлаг также настоятельно рекомендуется, чтобы коммит msg / diff / what не просто отображался как новая вкладка в уже открытом редакторе, требуя от вас закрытия файлов, которыми вы все еще можете быть работает над тем, чтобы дать сигнал git, что вы закончили редактирование.
Изохронный

1

GitPad устанавливает ваш текущий текстовый редактор в качестве редактора по умолчанию для Git.

Мой редактор по умолчанию для .txtфайлов в Windows 10 - это Visual Studio Code, и запуск GitPad однажды сделал его редактором по умолчанию для Git. Я не испытывал проблем, упомянутых в вопросе (в моем случае Git ждет, пока не закроется окно VS Code).

(Ссылка на .exeфайл не работает для меня, возможно, вам придется скомпилировать исходный код самостоятельно.)


На что вы указали в качестве редактора по умолчанию? Я пытался использовать то, что описано здесь: donovanbrown.com/post/2015/07/07/… Но это, похоже, не работает. На самом деле не хочу указывать на конкретный exe-файл, поскольку он будет меняться по мере обновления кода.
Гэри Юэн Парк

1
@Gary, я не должен указать конкретный файл, код был в списке , когда я Right click> Open with> Chose another app. Я ожидал, что он зарегистрирует себя при настройке (и обновит реестр при каждом обновлении, чтобы оболочка могла его найти), но я не смог найти ничего, кроме пункта контекстного меню «Открыть с кодом» в реестре. Так что у меня действительно нет более ясного ответа на это, извините.
Шафак Гюр

Хм, это странно, у меня нет кода в качестве записи в списке, который появляется, когда я это делаю.
Гэри Юэн Парк

1

Хорошие новости! На момент написания статьи эта функция уже была реализована в выпуске 0.10.12-инсайдеров и реализована через 0.10.14-инсайдеров . Следовательно, мы собираемся сделать это в следующей версии VS Code 1.0. .

Реализация Ref: Реализация -w / - ждать командной строки arg


Можете ли вы прокомментировать, как я смогу использовать средство просмотра различий в VSCode для просмотра различий в Git?
Гэри Юэн Парк

1

Просто хочу добавить эти обратные косые черты к предыдущим ответам, я нахожусь на Windows 10 CMD, и это не работает без обратной косой черты перед пробелами.

git config --global core.editor "C:\\Users\\your_user_name\\AppData\\Local\\Programs\\Microsoft\ VS\ Code\\Code.exe"

Я смог добавить с помощью: git config --global core.editor "'C: \ Users \ cbre_admin \ AppData \ Local \ Programs \ Microsoft VS Code \ Code.exe' -w"
rjt011000

0

Я не уверен, что вы можете сделать это, однако вы можете попробовать эти дополнения в вашем файле gitconfig.

Попробуйте заменить kdiff3 на эти значения, чтобы они указывали на исполняемый код Visual Studio.

[merge] tool = kdiff3 [mergetool "kdiff3"] path = C:/Program Files/KDiff3/kdiff3.exe keepBackup = false trustExitCode = false


Как я уже упоминал в своем вопросе, я не думаю, что слияние будет поддерживаться, так как я не думаю, что Visual Studio Code знает, как это сделать, я подозреваю, что он сможет выполнять только diff и фиксировать сообщения.
Гэри Юэн Парк

0

Я установил Visual Studio Code по умолчанию для открытия .txt файла. И затем я сделал команду использовать простой: git config --global core.editor "'C:\Users\UserName\AppData\Local\Code\app-0.7.10\Code.exe\'". И все работает довольно хорошо.


0

Запустите эту команду в приложении Mac Terminal

git config --global core.editor "/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code"

2
Это не совсем работает, так как вы получаете сообщение об ошибке: «Отмена фиксации из-за пустого сообщения фиксации». Необходимо будет добавить флаг ожидания. Например - ждать.
Belfield

0

на Windows 10 с использованием 64-битной версии инсайдеров команда должна быть:

git config --global core.editor "'C: \ Program Files \ Microsoft VS Code Insiders \ bin \ code-insiders.cmd'"

Вы также можете переименовать «code-insiders.cmd» в «code.cmd» в каталоге «Program Files», таким образом, теперь вы можете использовать команду «code». начать редактирование файлов на. каталог

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.