Cách sử dụng Visual Studio Code làm Trình chỉnh sửa mặc định cho Git


365

Khi sử dụng git tại dòng lệnh, tôi tự hỏi liệu có thể sử dụng Visual Studio Code làm trình chỉnh sửa mặc định hay không, tức là khi tạo các bình luận cam kết và xem xét một khác biệt của một tệp từ dòng lệnh.

Tôi hiểu rằng sẽ không thể sử dụng nó để thực hiện hợp nhất (ít nhất là vào lúc này) nhưng có ai biết liệu có thể sử dụng nó để xem diff không, và nếu vậy, các tùy chọn dòng lệnh nào sẽ được yêu cầu trong tập tin .gitconfig để thực hiện điều này?

CẬP NHẬT 1:

Tôi đã thử một cách tiếp cận tương tự như những gì tôi đã làm cho Notepad ++ trong quá khứ , tức là

#!/bin/sh

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

Và được sử dụng:

#!/bin/sh

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

Nhưng điều này dẫn đến một thông báo lỗi:

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]>

Mã mở ra một cách chính xác, với nội dung dự kiến, nhưng nó không chờ phản hồi, tức là nhấp vào lưu và đóng cửa sổ để trở về dấu nhắc.

CẬP NHẬT 2:

Tôi vừa nghe lại từ một trong những nhà phát triển làm việc trên VSCode. Có vẻ như chức năng này hiện không được hỗ trợ :-(

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

Nếu bạn muốn thấy tính năng này được thêm vào, bạn có thể muốn nghĩ về việc thêm phiếu bầu của mình tại đây:

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

CẬP NHẬT 3:

Tôi đã được thông báo một cách đáng tin cậy rằng tính năng này đã được nhóm VSCode chọn, vì vậy tôi đang mong chờ một bản phát hành trong tương lai sẽ bao gồm nó.

CẬP NHẬT 4:

Nhờ bình luận @ f-boucheros bên dưới, tôi đã có thể khiến VS Code hoạt động như trình chỉnh sửa mặc định để nhận xét, phản hồi, v.v. Tôi vẫn muốn xem liệu có thể sử dụng nó làm công cụ tìm khác không.

CẬP NHẬT 5:

Theo câu trả lời được chấp nhận cho câu hỏi, giờ đây có thể sử dụng bản phát hành mã v1.0.

Câu trả lời:


674

Trong bản phát hành gần đây nhất (v1.0, phát hành vào tháng 3 năm 2016 ), giờ đây bạn có thể sử dụng VS Code làm công cụ git commit / diff mặc định . Trích dẫn từ các tài liệu:

  1. Hãy chắc chắn rằng bạn có thể chạy code --helptừ dòng lệnh và bạn sẽ nhận được sự giúp đỡ.

    • nếu bạn không thấy trợ giúp, vui lòng làm theo các bước sau:

      • Mac: Chọn Lệnh Shell: Cài đặt lệnh 'Code' trong đường dẫn từ Bảng lệnh.

        • Bảng màu lệnh là những gì bật lên khi bạn nhấn shift+ + Ptrong khi bên trong Mã VS. ( shift+ ctrl+ Ptrong Windows)
      • Windows: Đảm bảo bạn đã chọn Thêm vào PATH trong khi cài đặt.
      • Linux: Đảm bảo bạn đã cài đặt Mã thông qua các gói .deb hoặc .rpm mới của chúng tôi.
  2. Từ dòng lệnh, chạy git config --global core.editor "code --wait"

Bây giờ bạn có thể chạy git config --global -evà sử dụng VS Code làm trình chỉnh sửa để định cấu hình Git. nhập mô tả hình ảnh ở đây Thêm vào đây để cho phép hỗ trợ sử dụng VS Code làm công cụ tìm khác biệt:

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

Điều này tận dụng --difftùy chọn mới mà bạn có thể chuyển đến Mã VS để so sánh hai tệp cạnh nhau.

Tóm lại, đây là một số ví dụ về nơi bạn có thể sử dụng Git với Mã VS:

  • git rebase HEAD~3 -i cho phép rebase tương tác bằng cách sử dụng mã VS
  • git commit cho phép sử dụng Mã VS cho thông điệp cam kết
  • git add -p theo dõi bởi e thêm tương tác
  • git difftool <commit>^ <commit> cho phép sử dụng VS Code làm trình chỉnh sửa diff để thay đổi

84
Tôi cũng tìm thấy addinng --new-windowcho lệnh là hữu ích. Bằng cách này, thao tác git sẽ mở trong một cửa sổ mới.
jrotello

2
Khi chúng ta nói về dòng lệnh chúng ta có nghĩa là Ctrl+Shift+Pgì? Của tôi không hoạt động (không code --helpcó sẵn) và tôi không hiểu nghĩa là gì: "Hãy chắc chắn rằng bạn đã chọn Thêm vào PATH trong khi cài đặt" Tôi nên làm gì để kiểm tra nó? Ai đó có thể vui lòng giúp tôi?
Paolo Falomo

2
Lưu ý kể từ v1.1, bạn cần tắt "thoát nóng" hoặc nhớ lưu tệp một cách rõ ràng trước khi thoát vscode nếu không git sẽ không thấy bất kỳ thay đổi nào. Nếu bạn muốn được nhắc lưu khi thoát, bạn có thể tắt tính năng này bằng cách chỉnh sửa cài đặt người dùng của mình: Chèn "files.hotExit": "off"ở dưới cùng cấu hình của bạn
Jack Ukleja

6
Tôi đã phải sử dụng git config core.editor "code -n --wait"với Mã VS 1.17.2, chạy từ dòng lệnh bên ngoài. Cả hai codecode --waitđã cho tôi "Hủy bỏ cam kết do thông báo cam kết trống."
Robert Calhoun

3
Và hợp nhất hiện có sẵn cũng như: [merge] tool = vscode [mergetool "vscode"] cmd = code - đang chờ $ MERGED
Sting

31

Đối với những gì tôi hiểu, VSCode không còn trong AppData nữa.

Vì vậy, Đặt trình soạn thảo git mặc định bằng cách thực hiện lệnh đó trong cửa sổ nhắc lệnh:

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

Tham số -w, --waitlà đợi cho cửa sổ được đóng trước khi quay lại. Visual Studio Code dựa trên Atom Editor. nếu bạn cũng đã cài đặt nguyên tử, hãy thực hiện lệnhatom --help . Bạn sẽ thấy đối số cuối cùng trong trợ giúp là chờ đợi.

Lần tới khi bạn làm git rebase -i HEAD~3nó sẽ bật lên Visual Studio Code. Khi VSCode đóng, Git sẽ lấy lại vị trí dẫn đầu.

Lưu ý: Phiên bản hiện tại của VSCode của tôi là 0.9.2

Tôi hy vọng sự giúp đỡ đó.


Cảm ơn! Tầm quan trọng của -wvà nơi bạn tìm thấy tài liệu đó là gì?
Công viên Gary Ewan

1
Điểm tốt. Nó đến từ Atom -w là dành cho Chờ đợi. Tôi chỉnh sửa câu trả lời của tôi.
Frank Boucher

Tôi đã thiết lập điều này, và tôi rất vui khi nói rằng nó đang hoạt động. Nếu tôi có thể làm điều này hoạt động ngay bây giờ vì Visual Studio Code cũng đang thực hiện phân tán các tệp, điều đó sẽ rất tuyệt! :-)
Công viên Gary Ewan

