👁️
pierreinside
  • Introduction
  • Workbench
    • VirtualBox
    • Linux
      • Linux-Paketverwaltung
      • Linux Initialisierung
      • Ubuntu 14.10 LTS
      • Ubuntu 16.04 LTS
      • Ubuntu 18.04 LTS
      • Ubuntu 20.04 LTS
      • Ubuntu - Netzwerk
    • Konsole
      • ssh
      • zsh
      • cygwin
      • Babun
      • terminator
      • Terminal Multiplexer
      • Linux Tools
    • awesome
    • Entwicklungsumgebungen
      • Texteditors
      • Visual Studio Code
      • IntelliJ - IDEA
  • Softwareentwicklungsprozess
    • Schätzungen
    • Eventstorming
    • OKR
  • Architektur
    • Uncle Bob
    • Microservices
    • NoSQL
      • ElasticSearch
    • Hystrix
    • Reactive Programming
    • AngularJS
    • Service Mesh
  • Networking
    • Dependency Injection
  • Programming
    • Java Core/EE
      • Java 8
      • Java Annotationen
      • Bean Validation
      • Enterprise Java Beans Specification
      • Dependency Injection
    • JRebel
    • Webservices
      • HTTP
      • REST
      • Spring MVC REST
      • Swagger
      • Postman
    • Spring Ecosystem
      • Spring Core
      • Spring Boot
        • Programming
        • Production Ready
        • Testing
      • Spring Cloud
      • Spring Cloud Config
      • Spring MVC
      • Spring Data
      • Spring Petclinic
    • NodeJS
    • UI-Technologie
      • Thymeleaf
      • ionic
      • Web Fonts
      • Jinja Templates
      • Twitter Bootstrap
    • Python Ecosystem
      • Python Libraries
      • Python Testing
      • Python Best-Practices
      • Python Snippets
      • Python Selenium
      • Kivy UI
      • FastAPI
      • Typer CLI
      • Django
    • Groovy
    • Persistenz
      • Transactions
        • Java TX
        • JPA TX
      • TX Handling
      • JPA
        • Eclipse Link
      • MySQL
        • MySQL Performance
        • Docker MySQL
      • Hazelcast
    • Glassfish
    • YAML
    • Angular
    • Camel
    • Zeichenkodierung
    • Kinder lernen Programmieren
  • Testen
    • Easymock
    • Mockito
  • Performance & Scalability
    • Java Performance
      • Heapdump Analysis
    • Java Concurrency
    • Instana
  • Sicherheit
    • Authentifizierung
      • OpenID Connect
      • Web-Authentication API
    • Authorisierung
      • OAuth
      • SAML
    • Spring Security
    • Zertifikate
    • Kali Linux
    • VPN
    • Zero-Trust-Networks
  • Build und Deployment
    • Maven
    • Bamboo
    • Jenkins
      • Jenkins Pipelines
      • Jenkins Pipelines Tips und Tricks
      • Jenkins-configuration-as-Code
      • Jenkins IDE
    • Travis CI
    • Shellprogrammierung
      • jq - JSON Parsing
    • Konfiguration Management
    • Vagrant
      • Vagrant-Ansible-Integration
      • Vagrant Box bauen
    • Ansible
      • Getting Started
      • Ansible Details
    • Saltstack
    • LinuxKit
    • Container
      • Docker
        • Docker Getting Started
        • Debugging Docker
        • Docker Build
        • Docker Registry
        • Docker run
          • docker run
          • docker network
        • Docker Compose
        • docker machine
        • Docker@Windows
        • Docker Host
        • Docker Scaling
        • Docker Ressources
        • Docker Logging
        • windowsContainer
      • Cloud Deployment Provider
        • AWS
          • Anwendungsdeployment
          • Workload
          • Permissions
          • Netzwerke
          • AWS CLI
            • aws-vault
          • RDS
          • Static Website Hosting
          • EKS - Elastic Kubernetes Service
          • S3
        • Google Cloud Platform
      • Docker Orchestrierung
        • CoreOS
        • Kubernetes
          • microK8s
          • minikube
          • autoscaler
          • Docker
          • k9s
        • Nomad
    • PHP
  • Operations
    • Proxy
      • NGINX
    • DNS
    • Logging
      • Graylog
      • Fluentd
    • Monitoring
      • Grafana
    • Infrastructure-as-Code
      • Terraform
        • AWS-Provider
        • GitHub-Provider
      • Packer
    • Deployment
      • Vault
      • Consul
        • Consul Template
      • Fabio
  • Rechtliches
    • Software-Lizenzen
  • Git Ecosystem
    • Git
      • Git Lifecycle Hooks
    • GitHub
      • GitHub Organizations
    • GitHub Actions
    • GitHub Pages
    • GitHub CLI
    • GitHub Copilot
    • GitHub-AWS OIDC
    • GitBook
    • GitLab
    • Bitbucket/Stash
  • Publishing
    • WordPress
    • Markdown
    • Static Site Generators
      • Hugo
      • Jekyll
    • Tiddly Wiki
    • Leanpub
    • Animationsfilme
  • Storage
    • Synology 2012
    • Synology 2021
  • Collaboration
    • Übersicht
    • Microsoft Teams
  • Konferenzen
    • Velocity Berlin 2019
  • IT mit Kindern
    • Projekt Sportstracker
    • Scratch
    • Pico Spielekonsole
  • Schule
    • Mathematik
  • Misc
    • Foto/Video
      • Foto/Video Sammlung bis 2023
        • Handbrake
        • Onedrive
      • Foto/Video Sammlung ab 2024
      • Gopro
      • Panasonic FZ1000 ii
        • als Webcam
      • AV Receiver
      • Videos erstellen
        • OBS Studio
        • Touch Portal
        • Game-Streaming
      • Kameratasche
      • Kamera 2020
    • Handy
      • 2016
      • 2018
      • 2019
      • 2021
      • 2022
    • Computer
      • Laptop
        • 2018
        • Chromebook
      • Monitor
        • 4k
      • Software
        • Command Line Interface
        • Google API
        • Plant UML
        • Chromium
        • Passwort-Manager
        • GPG
      • Dell CNF 2665 Farbdrucker
      • Dockingstation
      • Gaming PC 2021
      • Mobiles Büro
      • Mobiles Internet
      • Mobiler Router
    • Beamer Benq W1000+
    • Spielekonsole
      • 2017
        • Playstation 4
      • Pico Spielekonsole
    • Gadgets
      • iPad Pro 2015 und 2016
      • iPad Air 2024
      • Macbook Pro
      • Smartwatch
      • Slate
      • Mudi
    • Fahrrad
      • Jonas 2018
      • SQLab
    • Auto
      • Auto 2022
      • Camping
        • Camping Touren Ideen
          • Camping Tour - Gardasee 2021
        • Camper
          • Camper klein - keine Stehhöhe
            • VW Bus Erfahrungen
          • Camper gross - Stehhöhe
    • Haus
      • Klimaanlage
      • Swimming Pool
      • Quick Mill Orione 3000
      • Spülmaschine 2021
      • Hebe-Schiebetür
      • Gasgrill
      • Minibar / Mini-Kühlschrank
      • Glasfaseranschluss (Fiber-to-the-Home)
      • Smart-Home
        • Raspberry Pi
        • Heimnetzwerk
      • Homeoffice
      • Energie
        • Solar
        • Wärmepumpe
    • Freizeit
      • Musik Streaming
      • Sky
      • Online Lernplattformen
      • eScooter - ePowerFun
    • Fußball
      • Meine Arbeit als Fußball-Trainer
      • Fußball Tools
      • DFB Talentförderung
    • Google Impact Challenge
  • Englisch
