VS Code
VS Code or Visual Studio Code is a lightweight but powerful source code editor which runs on the desktop, and is available for Windows, macOS, and Linux.
Installation
USE flags
USE flags for app-editors/vscode Multiplatform Visual Studio Code from Microsoft
egl
Use EGL platform, enables smooth rendering in high refresh rate monitors on X11/Xwayland
wayland
Run in wayland mode under wayland sessions, xwayland otherwise. This flag doesn't affect x11 sessions.
webkit
Enable extensions that require WebKit (e.g., Microsoft authentication).
Before Installation
Microsoft Visual Studio Code uses telemetry (record some aspects of usage, machine, etc., and send this data back to Microsoft). Understand this before accepting the EULA and unmasking the package, otherwise install the free/libre version app-editors/vscodium .
In order to install VS Code the user needs to accept the Microsoft-vscode license agreement. A copy of the license can be found at /var/db/repos/gentoo/licenses/Microsoft-vscode. Read with:
user $less /var/db/repos/gentoo/licenses/Microsoft-vscodeAnd to agree:
root #echo "app-editors/vscode Microsoft-vscode" >> /etc/portage/package.licenseTo prefer the free/libre version of VS Code, install VSCodium with the package app-editors/vscodium , which completely removes telemetry. To learn the differences, read the upstream documentation.
VSCodium has no telemetry but has a limited number of extensions because of the VS Code Marketplace Terms of Use. For this reason it uses open-vsx.org, an open source registry for VS Code extensions.
Emerge
Emerge Microsoft's release with:
root #emerge --ask app-editors/vscodeOr emerge the free/libre release with:
root #emerge --ask app-editors/vscodiumUsage
Depending on the version installed, run VS Code with:
user $vscodeOr:
user $vscodiumInvocation
user $vscode --helpVisual Studio Code _Version_here_
Usage: code [options][paths...]
To read from stdin, append '-' (e.g. 'ps aux | grep code | code -')
Options
-d --diff <file> <file> Compare two files with each other.
-a --add <folder> Add folder(s) to the last active window.
-g --goto <file:line[:character]> Open a file at the path on the specified
line and character position.
-n --new-window Force to open a new window.
-r --reuse-window Force to open a file or folder in an
already opened window.
-w --wait Wait for the files to be closed before
returning.
--locale <locale> The locale to use (e.g. en-US or zh-TW).
--user-data-dir <dir> Specifies the directory that user data is
kept in. Can be used to open multiple
distinct instances of Code.
-h --help Print usage.
Extensions Management
--extensions-dir <dir>
Set the root path for extensions.
--list-extensions
List the installed extensions.
--show-versions
Show versions of installed extensions, when using --list-extensions.
--category <category>
Filters installed extensions by provided category, when using --list-extensions.
--install-extension <extension-id[@version] | path-to-vsix>
Installs or updates the extension. The identifier of an extension is always `${publisher}.${name}`. Use `--force` argument to update to latest version. To install a
specific version provide `@${version}`. For example: 'vscode.csharp@1.2.3'.
--pre-release
Installs the pre-release version of the extension, when using --install-extension
--uninstall-extension <extension-id>
Uninstalls an extension.
--enable-proposed-api <extension-id>
Enables proposed API features for extensions. Can receive one or more extension IDs to enable individually.
Troubleshooting
-v --version Print version.
--verbose Print verbose output (implies --wait).
--log <level> Log level to use. Default is 'info'.
Allowed values are 'critical', 'error',
'warn', 'info', 'debug', 'trace', 'off'.
-s --status Print process usage and diagnostics
information.
--prof-startup Run CPU profiler during startup.
--disable-extensions Disable all installed extensions.
--disable-extension <extension-id> Disable an extension.
--sync <on> <off> Turn sync on or off.
--inspect-extensions <port> Allow debugging and profiling of
extensions. Check the developer tools for
the connection URI.
--inspect-brk-extensions <port> Allow debugging and profiling of
extensions with the extension host being
paused after start. Check the developer
tools for the connection URI.
--disable-gpu Disable GPU hardware acceleration.
--max-memory <memory> Max memory size for a window (in Mbytes).
--telemetry Shows all telemetry events which VS code
collects.
Tips
Disable Telemetry
See information on how to change or completely disable telemetry on VS Code. Read the full page to understand telemetry, data protection, and privacy.
Troubleshooting
Login with GitHub doesn't work
Writing login information to the keychain failed with error: Object does not exist at path "/org/freedesktop/secrets/collection/login". On systemd systems: add this line to the WM init file:[1]
user $source /etc/X11/xinit/xinitrc.d/50-systemd-user.shOn OpenRC systems, run this program before starting VSCode or add it to WM init file:[2]
user $dbus-update-activation-environment --allVery high CPU usage
VS Code could spawn a process called rg and cause huge stress for the CPU. A workaround can be done by setting the "search.followSymlinks" option to false in the options panel, following issue https://github.com/microsoft/vscode/issues/98594#issuecomment-643871783.
See also
- Text editor — a program to create and edit text files.