Apakah ada cara untuk menyinkronkan pengaturan Kode Visual Studio saya antara contoh?


123

Saya ingin dapat menyinkronkan pengaturan pengguna VS Code saya (File> Preferensi> Pengaturan Pengguna) ke cloud entah bagaimana sehingga saya dapat dengan mudah membagikannya di antara beberapa instalasi, seperti di Windows 10 dan Visual Studio.

Apakah ada cara yang didukung untuk melakukan ini? Dukungan langsung dalam Kode akan sangat bagus, tetapi jika tidak, saya dapat memindahkan lokasi settings.json ke folder Dropbox atau OneDrive juga akan berfungsi.

Saya mencari secara khusus cara melakukan ini secara otomatis dan diam-diam. Mengekspor / mengimpor secara manual terlalu rumit dan bukan yang saya cari.


Pembaruan: ada permintaan fitur untuk ini di sini . Jika Anda menginginkan fitur ini, silakan beri acungan jempol.


2
Cara yang sangat sederhana adalah jika Anda menggunakan program Pencadangan dan Sinkronisasi Google dan hanya menambahkan ke cadangan folder C: \ Users \ [YOUR_USER] \ AppData \ Roaming \ Code \ User.
vinsa

Jawaban:


126

Saya telah mengembangkan ekstensi yang akan menyinkronkan semua Pengaturan Kode Visual Studio Anda di beberapa contoh.

Fitur Utama

  1. Gunakan token akun GitHub Anda.
  2. Mudah diunggah dan diunduh dengan satu klik.
  3. Menyimpan semua pengaturan dan file cuplikan.
  4. Tombol Unggah: Shift + Alt + u
  5. Tombol Unduh: Shift + Alt + d
  6. Ketik Sinkronisasi Untuk Melihat semua opsi sinkronisasi

Ini Sinkron

  • File Pengaturan
  • File Keybinding
  • Luncurkan File
  • Folder Cuplikan
  • Ekstensi VSCode

Detail Sumber Dokumentasi

VSCode - Pengaturan Sinkronisasi posting blog

Unduh di sini: VS Code - Settings Sync - Extention


1
Terima kasih Shan Khan - ekstensi ini cukup berguna - Saya memiliki seperangkat server virtual tempat saya perlu menyinkronkan pengaturan VS Code dan ikatan kunci antara instance dan ekstensi ini berfungsi persis seperti yang diiklankan.
Bill_Stewart

Sudah mencobanya tapi tidak berhasil. Saat saya mengaktifkannya dengan Alt-Shift U, saya mendapatkan pesan kesalahan: extensionHost.ts: 293 [Host Ekstensi] {"message": "Not Found", "dokumentasi_url": " developer.github.com/v3 "} A. logExtensionHostMessage @ extensionHost.ts: 293 messageService.ts: 126Kesalahan Masuk Konsol (menu Bantuan> Alihkan Alat Pengembang). Anda dapat membuka masalah menggunakan 'Sync: Open Issue' dari perintah pengaturan lanjutan. E.doShow @ messageService.ts: 126
Robin Coe

4
Saya ingin menerima jawaban ini, tetapi saya mencoba alat tersebut dan ternyata tidak dapat diandalkan dan bermasalah. Skenario yang sangat sederhana: VS Code diinstal pada dua mesin, dan saya mencoba untuk mendapatkan pengaturan unggah / unduh otomatis dan perubahan ekstensi. Saya akhirnya menyerah setelah gagal membuatnya bekerja. Jadi, ide bagus tapi butuh lebih banyak pekerjaan.
Mark Whitaker

2
Saya merasa campur aduk saat memposting pengaturan saya ke inti (semi-) publik. Beberapa ekstensi menyimpan data sensitif (seperti login database, login SFTP) di setelannya. Apakah sulit untuk mengalihkan penyimpanan ke file "lokal", yang disinkronkan dengan alat eksternal seperti Syncthing atau Resilio Sync?
korkman

1
@korkman untuk menangani situasi ini, Pengaturan Sinkronisasi akan memungkinkan sinkronisasi melalui file lokal dan repositori git seperti inti dalam pembaruan mendatang.
Shan Khan

21

Anda dapat membuat tautan keras dari direktori yang berisi pengaturan pengguna ke direktori sinkronisasi aplikasi Anda seperti Dropbox atau OneDrive.

Misalnya, di windows, pengaturan pengguna berada di %APPDATA%\Code\User, jadi Anda bisa mengetik:

mklink /H /J X:\Your\Sync\Dir %APPDATA%\Code\User

di komputer Anda dengan Visual Studio Code untuk mencapai sinkronisasi.

Kemudian, di komputer lain, Anda dapat menghapus %APPDATA%\Code\Userfolder tersebut, dan mengetik:

