Як використовувати Visual Studio Code як редактор за замовчуванням для Git


364

Під час використання git у командному рядку мені цікаво, чи можна використовувати Visual Studio Code як редактор за замовчуванням, тобто під час створення коментарів для фіксації та перегляду розрізнення файлу з командного рядка.

Я розумію, що використовувати його для злиття неможливо (принаймні в хвилину), але хтось знає, чи можна використовувати його для перегляду diff, і якщо так, то які параметри командного рядка будуть потрібні в файл .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 працювати в якості редактора за замовчуванням для коментарів комісій, перезавантаження і т. Д. Я все одно хотів би дізнатися, чи можна використовувати його і як інструмент diff.

ОНОВЛЕННЯ 5:

Відповідно до прийнятої відповіді на питання, тепер це можливо за допомогою випуску коду V1.0.

Відповіді:


673

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

  1. Переконайтеся, що ви можете запустити code --helpз командного рядка, і ви отримаєте допомогу.

    • якщо ви не бачите допомоги, виконайте наступні дії:

      • Mac: Виберіть команду Shell Command: Встановіть команду '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 як розрізного інструменту:

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

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

Підводячи підсумок, ось кілька прикладів того, як можна використовувати Git з кодом VS:

  • git rebase HEAD~3 -i дозволяє здійснювати інтерактивну базу даних за допомогою коду VS
  • git commit дозволяє використовувати VS-код для повідомлення фіксації
  • git add -pДалі слід eінтерактивне додати
  • git difftool <commit>^ <commit> дозволяє використовувати код VS як редактор розрізнень для змін

84
Я також виявив, що додавання --new-windowдо команди є корисним. Таким чином операція git відкриється у новому вікні.
jrotello

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

2
Зауважте, що з v1.1 вам потрібно відключити "гарячий вихід" або пам'ятати, щоб явно зберегти файл до виходу з vscode, інакше git не побачить жодних змін. Якщо ви хочете, щоб вас нагадували про збереження на виході, ви можете відключити цю функцію, відредагувавши налаштування користувача: Вставити "files.hotExit": "off"внизу конфігурації
Jack Ukleja

6
Мені довелося використовувати git config core.editor "code -n --wait"з VS Code 1.17.2, що працює із зовнішнього командного рядка. І те, codeі code --waitмені дісталося "Переривання комітету через порожнє повідомлення про вчинення".
Роберт Калхун

3
І злиття тепер доступний як: [] злиття інструменту = vscode [mergetool "vscode"] CMD = код --wait $ MERGED
Sting

31

Як я розумію, VSCode вже не в AppData.

Тому встановіть редактор git за замовчуванням, виконавши цю команду у вікні командного рядка:

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

Параметр -w, --waitщоб чекати , поки вікно буде закрито , перш ніж повернутися. Visual Studio Code базується на Atom Editor. якщо у вас також встановлений атом, виконайте командуatom --help . Ви побачите останній аргумент у довідці - зачекайте.

Наступного разу, коли ви зробите це git rebase -i HEAD~3 це, з'явиться Visual Studio Code. Як тільки VSCode закриється, Git знову відіграє лідерство.

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

Я сподіваюся, що допоможе.


Дякую! Яке значення має -wі де ви знайшли це документально?
Gary Ewan Park

1
Гарна думка. Він іде від Atom -w для Wait. Я відредагував свою відповідь.
Френк Бучер

Я це налаштував, і я радий сказати, що це працює. Якби я міг змусити це працювати зараз як Visual Studio Code, роблячи різні файли, це було б чудово! :-)
Парк Gary Ewan

10
тепер, здається, більше не працює з останнім оновленням коду VS. У вас є ідеї? Дякую!
Gary Ewan Park

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 Code до вашого% PATH%, тому на консолі ви можете ввести "code", щоб відкрити VS-код у цій папці. Вам потрібно буде перезапустити консоль після встановлення, щоб зміни на зміну середовища PATH% набули чинності.