Powered by GitBook
On this page
  • Installation
  • Tarball
  • Binaries
  • Ubuntu via Snap
  • Konfiguration
  • Lieblingssettings
  • Meine Keybindings
  • Plugins
  • Gimmicks
  • VSC für Add-Hoc Editierungen
  • VSC als Difftool
  • FAQ

Was this helpful?

  1. Workbench
  2. Entwicklungsumgebungen

Visual Studio Code

  • Homepage

Aus einem Atom-Fork hervorgegangen ... die out-of-the-box Git-Integration ist schon mal sehr beeindruckend. Zudem bringt es noch weitere meiner favorisierten Features mit (auto-reveal-in-sidebar, Terminal, git-diff ... lokale Änderungen werden im Editor markiert), die bei Atom nachträglich installiert werden müssen.

Installation

Hier gibt es abhängig vom Betriebssystem unterschiedliche Möglichkeiten.

Tarball

Damit habe ich die besten Erfahrungen gesammelt.

Binaries

Auf allen Plattformen funktioniert der Download der Binaries von der Visual Studio Code Homepage. Damit bekommt man immer den aktuellsten Snapshot/Release, aber man muss es auch selbst aktualisieren (im Gegensatz zu einem Paketmanager wie apt-get oder snap ... die dafür aber evtl. auch ein wenig hinterherhinken).