10
điều này dường như không còn hoạt động với bản cập nhật mới nhất cho VS Code. Bạn có bất cứ ý tưởng? Cảm ơn!
Công viên Gary Ewan

2
@GaryEwanPark: Bạn cần khởi chạy code.cmd (hoặc trên * nix) từ thư mục con bin thay thế, để các tùy chọn dòng lệnh hoạt động. Lý tưởng nhất là bạn sẽ thêm thư mục con bin vào biến môi trường% PATH% của bạn (trình cài đặt cũng làm điều đó cho bạn) và cấu hình trình soạn thảo đang chạy git config --global core.editor "code --wait".
IInspectable

13

Bạn cần sử dụng lệnh:

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

Hãy chắc chắn rằng bạn có thể bắt đầu trình soạn thảo của mình từ Git Bash

Nếu bạn muốn sử dụng Code.exe với đường dẫn ngắn, bạn có thể thực hiện việc này bằng cách thêm dòng sau vào .bash_profile:

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

Và bây giờ, bạn có thể gọi nó bằng cách sử dụng vscodelệnh duy nhất (hoặc bất cứ điều gì bạn đặt tên cho nó)

Một số thông tin bổ sung:

Thiết lập sẽ thêm Visual Studio Code vào% PATH% của bạn, vì vậy từ bảng điều khiển, bạn có thể nhập 'code' để mở Mã VS trên thư mục đó. Bạn sẽ cần phải khởi động lại bàn điều khiển của mình sau khi cài đặt để thay đổi biến môi trường% PATH% để có hiệu lực.