1
-nкороткий для того, --new-windowщоб git відкривав нове вікно редактора, і -wкороткий для --wait, змушує git чекати, коли ви знову закриєте вікно. Це єдина відповідь, яка працює для мене, тому що я, якщо у мене вже відкритий код VS --wait, не працюватиме без цього --new-window.
Ян Агаард

11

Ще один корисний варіант - встановити EDITORзмінну середовища. Ця змінна середовище використовується багатьма утилітами, щоб знати, яким редактором користуватися. Git також використовує його, якщо ніcore.editor встановлено .

Ви можете встановити його для поточного сеансу, використовуючи:

export EDITOR="code --wait"

Цей спосіб не тільки git , але і багато інших додатків використовуватимуть код VS в якості редактора.

Щоб зробити цю зміну постійною, додайте її до ~/.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 в C: \ Users \ gep13 / .gitconfig", то я помітив, що у мене є зворотні косої риси, де у вас є косої риски вперед. Змінення цих раундів змусило його працювати, але, як і ви, я бачу вихід "Процес рендерінга", який фактично виводиться для мене двічі, а потім показує: "[11956: 0504/091108: ПОМИЛКА: ipc_channel_win.cc (136)] труба помилка: 109 ", але фіксація, здається, справді спрацювала.
Парк Gary Ewan

Ах, цікаво. Здається, що моя пропозиція працює лише в тому випадку, якщо ви повністю закрили код (не дуже зручно!) Перед тим, як взяти на себе зобов’язання. У разі оновлення коду я зіткнувся з тією ж помилкою, про яку ви повідомили під час оновлення.
miqh

дійсно цікаво. Я думаю, що саме тут зіграє прапор -multiInst для Notepad ++. Цікаво, чи є щось подібне для VSCode.
Парк Гері Евана

app-0.1.0/resources/app/env.jsЗдається , що FYI містить декілька прапорів командного рядка, які приймає виконуваний код. Жоден не припускає поведінки, еквівалентної поведінці -multiInst.
miqh

вам потрібно додати --waitпрапор, і --new-windowпрапор також настійно рекомендується, щоб msg / diff / не тільки відображався як нова вкладка у вже відкритому редакторі, вимагаючи закрити файли, які ви все ще можете бути працюю над тим, щоб сигналізувати 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. Я б очікував, що він зареєструє себе під час налаштування (і оновить реєстр з кожним оновленням, щоб оболонка могла його знайти), але я не зміг знайти нічого іншого, крім пункту контекстного меню "Відкрити кодом". Так що я справді не маю чіткішої відповіді на це, вибачте.
Şafak Gür

Гм, це дивно, у мене немає коду як списку, який з’являється, коли я це роблю.
Gary Ewan Park

1

Хороші новини! На момент написання цієї функції ця функція вже була реалізована у випуску інсайдерів 0.10.12 та здійснена через 0.10.14-інсайдерів . Отже, ми матимемо це у наступній версії 1.0 випуску коду VS .

Посилання на реалізацію: Реалізація -w / - аргумент командного рядка arg


Ви можете прокоментувати, як я міг би використовувати переглядач diff у VSCode для перегляду diff у git?
Парк Gary Ewan

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 з цих значень, щоб вказати на виконуваний візуальний код студії.

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


Як я вже згадував у своєму запитанні, я не думаю, що злиття буде підтримуватися, оскільки я не думаю, що Visual Studio Code знає, як це зробити, я підозрюю, що він зможе робити лише розмінність і виконувати обмін повідомленнями.
Парк Gary Ewan

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
Це не спрацьовує, оскільки ви отримуєте повідомлення про помилку: Скасування фіксації через порожнє повідомлення про фіксацію. Потрібно буде додати прапор очікування. Наприклад - чекай.
Белфілд

0

у Windows 10 за допомогою 64-бітного інсайдерського видання командою має бути:

git config --global core.editor "'C: \ Програмні файли \ Insiders коду Microsoft VS \ bin \ code-insiders.cmd'"

ви також можете перейменувати 'code-insiders.cmd' у 'code.cmd' у каталозі 'Файли програм', таким чином тепер ви можете використовувати команду 'code'. почати редагувати файли на. каталог

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.