mklink /H /J %APPDATA%\Code\User X:\Your\Sync\Dir

untuk mengambil pengaturan yang disinkronkan.


Hai! Saya tidak mengerti mengapa Anda perlu membuat tautan DARI direktori sinkronisasi KE folder% appdata%. Pindahkan sekali untuk semua pengaturan VS Anda yang sebenarnya di direktori sinkronisasi (DropBox, OneDrive, apa pun ...), lalu di setiap komputer Anda ingin menyinkronkan pengaturan, hapus %APPDATA%\Code\Userdan buat tautan dengan menggunakanmklink /H /J %APPDATA%\Code\User X:\Your\Sync\Dir
Michaël Polla

2
Karena Anda akan gagal membuat tautan jika nama yang diberikan sudah ada, sedangkan direktori sinkronisasi akan ada di sana setelah pengaturan diunduh.
Tn. Ree

Ini gagal untuk drive jaringan dengan pesan"Local NTFS volumes are required to complete the operation."
Amit Beckenstein

11

Aha, Anda dapat mencoba ekstensi VSCode saya: Sinkronisasi .

Berharap Anda akan menyukainya. :)


Panduan Cepat

  1. Instal Sinkronisasi :

  2. Dapatkan milik Anda sendiri GitHub Personal Access Token:

    1. Masuk ke halaman GitHub Anda Settings.

      login ke halaman pengaturan

    2. Pilih Personal access tokenstab dan klik Generate new token.

      menghasilkan token baru

    3. Pilih gistdan klik Generate token.

      memungkinkan intinya

    4. Salin dan cadangkan token Anda.

      salin dan backup token

  3. Sinkronkan pengaturan Anda:

    Syncingakan meminta informasi yang diperlukan for the first timedan save for later use.

    1. Unggah :

      1. Ketik uploaddi VSCode Command Palette.

      2. Masukkan GitHub Personal Access Token.

      3. Masukkan Anda Gist ID(atau leave it blankuntuk membuat secara otomatis).

      4. Selesai!

      5. Setelah mengunggah, Anda dapat menemukan pengaturan Anda dan yang sesuai Gist IDdi GitHub Gist Anda .

        pengaturan dan inti

    2. Unduh :

      1. Ketik downloaddi VSCode Command Palette.

      2. Masukkan GitHub Personal Access Token(atauleave it blank jika Anda ingin mengunduh dari Gist publik)

      3. Masukkan Gist ID(atau a public Gist ID) Anda.

      4. Selesai!


Hm. Ini sepertinya tidak menyinkronkan ekstensi yang telah saya pasang di referensi pemasangan VS Code. Apakah saya melewatkan sesuatu atau apakah fungsi ini berada di luar cakupan alat ini?
SeaDude

EDIT: Saya harus menjalankan Syncing: Download Settings2x agar Ekstensi dapat diunduh. Bukan masalah besar, hanya satu kepala. Terima kasih untuk alat pembunuhnya!
SeaDude

1
Saya merasa campur aduk saat memposting pengaturan saya ke inti (semi-) publik. Beberapa ekstensi menyimpan data sensitif (seperti login database, login SFTP) di setelannya. Apakah sulit untuk mengalihkan penyimpanan ke file "lokal", yang disinkronkan dengan alat eksternal seperti Syncthing atau Resilio Sync?
korkman

@korkman Mengekspor ke penyimpanan lokal belum didukung, tetapi bisa lebih baik untuk mendukung sinkronisasi file.
Nonoroazoro

9

Di v1.45 sepertinya Anda akan dapat masuk ke Pengaturan Sinkronisasi bawaan melalui github, lihat https://github.com/microsoft/vscode/issues/95160#event-3266867554 (Mendukung proses masuk GitHub dalam sinkronisasi pengaturan ). Dan Catatan Rilis v1.45 .