1
-nlà viết tắt của --new-windowgit để mở một cửa sổ soạn thảo mới và -wviết tắt là --waitgit chờ bạn đóng cửa sổ lại. Đây là câu trả lời duy nhất phù hợp với tôi, vì tôi nếu tôi đã mở Mã VS --waitsẽ không hoạt động --new-window.
Jan Aagaard

11

Một tùy chọn hữu ích khác là đặt EDITORbiến môi trường. Biến môi trường này được sử dụng bởi nhiều tiện ích để biết nên sử dụng trình soạn thảo nào. Git cũng sử dụng nó nếu không core.editorđược thiết lập.

Bạn có thể đặt nó cho phiên hiện tại bằng cách sử dụng:

export EDITOR="code --wait"

Cách này không chỉ git, mà nhiều ứng dụng khác sẽ sử dụng VS Code làm trình chỉnh sửa.

Để thay đổi này vĩnh viễn, hãy thêm nó vào ~/.profileví dụ của bạn . Xem câu hỏi này để có thêm lựa chọn.


Một ưu điểm khác của phương pháp này là bạn có thể đặt các trình soạn thảo khác nhau cho các trường hợp khác nhau:

  1. Khi bạn làm việc từ thiết bị đầu cuối địa phương.
  2. Khi bạn được kết nối thông qua phiên SSH.

Điều này đặc biệt hữu ích với Mã VS (hoặc bất kỳ trình soạn thảo GUI nào khác) vì nó không hoạt động mà không có GUI.

Trên hệ điều hành Linux, hãy đặt cái này vào ~/.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

Theo cách này khi bạn sử dụng thiết bị đầu cuối cục bộ, $SSH_CONNECTIONbiến môi trường sẽ trống, do đó code -wtrình chỉnh sửa sẽ được sử dụng, nhưng khi bạn được kết nối qua SSH, thì $SSH_CONNECTIONbiến môi trường sẽ là một chuỗi không trống, do đó vimtrình soạn thảo sẽ được sử dụng. Nó là trình soạn thảo giao diện điều khiển, vì vậy nó sẽ hoạt động ngay cả khi bạn được kết nối thông qua SSH.


2

Tôi đã mở .gitconfigvà sửa đổi nó bằng:

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

Điều đó đã làm điều đó cho tôi (Tôi đang dùng Windows 8).

Tuy nhiên, tôi nhận thấy rằng sau khi tôi thử tùy ý git commitrằng trong bảng điều khiển Git Bash của tôi, tôi thấy thông báo sau:

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

Không chắc chắn về sự phân nhánh của điều này có thể là gì.


Tôi cũng đã thử điều đó, tuy nhiên, tôi đã nhận được dòng "tập tin cấu hình xấu 14" trong C: \ Users \ gep13 / .gitconfig "sau đó tôi nhận thấy tôi có dấu gạch chéo ngược, nơi bạn có dấu gạch chéo về phía trước. Việc thay đổi các vòng đó đã khiến nó hoạt động, nhưng giống như bạn, tôi đang thấy đầu ra "Quá trình kết xuất bắt đầu", thực sự xuất ra hai lần cho tôi và sau đó hiển thị: "[11956: 0504/091108: ERROR: ipc_channel_win.cc (136)] lỗi: 109 "nhưng cam kết thực sự có vẻ đã hoạt động.
Công viên Gary Ewan

À, thật thú vị. Có vẻ như đề xuất của tôi chỉ hoạt động nếu bạn đã đóng Mã hoàn toàn (không thuận tiện lắm!) Trước khi thực hiện cam kết. Tôi gặp lỗi tương tự mà bạn đã báo cáo trong bản cập nhật của mình nếu Mã được mở.
miqh

thực sự thú vị Tôi đoán đó là nơi cờ -multiInst cho Notepad ++ sẽ xuất hiện. Tôi tự hỏi nếu có một cái gì đó tương tự cho VSCode.
Công viên Gary Ewan

Chỉ cần FYI, app-0.1.0/resources/app/env.jsdường như chứa một vài cờ dòng lệnh mà Mã thực thi thực hiện. Không có đề xuất hành vi tương đương với hành vi của-multiInst mặc dù.
miqh

bạn cần thêm --waitcờ và --new-windowcờ cũng được khuyến nghị cao, để thông điệp cam kết / diff / bất cứ điều gì không hiển thị dưới dạng tab mới trong trình chỉnh sửa đã mở, yêu cầu bạn đóng các tệp bạn vẫn có thể làm việc để báo hiệu git mà bạn đã chỉnh sửa xong.
bộ

1

GitPad đặt trình soạn thảo văn bản hiện tại của bạn làm trình chỉnh sửa mặc định cho Git.

