Visual Studio Code ayarlarımı örnekler arasında eşitlemenin herhangi bir yolu var mı?


123

VS Code kullanıcı ayarlarımı (Dosya> Tercihler> Kullanıcı Ayarları) bir şekilde bulutla senkronize edebilmek istiyorum, böylece bunları Windows 10 ve Visual Studio'da olduğu gibi birden çok kurulum arasında kolayca paylaşabilirim.

Bunu yapmanın desteklenen bir yolu var mı? Kodda doğrudan destek harika olurdu, ancak aksi takdirde settings.json konumumu bir Dropbox veya OneDrive klasörüne taşıyabilmek de işe yarardı.

Bunu özellikle otomatik olarak ve sessizce yapmanın bir yolunu arıyorum. Manuel olarak dışa / içe aktarma çok zahmetli ve aradığım şey değil.


Güncelleme: Burada bunun için bir özellik isteği var . Bu özelliği istiyorsanız, lütfen beğeniniz.


2
Google'ın Yedekle ve Senkronize Et programını kullanırsanız ve C: \ Kullanıcılar \ [YOUR_USER] \ AppData \ Roaming \ Code \ Kullanıcı klasörünüzü yedeklemek için eklemeniz çok basit bir yol olacaktır.
vinsa

Yanıtlar:


126

Tüm Visual Studio Kod Ayarlarınızı birden çok örnek arasında senkronize edecek bir uzantı geliştirdim.

Ana Özellikler

  1. GitHub hesap jetonunuzu kullanın.
  2. Tek bir tıklamayla Yüklemesi ve İndirmesi Kolay.
  3. Tüm ayarları ve parçacık dosyalarını kaydeder.
  4. Yükleme Anahtarı: Üst Karakter + Alt + u
  5. İndirme Anahtarı: Shift + Alt + d
  6. Tüm senkronizasyon seçeneklerini görüntülemek için Senkronize Et yazın

Senkronize Et

  • Ayarlar Dosyası
  • Keybinding Dosyası
  • Dosyayı Başlat
  • Parçacıklar Klasörü
  • VSCode Uzantıları

Detay Dokümantasyon Kaynağı

VSCode - Ayarlar Eşitleme blog yayını

Buradan indirin: VS Code - Settings Sync - Uzantı


1
Teşekkürler Shan Khan - bu eklenti oldukça kullanışlıdır - VS Code ayarlarını ve örnekler arasındaki anahtar bağlantılarını senkronize etmem gereken bir dizi sanal sunucum var ve bu uzantı tam olarak reklamı yapıldığı gibi çalışıyor.
Bill_Stewart

Denedim ama başarı yok. Alt-Shift U ile etkinleştirdiğimde, bir hata alıyorum: extensionHost.ts: 293 [Extension Host] {"message": "Not Found", "Document_url": " developer.github.com/v3 "} A. logExtensionHostMessage @ extensionHost.ts: 293 messageService.ts: 126Error Oturum Açıldı Konsol (Yardım menüsü> Geliştirici Araçlarını Değiştir). Gelişmiş ayar komutundan 'Sync: Open Issue' kullanarak bir sorunu açabilirsiniz. E. DoShow @ messageService.ts: 126
Robin Coe

4
Bu cevabı kabul etmeyi çok isterim, ancak aracı denedim ve güvenilmez ve hatalı buldum. Çok basit bir senaryo: VS Code iki makineye yüklendi ve hem otomatik yükleme / indirme ayarlarını hem de uzantı değişikliklerini almaya çalışıyordum. Çalışmasını sağlayamadığım için sonunda pes ettim. Yani, harika fikir ama daha fazla çalışma gerekiyor.
Mark Whitaker

2
Ayarlarımı (yarı) genel bir Gist'e gönderirken karışık hislerim var. Bazı uzantılar, ayarlarında hassas verileri (veritabanı girişleri, SFTP girişleri gibi) depolar. Depolamayı Syncthing veya Resilio Sync gibi harici bir araçla senkronize etmek yerine "yerel" bir dosyaya yeniden yönlendirmek zor olur mu?
korkman

1
@korkman, bu durumların üstesinden gelmek için, Settings Sync, gelecekteki güncellemelerde ana gibi yerel dosyalar ve git depoları aracılığıyla senkronizasyona izin verecektir.
Shan Khan

21

Dropbox veya OneDrive gibi uygulamaların senkronizasyon dizininize kullanıcı ayarlarını içeren dizinden sabit bir bağlantı oluşturabilirsiniz.

Örneğin, Windows'ta kullanıcı ayarları konumundadır %APPDATA%\Code\User, böylece şunları yazabilirsiniz:

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

eşitlemeyi sağlamak için Visual Studio Code ile bilgisayarlarınızda.