Ubuntu via Snap

  • http://linuxbsdos.com/2017/05/25/how-to-install-visual-studio-code-on-ubuntu-16-10-17-04/

Snap ist ein Paketmanager, der von Canonical entwickelt wurde. Er benötigt den Daemon spapd, der unter Ubuntu per Default gestartet ist. Im Gegensatz zu anderen Paketarten (z. B. DEB Pakete) sind ALLE benötigten Ressourcen in einem Snap-Paket ... keine Probleme also mit Abhängigkeiten.

sudo snap install --classic vscode

Konfiguration

Im Gegensatz zu Atom hat VSC keine grafische Darstellung der Konfiguration (File - Preferences - Settings) ... stattdessen wird die Konfiguration als Textdatei angezeigt.

Die Konfiguration kann auf verschiedenen Ebenen erfolgen:

  • userspezifisch: ~/.config/Code - Insiders/User/settings.json

  • projektspezifisch (Projekt = Workspace): ${PROJECT_DIR}/.vscode/settings.json

Man überschreibt dann immer die Default-Setting, die man nicht ändern kann ... eine gute Idee.

Lieblingssettings

  • workbench.editor.enablePreview : false

    • VSC unterscheidet zwischen Open in Preview-Mode (wenn man per Go to File eine Datei öffnet) und Open in Full Mode (wenn man eine Datei per Mausclick öffnet). Im Preview-Mode kann nur eine einzige Datei im Tab offengehalten werden ... das öffnen der nächsten Datei tauscht diesen Tab aus - die vorige Datei ist dann wieder zu. Total dämlich ... ganz schnell weg damit.

  • markdown-pdf.convertOnSave : true

Meine Keybindings

  • Eclipse Keymap ... Plugin nachinstalliert

  • Terminal anzeigen/verstecken: Ctrl-^

  • Ctrl-3 Kommandos anzeigen/ausführen

  • Ctrl-Shift-r Suche nach Ressourcen

  • Ctrl-r switch folder/project

    • bei der Auswahl Ctrl drücken => weiteres Fenster wird geöffnet

  • Ctrl-e Liste der geöffneten Files ... Navigation per Ctrl-(Shift)-e

  • Ctrl-, Settings anschauen

  • Ctrl-. Keybindings anschauen

Plugins

  • Git benötigt auf dem Host-System das Tool ssh-askpass, um die Passphrase für das ssh-Zertifikat abzufragen

Gimmicks

VSC für Add-Hoc Editierungen

Wenn man viel auf der Kommandozeile unterwegs ist, braucht man immer wieder einen Editor für Dateien, die irgendwo im Filesystem liegen und somit nicht in der IDE der Wahl integriert sind. Meistens werden dann textbasierte Editoren wie vi oder emacs verwendet, die überall verfügbar und schnell geladen sind.

Mit

code-insiders --goto file1.txt

wird die angegebene Datei geöffnet. Leider dauert der Start von VSC im Vergleich zu vi/emacs leider 1-2 Sekunden, aber das ist aus meiner Sicht zu verschmerzen.