Dalam v1.43 sebagai fitur pratinjau (jadi di Insiders 'Build only) adalah sinkronisasi pengaturan . Lihat https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_43.md#settings-sync

Pengaturan Sinkronisasi

Kami telah bekerja selama beberapa bulan terakhir untuk mendukung sinkronisasi pengaturan VS Code, ekstensi, dan pintasan keyboard di seluruh mesin (permintaan fitur populer # 2743 ). Dalam pencapaian ini, kami dengan senang hati mengumumkan bahwa fitur ini siap untuk pratinjau dari orang dalam 1.44.0 berikutnya rilis . Anda sekarang dapat memiliki penyesuaian Anda yang disinkronkan di semua pemasangan VS Code Anda di semua mesin Anda. Anda juga dapat mem-bootstrap VS Code dengan kustomisasi pribadi Anda pada mesin baru dengan sedikit usaha. Video berikut menunjukkan ini:

Mendukung deteksi konflik dalam pengaturan dan keybindings saat sinkronisasi. Konflik ditampilkan menggunakan editor diff dengan perubahan masuk (cloud) di sisi kiri dan perubahan lokal di sisi kanan. Anda dapat menyelesaikan konflik dengan mengedit di editor sisi kanan dan menggabungkan perubahan menggunakan tindakan yang disediakan di editor.

Fitur yang Didukung

Saat ini Pengaturan, Pintasan Keyboard, Ekstensi, dan Bahasa Tampilan disinkronkan tetapi kami berencana untuk menambahkan lebih banyak. Anda dapat meninjau daftar fitur Sinkronisasi Pengaturan yang kami usulkan .

Setelan mesin (dengan mesin atau cakupan yang dapat diganti mesin) tidak disinkronkan secara default. Anda juga dapat menambah atau menghapus pengaturan yang Anda inginkan ke daftar ini dari editor pengaturan atau menggunakan pengaturan sync.ignoredSettings.

Pintasan Keyboard disinkronkan per platform secara default. Jika pintasan keyboard Anda adalah platform agnostik, Anda dapat menyinkronkannya di seluruh platform dengan menonaktifkan pengaturan sync.keybindingsPerPlatform.

Semua ekstensi yang terpasang dan terpasang disinkronkan bersama dengan status pemberdayaan globalnya. Anda dapat melewati sinkronisasi ekstensi, dari tampilan ekstensi atau menggunakan pengaturan sync.ignoredExtensions.

Pengaturan Aktivitas sinkronisasi dapat dipantau dalam tampilan keluaran Log (Sinkronisasi) . Semua kustomisasi lokal dicadangkan selama 30 hari terakhir (setidaknya 10) di disk setiap kali diubah selama sinkronisasi. Anda dapat menggunakan perintah Sinkronisasi: Buka Folder Cadangan Lokal untuk pergi ke lokasi cadangan dan mempertahankan kustomisasi lama Anda.

(dan beberapa gif di tautan catatan rilis)

Perhatikan bahwa ini berfungsi melalui akun Microsoft Anda , bukan github (hingga v1.45 - lihat atas):

Pengaturan Sinkronisasi menggunakan akun Microsoft untuk menyimpan kustomisasi VS Code Anda untuk sinkronisasi dan oleh karena itu Anda memerlukan akun untuk menggunakannya. Lihat dokumentasi Pengaturan Sync untuk informasi lebih lanjut dan bantuan.

Lihat juga https://github.com/microsoft/vscode-docs/blob/vnext/docs/editor/settings-sync.md untuk mengetahui lebih lanjut tentang cara menyiapkan settings sync.


Dan tautan ke info v1.44 tentang Pengaturan Sinkronisasi: https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_44.md#settings-sync


Terima kasih Mark. Saya akan sangat tertarik untuk mencoba ini ketika sudah tiba.
Mark Whitaker

1
Pertanyaan jutaan dolar adalah kapan ini akan mencapai stabil. 1,46 keluar tetapi masih hanya untuk orang dalam :(
bviktor

6

Saya melakukan ini di Mac saya dengan menyalin VS Code settings.jsonke drive iCloud saya untuk pencadangan otomatis, dan kemudian membuat tautan simbolis.

  1. Salin settings.jsondari direktori pengaturan kode VS $HOME/Library/Application Support/Code/User/settings.json ke lokasi cadangan Anda
  2. Cadangkan yang lama settings.jsondengan mengganti nama menjadisettings-old.json
  3. Di terminal, cdke direktori pengaturan kode VS:cd ~/Library/Application\ Support/Code/User/
  4. Buat symlink ke file cadangan Anda menggunakan perintah ln -sf path/to/backup/settings.json settings.json. Karena saya mencadangkan milik saya ke iCloud dan mengganti nama file menjadi vscode.settings.json, perintah saya terlihat seperti ini:ln -sf ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode.settings.json settings.json
  5. Periksa apakah Anda dapat membuka preferensi pengguna di VS Code

Untuk menggunakan cadangan di Mac lain, cukup ulangi langkah 2-5.

Saya juga melakukan ini untuk ekstensi ...

cd ~/.vscode/
mkdir ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode/
cp -a extensions ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode
mv extensions extensions-old
ln -sf ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode/extensions extensions

@frankhommers Sepertinya ini dapat direplikasi menggunakan perintah symlink Window: mklink. Anda dapat menggunakan DropBox, OneDrive, atau layanan cloud lain selain drive iCloud
Chris Feist

4

Saya menempatkan saya settings.jsondi file konfigurasi yang saya sinkronkan dengan git (meskipun Dropbox juga akan berfungsi) dan menggunakan skrip Python untuk menghubungkannya ke lokasi yang benar untuk setiap platform sehingga memperbaruinya dari menu pengaturan disinkronkan di mesin saya. Membuat symlink membutuhkan hak istimewa admin di Windows.

import os
import platform

# Find the settings file in the same directory as this script
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
VS_SETTINGS_SRC_PATH = os.path.join(SCRIPT_DIR, 'settings.json')

# https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations
if platform.system() == 'Windows':
    VS_SETTINGS_DST_PATH = os.path.expandvars(r"%APPDATA%\Code\User\settings.json")
elif platform.system() == "Darwin":
    VS_SETTINGS_DST_PATH = os.path.expandvars(r"$HOME/Library/Application Support/Code/User/settings.json")
elif platform.system() == "Linux":
    raise NotImplementedError()
else:
    raise NotImplementedError()

# On Windows, there might be a symlink pointing to a different file
# Always remove symlinks
if os.path.islink(VS_SETTINGS_DST_PATH):
    os.remove(VS_SETTINGS_DST_PATH)

choice = input('symlink %r -> %r ? (y/n) ' % (VS_SETTINGS_SRC_PATH, VS_SETTINGS_DST_PATH))
if choice == 'y':
    os.symlink(VS_SETTINGS_SRC_PATH, VS_SETTINGS_DST_PATH)
    print('Done')
else:
    print('aborted')

3

Pengaturan pengguna

Saat ini tidak ada sinkronisasi otomatis untuk pengaturan pengguna yang tersedia di Visual Studio Code. Di Windows, pengaturan pengguna berada di %APPDATA%\Code\User\settings.json. Anda dapat menyimpan salinan file itu di OneDrive atau Dropbox dan memindahkannya ke semua mesin Anda ke folder pengaturan pengguna. Tetapi ini masih termasuk langkah manual pada setiap mesin setiap kali Anda mengubah konfigurasi.

Anda dapat menyarankan sinkronisasi pengaturan otomatis di sini: https://visualstudio.uservoice.com/forums/293070-visual-studio-code

Pengaturan Ruang Kerja

Tambahkan .vscodefolder ruang kerja Anda ke sistem kontrol versi (Git / SVN dll). Ketika Anda melakukan checkout kode dari repositori, Anda akan secara otomatis mendapatkan pengaturan ruang kerja VS Code.


Terima kasih telah membalas, tetapi Anda salah memahami pertanyaannya. Saya bertanya tentang pengaturan pengguna, bukan pengaturan proyek. Saya telah menambahkan beberapa klarifikasi untuk pertanyaan tersebut.
Mark Whitaker

1
Terima kasih, saya memperbaiki jawabannya
Wosi

3

Cara lain untuk melakukannya adalah dengan menautkan file Anda secara lunak, yang juga dapat disimpan dalam repositori di GitHub. Misalnya, di Mac OS, katakanlah Anda memiliki direktori bernama ~/dev/dotfiles/vscode. Katakanlah ada dua file di sana yang bernama settings.jsondan keybindings.json. Anda dapat menautkan file-file ini dengan:

ln -s ~/dev/dotfiles/vscode/keybindings.json ~/Library/Application\ Support/Code/User/keybindings.json
ln -s ~/dev/dotfiles/vscode/settings.json ~/Library/Application\ Support/Code/User/settings.json

Jika Anda menggunakan Windows atau Linux, jalur ke direktori pengaturan masing-masing dapat ditemukan di https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations


2

Ini akhirnya menjadi fitur bawaan: lihat Pengaturan Sinkronisasi dalam Kode Visual Studio .

Catatan : Sinkronisasi saat ini sedang dalam pratinjau mulai Mei 2020 Versi 1.46.


2
Masih dalam pratinjau
Frank Fu

@FrankFu Ya, tetapi ini adalah fitur besar, dan mereka membuat kemajuan: Anda dapat menyinkronkan ke akun microsoft / github, dan ada api yang diusulkan untuk login akun dll. (Yang akan berguna untuk ekstensi lain seperti kami github btw)
Chayim Friedman

@ChayimFriedman, oh 100%, sama sekali bukan niat saya untuk mengeluh. Saya merasa itu perlu dibersihkan untuk menghindari memberikan harapan palsu kepada orang karena jawaban asli yang belum diedit tidak mengatakan sebaliknya.
Frank Fu

@FrankFu Oh, bagus. Maaf.
Chayim Friedman

-7

Gunakan pengaturan ruang kerja alih-alih pengaturan pengguna.


Bukan saran yang membangun karena pengaturan ruang kerja tidak sinkron di seluruh proyek atau sistem.
Itanex

2
Memberikan @ColacX manfaat dari keraguan, saya mengasumsikan apa yang dimaksud adalah bahwa jika Anda menggunakan ruang kerja-pengaturan, Anda dapat menyimpannya dalam git / svn / etc, yang tidak sebenarnya sync mereka dalam arti.
Joshua Sleeper
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.