Ardından, başka bir bilgisayarda %APPDATA%\Code\Userklasörü silebilir ve şunu yazabilirsiniz:

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

Senkronize ayarları almak için.


Selam ! Neden eşitleme dizininden% appdata% klasörüne bir bağlantı yapmanız gerektiğini anlamıyorum. Eşitleme dizinindeki (DropBox, OneDrive, her neyse ...) tüm gerçek VS ayarlarınız için bir kez hareket edin, ardından ayarları eşitlemek istediğiniz her bilgisayarda%APPDATA%\Code\Usermklink /H /J %APPDATA%\Code\User X:\Your\Sync\Dir
Michaël Polla

2
Çünkü verilen ad zaten mevcutsa bir bağlantı oluşturamazsınız, ancak senkronizasyon dizini ayarlar indirildikten sonra orada olacaktır.
Bay Ree

Bu, mesajın bulunduğu ağ sürücülerinde başarısız oluyor"Local NTFS volumes are required to complete the operation."
Amit Beckenstein

11

Aha, VSCode uzantımı deneyebilirsiniz: Senkronizasyon .

Beğeneceğinizi umuyorum. :)


Hızlı Kılavuz

  1. Eşitlemeyi Yükle :

  2. Kendin al GitHub Personal Access Token:

    1. Sizin giriş GitHub Settings sayfasında.

      ayarlar sayfasına giriş yapın

    2. Personal access tokensSekmeyi seçin ve tıklayın Generate new token.

      yeni jeton oluştur

    3. Seçin gistve tıklayın Generate token.

      özüne izin ver

    4. Jetonunuzu kopyalayın ve yedekleyin.

      jetonu kopyala ve yedekle

  3. Ayarlarınızı senkronize edin:

    Syncinggerekli bilgileri isteyecek for the first timeve save for later use.

    1. Yükle :

      1. Tür uploadiçinde VSCode Command Palette.

      2. Girin GitHub Personal Access Token.

      3. Senin Enter Gist ID(ya da leave it blankotomatik olarak oluşturmak için).

      4. Bitti!

      5. Yüklemeden sonra, ayarları bulabilirsiniz ve ilgili Gist IDsizin de GitHub Gist .

        ayarlar ve özet

    2. İndir :

      1. Tür downloadiçinde VSCode Command Palette.

      2. Enter your GitHub Personal Access Token(veya leave it blankbir kamu Gist'e yüklenebilir istiyorsanız)

      3. Gist ID(Veya a public Gist ID) girin .

      4. Bitti!


Hm. Bu, referans VS Code kurulumunda yüklediğim uzantıları eşitlemiyor gibi görünüyor. Eksik bir şey mi var yoksa bu işlev bu aracın kapsamı dışında mı?
SeaDude

DÜZENLEME: Syncing: Download SettingsUzantıları indirmek için 2x çalıştırmam gerekiyordu. Önemli değil, sadece bir uyarı. Katil alet için teşekkürler!
SeaDude

1
Ayarlarımı (yarı) genel bir Gist'e gönderirken karışık hislerim var. Bazı uzantılar, ayarlarında hassas verileri (veritabanı girişleri, SFTP girişleri gibi) depolar. Depolamayı Syncthing veya Resilio Sync gibi harici bir araçla senkronize etmek yerine "yerel" bir dosyaya yeniden yönlendirmek zor olur mu?
korkman

@korkman Yerel depolamaya aktarma henüz desteklenmiyor, ancak dosya senkronizasyonunu desteklemek daha iyi olabilir.
Nonoroazoro

9

V1.48'de:

Önizleme özellikleri

Önizleme özellikleri piyasaya sürülmeye hazır değil, ancak kullanılacak kadar işlevsel. Geliştirme aşamasındayken erken geri bildirimlerinizi memnuniyetle karşılıyoruz.

Ayarlar Senkronizasyonu

Ayarlar Eşitleme artık kararlı sürümde önizleme için kullanılabilir 🎉. Daha fazla bilgi ve SSS için kullanıcı kılavuzuna bakın .

Özellik artık üründe de Settings Sync olarak adlandırılıyor . Tüm referansları ve ayarları, hizalanmak üzere yeniden adlandırıldı.

Ayrıca https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_48.md#settings-sync adresinde Insider'lar ve Stable arasında "Manuel birleştirme" ve senkronizasyon konusuna bakın.


V1.45'te, github aracılığıyla yerleşik Settings Sync'e giriş yapabileceğiniz görülüyor, bkz. Https://github.com/microsoft/vscode/issues/95160#event-3266867554 (Ayarlar senkronizasyonunda GitHub girişlerini destekleyin ). Ve v1.45 Sürüm Notları .


V1.43'te bir önizleme özelliği olarak (bu nedenle, yalnızca Insider'ların Derlemesinde) ayarlar eşitlemedir . Bkz. Https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_43.md#settings-sync

