IDE Integration Deep Dive
Advanced configuration guides for VS Code Remote SSH, JetBrains Gateway, Neovim, and terminal-based workflows in Cloud Development Environments.
VS Code Remote SSH
Optimized configuration for seamless remote development
SSH Configuration (~/.ssh/config)
# CDE Workspace - Optimized for VS Code
Host cde-workspace
HostName your-cde.company.com
User developer
Port 22
# Performance optimizations
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 3
# Faster connection multiplexing
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
# VS Code specific
ForwardAgent yes
AddKeysToAgent yes
IdentityFile ~/.ssh/cde_key
# Disable strict host checking for dynamic IPs
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
LogLevel ERROR
Note: Create the sockets directory: mkdir -p ~/.ssh/sockets
VS Code Settings (settings.json)
{
// Remote SSH optimizations
"remote.SSH.remotePlatform": {
"cde-workspace": "linux"
},
"remote.SSH.connectTimeout": 60,
"remote.SSH.showLoginTerminal": true,
"remote.SSH.useLocalServer": false,
// Performance settings
"remote.SSH.localServerDownload": "off",
"remote.SSH.remoteServerListenOnSocket": true,
// File watcher optimization
"files.watcherExclude": {
"**/node_modules/**": true,
"**/.git/objects/**": true,
"**/vendor/**": true
},
// Search optimization
"search.exclude": {
"**/node_modules": true,
"**/dist": true
},
// Extension sync
"remote.SSH.defaultExtensions": [
"ms-python.python",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint"
]
}
Recommended Extensions for Remote Development
Core extension for remote development
Manage multiple remote connections
Sync settings across workspaces
JetBrains Gateway
IntelliJ IDEA, PyCharm, WebStorm, and GoLand remote configuration
Initial Gateway Setup
Step 1: Install Gateway
- 1.Download JetBrains Gateway from jetbrains.com/gateway
- 2.Install and launch Gateway
- 3.Sign in with your JetBrains account
- 4.Select "SSH Connection" from the menu
Step 2: Configure Connection
- 1.Enter CDE hostname and username
- 2.Select SSH key authentication
- 3.Choose project path on remote
- 4.Select IDE (IntelliJ, PyCharm, etc.)
Performance Tuning
# ~/.config/JetBrains/RemoteDev/options/other.xml
# Add these VM options for better performance:
-Xmx4096m # Increase heap for large projects
-XX:+UseG1GC # Use G1 garbage collector
-XX:MaxGCPauseMillis=200 # Limit GC pauses
# Network optimizations (on CDE server)
# Add to /etc/sysctl.conf:
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# Indexing exclusions (idea.properties)
idea.max.intellisense.filesize=2500
idea.max.content.load.filesize=20000
Coder Gateway Plugin
If using Coder, install the official Gateway plugin for seamless workspace connection:
# Install Coder CLI
curl -L https://coder.com/install.sh | sh
# Configure Gateway plugin
# Gateway > Settings > Plugins > Search "Coder"
# Or install from: plugins.jetbrains.com/plugin/19620-coder
Neovim & Vim Configuration
Terminal-based development with full LSP support
Neovim LSP Setup for Remote
-- init.lua for remote development
-- Lazy.nvim plugin manager
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git", "clone", "--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
-- LSP Support
"neovim/nvim-lspconfig",
"williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim",
-- Autocompletion
"hrsh7th/nvim-cmp",
"hrsh7th/cmp-nvim-lsp",
"L3MON4D3/LuaSnip",
-- Fuzzy finder
"nvim-telescope/telescope.nvim",
"nvim-lua/plenary.nvim",
-- File explorer
"nvim-tree/nvim-tree.lua",
})
-- Mason setup for LSP servers
require("mason").setup()
require("mason-lspconfig").setup({
ensure_installed = {
"lua_ls", "pyright", "ts_ls",
"gopls", "rust_analyzer"
}
})
Tmux Configuration for CDE
# ~/.tmux.conf optimized for remote
# Enable mouse support
set -g mouse on
# Increase scrollback buffer
set -g history-limit 50000
# Faster key repetition
set -s escape-time 0
# Activity monitoring
setw -g monitor-activity on
set -g visual-activity on
# Status bar with CDE info
set -g status-right '#[fg=green]#(hostname) #[fg=yellow]%H:%M'
# Resurrect sessions on reconnect
# (Install tmux-resurrect plugin)
set -g @resurrect-capture-pane-contents 'on'
set -g @continuum-restore 'on'
# Vi mode for copy
setw -g mode-keys vi
bind-key -T copy-mode-vi v send -X begin-selection
bind-key -T copy-mode-vi y send -X copy-selection
# Easy window navigation
bind -n M-h select-pane -L
bind -n M-j select-pane -D
bind -n M-k select-pane -U
bind -n M-l select-pane -R
Dotfiles & Personalization
Sync your personal configuration across all workspaces
Dotfiles Repository Structure
dotfiles/
├── install.sh # Bootstrap script
├── .bashrc # Bash config
├── .zshrc # Zsh config
├── .gitconfig # Git settings
├── .tmux.conf # Tmux config
├── .vimrc # Vim config
├── nvim/
│ └── init.lua # Neovim config
├── vscode/
│ └── settings.json # VS Code settings
└── scripts/
└── cde-setup.sh # CDE-specific setup
Bootstrap Script (install.sh)
#!/bin/bash
# Clone and setup dotfiles
DOTFILES="$HOME/.dotfiles"
# Clone if not exists
if [ ! -d "$DOTFILES" ]; then
git clone https://github.com/you/dotfiles "$DOTFILES"
fi
# Symlink configs
ln -sf "$DOTFILES/.bashrc" "$HOME/.bashrc"
ln -sf "$DOTFILES/.gitconfig" "$HOME/.gitconfig"
ln -sf "$DOTFILES/.tmux.conf" "$HOME/.tmux.conf"
ln -sf "$DOTFILES/nvim" "$HOME/.config/nvim"
echo "Dotfiles installed!"
Coder
# coder.yaml template
dotfiles_uri: https://github.com/you/dotfiles
dotfiles_install_command: ./install.sh
Codespaces
// devcontainer.json
"dotfiles.repository": "you/dotfiles",
"dotfiles.targetPath": "~/.dotfiles",
"dotfiles.installCommand": "./install.sh"
Gitpod
# .gitpod.yml
tasks:
- before: |
git clone https://github.com/you/dotfiles ~/.dotfiles
~/.dotfiles/install.sh
Continue Your IDE Setup
Related technical resources