Trình chỉnh sửa mặc định của tôi cho .txtcác tệp trong Windows 10 là Visual Studio Code và chạy GitPad một lần khiến nó trở thành trình chỉnh sửa mặc định cho Git. Tôi chưa gặp vấn đề được đề cập trong câu hỏi (Git đợi cho đến khi cửa sổ Mã VS được đóng trong trường hợp của tôi).

(Liên kết cho .exetệp không hoạt động với tôi, bạn có thể cần phải tự biên dịch nguồn.)


Những gì bạn đã chỉ vào như là trình soạn thảo mặc định? Tôi đã thử sử dụng những gì được mô tả ở đây: donovanbrown.com/post/2015/07/07/ Nhưng Nhưng điều đó dường như không muốn làm việc. Đừng thực sự muốn chỉ vào một exe cụ thể, vì điều đó sẽ thay đổi khi Mã được cập nhật.
Công viên Gary Ewan

1
@Gary, tôi không phải chỉ một tập tin cụ thể, Mã là trong danh sách khi tôi đã làm Right click> Open with> Chose another app. Tôi hy vọng nó sẽ tự đăng ký khi thiết lập (và cập nhật sổ đăng ký với mọi bản cập nhật để shell có thể tìm thấy nó) nhưng tôi không thể tìm thấy bất cứ thứ gì ngoài mục trình đơn ngữ cảnh "Mở bằng mã" trong sổ đăng ký. Vì vậy, tôi thực sự không có câu trả lời rõ ràng hơn cho điều này, xin lỗi.
Şafak Gür

Hmm, thật lạ, tôi không có mã như một mục trong danh sách xuất hiện khi tôi làm điều đó.
Công viên Gary Ewan

1

Tin tốt! Tại thời điểm viết bài, tính năng này đã được triển khai trong phiên bản 0.10.12 của người trong cuộc và được thực hiện thông qua 0.10,14-người trong cuộc . Do đó, chúng tôi sẽ có nó trong phiên bản 1.0 sắp phát hành của Mã VS .

Tham chiếu thực hiện: Thực hiện -w / - chờ dòng lệnh arg


bạn có thể nhận xét về cách tôi có thể sử dụng trình xem khác trong VSCode để xem diff trong git không?
Công viên Gary Ewan

1

Chỉ muốn thêm các dấu gạch chéo ngược này vào các câu trả lời trước đó, tôi đang ở trên Windows 10 CMD và nó không hoạt động mà không có dấu gạch chéo ngược trước khoảng trắng.

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

Tôi đã có thể thêm bằng: git config --global core.editor "'C: \ Users \ cename_admin \ AppData \ Local \ Programs \ Microsoft VS Code \ Code.exe' -w"
rjt011000

0

Tôi không chắc bạn có thể làm điều này, tuy nhiên bạn có thể thử những bổ sung này trong tệp gitconfig.

Cố gắng thay thế kdiff3 từ các giá trị này để trỏ đến mã studio trực quan thực thi.

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


Như tôi đã đề cập trong câu hỏi của mình, tôi không nghĩ việc hợp nhất sẽ được hỗ trợ, vì tôi không nghĩ Visual Studio Code biết cách thực hiện điều này, tôi nghi ngờ rằng nó sẽ chỉ có thể thực hiện khác biệt và cam kết nhắn tin.
Công viên Gary Ewan

0

Tôi thiết lập Visual Studio Code làm mặc định để mở tệp .txt. Và tiếp theo tôi đã sử dụng lệnh đơn giản : git config --global core.editor "'C:\Users\UserName\AppData\Local\Code\app-0.7.10\Code.exe\'". Và mọi thứ hoạt động khá tốt.


0

Chạy lệnh này trong ứng dụng Mac Terminal của bạn

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

2
Điều này không thực sự hiệu quả khi bạn nhận được thông báo lỗi: Hủy bỏ cam kết do thông báo cam kết trống. Một cờ chờ sẽ cần phải được thêm vào. Ví dụ - chờ đợi.
Tháp chuông

0

trên windows 10 sử dụng phiên bản nội bộ 64 bit, lệnh sẽ là:

git config --global core.editor "'C: \ Chương trình tập tin \ Microsoft VS Code Insiders \ bin \ code-insiders.cmd'"

bạn cũng có thể đổi tên 'code-insiders.cmd' thành 'code.cmd' trong thư mục 'Tệp chương trình', bằng cách này, giờ đây bạn có thể sử dụng lệnh 'code.' để bắt đầu chỉnh sửa các tập tin trên. danh mục

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.