Ayarlar Senkronizasyonu

Makineler arasında VS Code ayarlarının, uzantılarının ve klavye kısayollarının senkronizasyonunu desteklemek için son birkaç aydır çalışıyoruz (popüler özellik isteği # 2743 ). Bu dönüm noktasında, bu özelliğin bir sonraki 1.44.0 içeriden gelen sürümümüzden önizlemeye hazır olduğunu duyurmaktan mutluluk duyuyoruz . Artık özelleştirmelerinizin tüm makinelerinizdeki tüm VS Code kurulumlarında eşitlenmesini sağlayabilirsiniz. Ayrıca VS Code'u kişisel özelleştirmelerinizle yeni bir makinede minimum çabayla önyükleyebilirsiniz. Aşağıdaki video bunu göstermektedir:

Senkronizasyon sırasında ayarlarda ve tuş atamalarında çakışmaların tespit edilmesini destekler. Uyuşmazlıklar, sol tarafta gelen (bulut) değişiklikler ve sağ tarafta yerel değişiklikler ile diff düzenleyicisi kullanılarak gösterilir. Sağ taraftaki düzenleyicide düzenleyerek çakışmaları çözebilir ve düzenleyicide sağlanan eylemleri kullanarak değişiklikleri birleştirebilirsiniz.

Desteklenen Özellikler

Şu anda Ayarlar, Klavye Kısayolları, Uzantılar ve Görüntüleme Dili senkronize edilmiştir, ancak daha fazlasını eklemeyi planlıyoruz. Önerilen Setting Sync özellikleri listemizi inceleyebilirsiniz .

Makine ayarları (makine veya makine tarafından geçersiz kılınabilen kapsamlarla) varsayılan olarak senkronize edilmez. Ayrıca bu listeye istediğiniz ayarları ayar düzenleyicisinden veya ayarı kullanarak ekleyebilir veya kaldırabilirsiniz sync.ignoredSettings.

Klavye Kısayolları varsayılan olarak platform başına senkronize edilir. Klavye kısayollarınız platformdan bağımsızsa, ayarı devre dışı bırakarak bunları platformlar arasında senkronize edebilirsiniz sync.keybindingsPerPlatform.

Tüm yerleşik ve yüklü uzantılar, genel etkinleştirme durumlarıyla birlikte senkronize edilir. Uzantılar görünümünden veya ayarı kullanarak bir uzantıyı senkronize etmeyi atlayabilirsiniz sync.ignoredExtensions.

Ayarlar Eşitleme etkinliği Günlük (Eşitleme) çıktı görünümünde izlenebilir . Tüm yerel özelleştirmeler, eşitleme sırasında değiştirildiklerinde diskte son 30 gün (en az 10 gün) yedeklenir. Yedekleme konumuna gitmek ve eski özelleştirmelerinizi korumak için Eşitle: Yerel Yedekleme Klasörünü Aç komutunu kullanabilirsiniz .

(ve sürüm notu bağlantısında birkaç gif)

Bunun github değil , Microsoft hesabınız üzerinden çalıştığını unutmayın (v1.45'e kadar - yukarıya bakın):

Settings Sync, senkronizasyon için VS Code özelleştirmelerinizi depolamak için bir Microsoft hesabı kullanır ve bu nedenle bunu kullanmak için bir hesaba ihtiyacınız olacaktır. Daha fazla bilgi ve yardım için Ayarlar Eşitleme belgelerine bakın .

Nasıl kurulacağına ilişkin daha fazla bilgi için https://github.com/microsoft/vscode-docs/blob/vnext/docs/editor/settings-sync.md adresine de bakın settings sync.


Ve Ayarlar Eşitleme ile ilgili v1.44 bilgilerine bir bağlantı: https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_44.md#settings-sync


Teşekkürler Mark. Geldiğinde bunu denemeye istekli olacağım.
Mark Whitaker

1
Milyon dolarlık soru, bunun ne zaman istikrarlı olacağıdır. 1.46 çıktı ama yine de içeriden
öğrenenler

6

Bunu Mac'imde VS settings.jsonCode'ları otomatik yedekleme için iCloud sürücüme kopyalayıp ardından sembolik bir bağlantı oluşturarak yaptım.

  1. Kopya settings.jsongelen VS kodu ayarları dizinine $HOME/Library/Application Support/Code/User/settings.json yedekleme konumuna
  2. settings.jsonYeniden adlandırarak eskiyi yedekleyinsettings-old.json
  3. Terminalde, cdVS kodu ayarı dizinine:cd ~/Library/Application\ Support/Code/User/
  4. Komutu kullanarak yedeklenen dosyanıza sembolik bağ oluşturun ln -sf path/to/backup/settings.json settings.json. Benimkini iCloud'a yedeklediğimden ve dosyayı olarak yeniden adlandırdığım için komutum vscode.settings.jsonşöyle görünüyordu:ln -sf ~/Library/Mobile\ Documents/com~apple~CloudDocs/vscode.settings.json settings.json
  5. VS Code'da kullanıcı tercihlerini açıp açamayacağınızı kontrol edin

Yedeklemeyi farklı bir Mac'te kullanmak için 2-5. Adımları tekrarlamanız yeterlidir.

Bunu uzantılar için de yaptım ...

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

Bu şuna benzer @frankhommers Pencere Sembolik bağ komutunu kullanarak çoğaltılabilir: mklink. İCloud sürücüsü yerine DropBox, OneDrive veya başka bir bulut hizmetini kullanabilirsiniz
Chris Feist

4

Kendimi settings.jsongit ile senkronize ettiğim bir yapılandırma dosyasına yerleştiriyorum (Dropbox da işe yarayacak olsa da) ve onu her platform için doğru konuma simgeleştirmek için bir Python betiği kullanıyorum, böylece ayarlar menüsünden güncelleme makinelerim arasında senkronize oluyor. Sembolik bağlantılar oluşturmak, Windows'ta yönetici ayrıcalıkları gerektirir.

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

Kullanıcı ayarları

Şu anda Visual Studio Code'da bulunan kullanıcı ayarları için otomatik eşitleme yoktur. Windows'ta kullanıcı ayarları konumundadır %APPDATA%\Code\User\settings.json. Bu dosyanın bir kopyasını OneDrive veya Dropbox'a kaydedebilir ve tüm makinelerinizde kullanıcı ayarları klasörüne taşıyabilirsiniz. Ancak bu, konfigürasyonu her değiştirdiğinizde yine de her makinedeki manuel adımları içerir.

Burada ayarların otomatik senkronizasyonunu önerebilirsiniz: https://visualstudio.uservoice.com/forums/293070-visual-studio-code

Çalışma Alanı Ayarları

Çalışma .vscodealanınızın klasörünü sürüm kontrol sistemine ekleyin (Git / SVN vb.). Kod deposundan kodu ödünç aldığınızda VS Code çalışma alanı ayarlarını otomatik olarak alırsınız.


Yanıtınız için teşekkürler ama soruyu yanlış anladınız. Proje ayarlarını değil, kullanıcı ayarlarını soruyorum. Soruya bazı açıklamalar ekledim.
Mark Whitaker

1
Teşekkürler, cevabı iyileştirdim
Wosi

3

Bunu yapmanın başka bir yolu da dosyalarınızı yumuşak bir şekilde bağlamak olabilir, bu da GitHub'daki bir depoda saklanabilir. Örneğin, Mac OS'de adında bir dizininiz olduğunu varsayalım ~/dev/dotfiles/vscode. Diyelim ki orada settings.jsonve adında iki dosya var keybindings.json. Bu dosyalara yumuşak bağlantı kurabilirsiniz:

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

Windows veya Linux kullanıyorsanız, ilgili ayar dizinlerinin yolu https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations adresinde bulunabilir.


2

Bu nihayet yerleşik bir özelliktir: bkz.Visual Studio Code'da Ayarlar Eşitleme .

Not : Senkronizasyon şu anda Mayıs 2020 Sürüm 1.46'dan itibaren önizleme aşamasındadır.


2
Yine de önizlemede
Frank Fu

@FrankFu Pekala, ama bu büyük bir özellik ve ilerleme kaydediyorlar: microsoft / github hesabıyla senkronize edebilirsiniz ve hesap girişi vb. İçin önerilen bir api var (bu bizim gibi diğer uzantılar için yararlı olacaktır) github btw)
Chayim Friedman

@ChayimFriedman,% 100, hiçbir şekilde şikayet etme niyetim yoktu. Orijinal düzenlenmemiş cevap aksini söylemediğinden insanlara yanlış umut vermekten kaçınmak için bunun açıklığa kavuşturulması gerektiğini hissettim.
Frank Fu

@FrankFu Oh, güzel. Afedersiniz.
Chayim Friedman

-7

Kullanıcı ayarları yerine çalışma alanı ayarlarını kullanın.


Çalışma alanı ayarları proje veya sistemler arasında senkronize olmadığından yapıcı bir öneri değildir.
Itanex

2
@ColacX'e şüphenin faydasını vererek, çalışma alanı ayarlarını kullanırsanız, bunları git / svn / vb. İçine kaydedebilirsiniz, ki bu aslında onları bir anlamda senkronize eder.
Joshua Sleeper
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.