Ich habe mir ein kleines Shellscript (visualStudioCode.sh) geschrieben, um den Aufruf noch komfortabaler zu gestalten:

#!/bin/bash
if [ "$#" == "1" ]; then
   _options="--goto ${1}"
fi
~/programs/VSCode-linux-x64/code-insiders --disable-gpu ${_options}

Dieses Shellscript habe ich zudem noch als alias v=${PATH_TO}/visualStudioCode.sh, so daß ich nun per v file1.txt ganz schnell eine beliebige Datei mit VSC bearbeiten kann.

Nochmal interessanter wird es dadurch, daß auch Zeileneinsprünge möglich sind. Hat man beispielsweise einen String mit grep gesucht hat:

╭─pfh@workbench ~/temp
╰─➤  grep -ri Sonne *
test/pierre.txt:35:Sonne scheint

Per v test/pierre.txt:35 wird VSC direkt an der richtigen Stelle geöffnet.

... echtes Workbench Feeling :-)

VSC als Difftool

VCS unterstützt Parameter über die Command-Line

code-insiders --diff file1.txt file2.txt

... auf diese Weise kann man den Editor sehr gut als Difftool (statt GNU diff) verwenden.

Kleine Einschränkung: im Vergleich zu diff startet dieses Difftool mit einer Verzögerung von 1-2 Sekunden (je nach Rechner) ... aus meiner Sicht ist das zu verschmerzen

FAQ

Frage 1: Dateien werden manchmanl nicht in einem neuen Tab geöffnet, sondern ein bestehender Tab wird wiederverwendet (die darin angezeigte Datei wird ausgetauscht).

Antwort 1: VSC kennt den sog. Preview-Modus - erkennbar an der kursiven Schrift auf dem Editor-Tab. In diesem Modus erfolgt per Default ein Austausch des Contents. Will man immer ein neues Tab geöffnet haben, so sollte man die Einstellung "workbench.editor.enablePreview": false verwenden.

Frage 2: Nach dem Start geht die CPU-Auslastung gleich auf 50% hoch (bei 4 Kernen) - nach Beendigung geht sie wieder runter. Da meine Linux-Umgebung in einer VirtualBox läuft habe ich die Einstellung -disable-gpu verwendet. Vielleicht würden die Aufgaben normalerweise von der GPU übernommen ... jetzt muß es eben die CPU machen?

Antwort 2: Die Lösung ist viel einfacher - ich hatte das Java Extension Pack installiert und das scannt/verarbeitet dann alle pom.xml und Java-Klassen. Nach der Deaktivierung war der CPU-Verbrauch nach dem Start wieder normal. Ich hatte das mal reingenommen, weil ich bei einem sehr großen Projekt extreme Probleme mit meinem Eclipse hatte (lange Buildzeiten + UI nicht mehr bedienbar) - jetzt verwende ich IDEA ... deshalb brauche ich das Java Extension Pack nicht mehr.

Frage 3: Mein Config-Verzeichnis von VSC (~/.config/Code - Insiders) ist mit über 3 GB extrem groß. Was verbraucht soviel Platz?

Antowrt 3: Das Verzeichnis ~/.config/Code - Insiders/User/workspaceStorage enthielt sehr viele Workspaces und insgesamt knapp 3GB. Viele Workspaces waren sehr alt und nicht mehr genutzt. Ich habe sie gelöscht (bis auf einen) und danach hatte das Config-Verzeichnis nur noch eine Größe von 0,3 GB.

Frage 4: Beim Wechsel von 1.22 auf 1.23 waren plötzlich meine Shortcuts weg???

Antowrt 4: Die Version 1.23 verwendet für die Konfigurationsdateien nicht mehr das Verzeichnis ~/.config/Code - Insiders/ sondern ~/.config/Code/ und deshalb wurden meine Shortcuts nicht mehr gefunden. Am besten setzt man einen symbolischen Link, um die MOMPLETTE alte Konfigurationen beizubehalten.

PreviousTexteditorsNextIntelliJ - IDEA

Last updated 3 years ago

Was this helpful?