Claude Code IDE Integration Guide
Integrate Claude Code with popular IDEs and text editors for seamless AI-powered development
Prerequisites
Claude Code IDE Integration Guide
Transform your development environment with Claude Code's powerful IDE integrations. This comprehensive guide covers setup, configuration, and advanced usage of Claude Code within popular integrated development environments.
Table of Contents
- Overview of IDE Integrations
- VS Code Integration
- JetBrains IDEs Integration
- Vim/Neovim Integration
- Sublime Text Integration
- Emacs Integration
- Custom IDE Integration
- Advanced Features and Workflows
- Troubleshooting Common Issues
- Best Practices
Overview of IDE Integrations
Claude Code integrates seamlessly with popular IDEs to provide AI assistance directly in your coding environment. These integrations offer:
Key Benefits
- Contextual Assistance: Claude understands your entire project structure
- Inline Suggestions: Get AI help without leaving your editor
- Real-time Code Review: Continuous feedback as you code
- Integrated Documentation: Generate docs within your IDE
- Custom Shortcuts: Quick access to Claude's features
Supported IDEs
IDE | Support Level | Features |
---|---|---|
VS Code | Full | All features, official extension |
JetBrains Suite | Full | IntelliJ, WebStorm, PyCharm, etc. |
Vim/Neovim | Full | Native plugin with LSP support |
Sublime Text | Partial | Core features via package |
Emacs | Partial | Elisp package available |
Atom | Community | Third-party package |
VS Code Integration
Installation
Method 1: VS Code Marketplace
- Open VS Code
- Press
Cmd+Shift+X
(Mac) orCtrl+Shift+X
(Windows/Linux) - Search for "Claude Code"
- Click Install on the official extension by Anthropic
Method 2: Command Line
# Install via Claude Code CLI
claude-code install vscode-extension
# Or directly with VS Code
code --install-extension anthropic.claude-code
Configuration
Extension Settings
Open VS Code settings (Cmd+,
or Ctrl+,
) and search for "Claude Code":
{
"claudeCode.apiKey": "your-api-key",
"claudeCode.model": "claude-3-opus",
"claudeCode.enableAutoComplete": true,
"claudeCode.autoCompleteDelay": 500,
"claudeCode.contextWindow": 8000,
"claudeCode.enableInlineReview": true,
"claudeCode.reviewOnSave": false,
"claudeCode.codeActions": {
"enabled": true,
"suggestions": ["refactor", "optimize", "document"]
},
"claudeCode.keybindings": {
"askClaude": "cmd+shift+c",
"reviewCode": "cmd+shift+r",
"generateTests": "cmd+shift+t",
"explainCode": "cmd+shift+e"
}
}
Workspace-Specific Settings
Create .vscode/settings.json
in your project:
{
"claudeCode.projectContext": {
"framework": "React",
"language": "TypeScript",
"testFramework": "Jest",
"styleGuide": "airbnb"
},
"claudeCode.excludePatterns": [
"**/node_modules/**",
"**/build/**",
"**/*.test.js"
],
"claudeCode.customPrompts": {
"review": "Review this code focusing on React best practices and performance",
"test": "Generate comprehensive Jest tests with React Testing Library"
}
}
Core Features
1. Inline Code Assistance
// Type a comment and press Tab to get Claude's help
// TODO: Create a custom hook for form validation
// Claude will generate:
import { useState, useCallback } from 'react';
interface ValidationRules {
required?: boolean;
minLength?: number;
pattern?: RegExp;
custom?: (value: any) => string | null;
}
export function useFormValidation<T extends Record<string, any>>(
initialValues: T,
validationRules: Record<keyof T, ValidationRules>
) {
const [values, setValues] = useState<T>(initialValues);
const [errors, setErrors] = useState<Partial<Record<keyof T, string>>>({});
const validate = useCallback((name: keyof T, value: any) => {
const rules = validationRules[name];
if (!rules) return null;
if (rules.required && !value) {
return 'This field is required';
}
if (rules.minLength && value.length < rules.minLength) {
return `Minimum length is ${rules.minLength}`;
}
if (rules.pattern && !rules.pattern.test(value)) {
return 'Invalid format';
}
if (rules.custom) {
return rules.custom(value);
}
return null;
}, [validationRules]);
// ... rest of implementation
}
2. Code Actions
Right-click on any code selection to access Claude Code actions:
- Explain This Code: Get detailed explanations
- Refactor: Improve code structure
- Add Comments: Generate inline documentation
- Generate Tests: Create unit tests
- Find Bugs: Identify potential issues
- Optimize: Improve performance
3. Command Palette Integration
Access all Claude Code features via Command Palette (Cmd+Shift+P
):
> Claude Code: Ask Question
> Claude Code: Review Current File
> Claude Code: Generate Documentation
> Claude Code: Create Tests for Function
> Claude Code: Explain Error
> Claude Code: Suggest Improvements
4. Status Bar Integration
The Claude Code status bar shows:
- Connection status
- Current model
- Token usage
- Quick actions menu
Advanced VS Code Features
Custom Code Snippets
Create Claude-powered snippets in .vscode/claude-snippets.json
:
{
"React Functional Component": {
"prefix": "rfc-claude",
"body": [
"// @claude generate a React functional component",
"// name: ${1:ComponentName}",
"// props: ${2:props description}",
"// features: ${3:component features}"
],
"description": "Generate React component with Claude"
},
"API Endpoint": {
"prefix": "api-claude",
"body": [
"// @claude create REST API endpoint",
"// method: ${1:GET|POST|PUT|DELETE}",
"// path: ${2:/api/resource}",
"// auth: ${3:JWT|API_KEY|PUBLIC}",
"// validation: ${4:validation rules}"
]
}
}
Workspace Tasks
Configure tasks in .vscode/tasks.json
:
{
"version": "2.0.0",
"tasks": [
{
"label": "Claude: Review All Files",
"type": "shell",
"command": "claude-code",
"args": ["batch", "review", "${workspaceFolder}/src/**/*.{js,ts}"],
"problemMatcher": []
},
{
"label": "Claude: Generate Tests",
"type": "shell",
"command": "claude-code",
"args": ["test", "${file}", "--coverage=90"],
"problemMatcher": []
}
]
}
JetBrains IDEs Integration
Installation
For IntelliJ IDEA, WebStorm, PyCharm, etc.
- Open your JetBrains IDE
- Go to
Preferences
→Plugins
- Search for "Claude Code"
- Install and restart IDE
Or via command line:
claude-code install jetbrains-plugin --ide=webstorm
Configuration
Plugin Settings
Navigate to Preferences
→ Tools
→ Claude Code
:
<!-- .idea/claude-code.xml -->
<component name="ClaudeCodeSettings">
<option name="apiKey" value="your-api-key" />
<option name="model" value="claude-3-opus" />
<option name="enableAutoSuggestions" value="true" />
<option name="suggestionDelay" value="1000" />
<option name="enableCodeInspections" value="true" />
<option name="inspectionSeverity" value="WARNING" />
<option name="contextSize" value="8000" />
</component>
JetBrains-Specific Features
1. Intelligent Code Completion
public class UserService {
private final UserRepository repository;
// Type "// create a method to" and press Ctrl+Space
// create a method to find users by email domain
// Claude generates:
public List<User> findUsersByEmailDomain(String domain) {
return repository.findAll().stream()
.filter(user -> user.getEmail() != null)
.filter(user -> user.getEmail().endsWith("@" + domain))
.collect(Collectors.toList());
}
}
2. Intention Actions
Press Alt+Enter
on any code element:
- Generate getter/setter with validation
- Create builder pattern
- Implement design patterns
- Add comprehensive error handling
3. Live Templates with Claude
Create dynamic templates:
// Settings → Editor → Live Templates
Abbreviation: test-claude
Template text:
@Test
public void test$METHOD_NAME$() {
// @claude generate test for $METHOD_NAME$ with edge cases
$END$
}
4. Code Inspections
Claude Code adds custom inspections:
- Security vulnerability detection
- Performance anti-patterns
- Code smell identification
- Best practice violations
Vim/Neovim Integration
Installation
Using vim-plug
" ~/.vimrc or ~/.config/nvim/init.vim
call plug#begin()
Plug 'anthropic/claude-code.vim'
call plug#end()
Using Packer (Neovim)
-- ~/.config/nvim/lua/plugins.lua
use {
'anthropic/claude-code.nvim',
config = function()
require('claude-code').setup({
api_key = vim.env.CLAUDE_API_KEY,
model = 'claude-3-opus',
})
end
}
Configuration
Basic Setup
" ~/.vimrc
let g:claude_code_api_key = $CLAUDE_API_KEY
let g:claude_code_model = 'claude-3-opus'
let g:claude_code_context_lines = 50
let g:claude_code_auto_complete = 1
" Key mappings
nmap <leader>cc :ClaudeAsk<CR>
nmap <leader>cr :ClaudeReview<CR>
nmap <leader>ce :ClaudeExplain<CR>
nmap <leader>ct :ClaudeTest<CR>
nmap <leader>cd :ClaudeDocument<CR>
vmap <leader>cf :ClaudeRefactor<CR>
Neovim Lua Configuration
-- ~/.config/nvim/after/plugin/claude-code.lua
local claude = require('claude-code')
claude.setup({
api_key = os.getenv('CLAUDE_API_KEY'),
model = 'claude-3-opus',
keymaps = {
ask = '<leader>cc',
review = '<leader>cr',
explain = '<leader>ce',
test = '<leader>ct',
document = '<leader>cd',
refactor = '<leader>cf',
},
auto_complete = {
enabled = true,
delay = 500,
trigger_chars = { '.', ':', '(' },
},
context = {
lines_before = 50,
lines_after = 50,
include_imports = true,
},
})
-- Custom commands
vim.api.nvim_create_user_command('ClaudeOptimize', function()
claude.optimize_current_function()
end, {})
vim.api.nvim_create_user_command('ClaudeGenerateTests', function()
claude.generate_tests_for_file()
end, {})
Vim/Neovim Features
1. Omni-completion Integration
" Enable Claude-powered completion
set omnifunc=claude_code#Complete
" Use with <C-x><C-o> in insert mode
inoremap <C-Space> <C-x><C-o>
2. Quick Fix Integration
" Run Claude review and populate quickfix
:ClaudeReview
:copen " Open quickfix window
" Navigate issues
:cn " Next issue
:cp " Previous issue
3. Custom Text Objects
" Claude-aware text objects
" vic - Change inside comment (with Claude suggestions)
" vaf - Select around function (with analysis)
" dam - Delete around method (with refactoring suggestions)
Sublime Text Integration
Installation
# Via Package Control
1. Open Command Palette (Cmd+Shift+P)
2. Select "Package Control: Install Package"
3. Search for "Claude Code"
4. Select to install
# Manual installation
cd ~/Library/Application\ Support/Sublime\ Text/Packages/
git clone https://github.com/anthropic/claude-code-sublime.git "Claude Code"
Configuration
// Preferences.sublime-settings
{
"claude_code": {
"api_key": "your-api-key",
"model": "claude-3-opus",
"auto_complete": true,
"complete_on_tab": true,
"review_on_save": false,
"show_inline_hints": true
}
}
Key Bindings
// Default.sublime-keymap
[
{
"keys": ["super+shift+c"],
"command": "claude_ask"
},
{
"keys": ["super+shift+r"],
"command": "claude_review_file"
},
{
"keys": ["super+shift+t"],
"command": "claude_generate_test"
}
]
Emacs Integration
Installation
;; Using straight.el
(straight-use-package
'(claude-code :type git :host github :repo "anthropic/claude-code.el"))
;; Using use-package
(use-package claude-code
:ensure t
:config
(setq claude-code-api-key (getenv "CLAUDE_API_KEY"))
(setq claude-code-model "claude-3-opus"))
Configuration
;; ~/.emacs.d/init.el
(require 'claude-code)
;; Basic configuration
(setq claude-code-api-key (getenv "CLAUDE_API_KEY")
claude-code-model "claude-3-opus"
claude-code-context-lines 100
claude-code-auto-complete-delay 0.5)
;; Key bindings
(global-set-key (kbd "C-c c a") 'claude-code-ask)
(global-set-key (kbd "C-c c r") 'claude-code-review-buffer)
(global-set-key (kbd "C-c c e") 'claude-code-explain-region)
(global-set-key (kbd "C-c c t") 'claude-code-generate-test)
(global-set-key (kbd "C-c c d") 'claude-code-document-function)
;; Enable claude-code-mode in programming modes
(add-hook 'prog-mode-hook 'claude-code-mode)
;; Company mode integration
(with-eval-after-load 'company
(add-to-list 'company-backends 'claude-code-company-backend))
Emacs-Specific Features
;; Custom interactive functions
(defun claude-code-improve-function ()
"Improve the function at point with Claude's suggestions."
(interactive)
(let ((func (thing-at-point 'defun)))
(claude-code-ask
(format "Improve this function:\n%s" func)
(lambda (response)
(when (y-or-n-p "Apply improvements?")
(delete-region (car (bounds-of-thing-at-point 'defun))
(cdr (bounds-of-thing-at-point 'defun)))
(insert response))))))
;; Org-mode integration
(defun claude-code-org-babel ()
"Use Claude to explain or improve code blocks in org-mode."
(interactive)
(when (org-in-src-block-p)
(let ((code (org-element-property :value (org-element-at-point))))
(claude-code-ask
(format "Explain this code:\n%s" code)
(lambda (response)
(org-babel-insert-result response))))))
Custom IDE Integration
Building Your Own Integration
Step 1: Create Language Server Protocol (LSP) Wrapper
// claude-code-lsp/src/server.ts
import {
createConnection,
TextDocuments,
ProposedFeatures,
InitializeParams,
TextDocumentSyncKind,
CompletionItem,
CompletionItemKind
} from 'vscode-languageserver/node';
import { TextDocument } from 'vscode-languageserver-textdocument';
import { ClaudeCodeAPI } from '@anthropic/claude-code-sdk';
const connection = createConnection(ProposedFeatures.all);
const documents: TextDocuments<TextDocument> = new TextDocuments(TextDocument);
const claude = new ClaudeCodeAPI({
apiKey: process.env.CLAUDE_API_KEY
});
connection.onInitialize((params: InitializeParams) => {
return {
capabilities: {
textDocumentSync: TextDocumentSyncKind.Incremental,
completionProvider: {
resolveProvider: true,
triggerCharacters: ['.', ':', '(', '"', "'", '{', '[']
},
hoverProvider: true,
definitionProvider: true,
codeActionProvider: true
}
};
});
connection.onCompletion(async (params) => {
const document = documents.get(params.textDocument.uri);
if (!document) return [];
const text = document.getText();
const position = params.position;
const line = document.getText({
start: { line: position.line, character: 0 },
end: { line: position.line, character: position.character }
});
const completions = await claude.getCompletions({
code: text,
position: document.offsetAt(position),
language: document.languageId
});
return completions.map((item, index) => ({
label: item.label,
kind: CompletionItemKind.Text,
detail: item.detail,
documentation: item.documentation,
insertText: item.insertText,
sortText: String(index).padStart(3, '0')
}));
});
documents.listen(connection);
connection.listen();
Step 2: Create Editor Plugin
# claude_code_plugin.py - Example for any Python-based editor
import os
import json
import requests
from typing import List, Dict, Optional
class ClaudeCodePlugin:
def __init__(self, api_key: str = None):
self.api_key = api_key or os.getenv('CLAUDE_API_KEY')
self.base_url = 'https://api.anthropic.com/v1'
self.model = 'claude-3-opus-20240229'
def complete(self, code: str, cursor_position: int,
context: Optional[Dict] = None) -> List[str]:
"""Get code completions at cursor position."""
prompt = self._build_completion_prompt(code, cursor_position, context)
response = self._call_claude(prompt)
return self._parse_completions(response)
def review(self, code: str, language: str = 'python') -> Dict:
"""Review code and return suggestions."""
prompt = f"""Review this {language} code:
```{language}
{code}
Provide:
-
Issues found (severity: error/warning/info)
-
Suggestions for improvement
-
Security concerns
-
Performance optimizations """ response = self._call_claude(prompt) return self._parse_review(response)
def explain(self, code: str, selection: Optional[str] = None) -> str: """Explain code or selection.""" target = selection or code prompt = f"Explain this code in detail:\n\n{target}" return self._call_claude(prompt)
def _call_claude(self, prompt: str) -> str: """Make API call to Claude.""" headers = { 'x-api-key': self.api_key, 'content-type': 'application/json', 'anthropic-version': '2023-06-01' }
data = { 'model': self.model, 'messages': [{'role': 'user', 'content': prompt}], 'max_tokens': 1000 } response = requests.post( f'{self.base_url}/messages', headers=headers, json=data ) return response.json()['content'][0]['text']
def _build_completion_prompt(self, code: str, position: int, context: Optional[Dict]) -> str: """Build completion prompt with context.""" lines = code.split('\n') line_num = code[:position].count('\n') current_line = lines[line_num] if line_num < len(lines) else ''
prompt = f"""Complete the code at the cursor position (marked with |):
Context: {json.dumps(context or {})}
Code: {code[:position]}|{code[position:]}
Current line: {current_line}
Provide multiple completion options that would make sense at the cursor position. """ return prompt
#### Step 3: Register with Your IDE
Example for a generic IDE API:
```javascript
// ide-integration.js
const { ClaudeCodePlugin } = require('./claude-code-plugin');
class ClaudeCodeIDEIntegration {
constructor(ide) {
this.ide = ide;
this.plugin = new ClaudeCodePlugin();
this.registerCommands();
this.registerProviders();
}
registerCommands() {
// Register commands with your IDE
this.ide.registerCommand('claude-code.ask', async () => {
const input = await this.ide.showInputBox({
prompt: 'Ask Claude a question'
});
if (input) {
const response = await this.plugin.ask(input);
this.ide.showInformationMessage(response);
}
});
this.ide.registerCommand('claude-code.review', async () => {
const editor = this.ide.getActiveEditor();
const code = editor.getText();
const review = await this.plugin.review(code);
// Show review results in IDE's problem panel
this.ide.showProblems(review.issues.map(issue => ({
line: issue.line,
column: issue.column,
severity: issue.severity,
message: issue.message,
source: 'Claude Code'
})));
});
}
registerProviders() {
// Register completion provider
this.ide.registerCompletionProvider({
provideCompletions: async (document, position) => {
const code = document.getText();
const offset = document.offsetAt(position);
const completions = await this.plugin.complete(code, offset);
return completions.map(completion => ({
label: completion.label,
insertText: completion.text,
documentation: completion.description
}));
}
});
// Register hover provider
this.ide.registerHoverProvider({
provideHover: async (document, position) => {
const wordRange = document.getWordRangeAtPosition(position);
const word = document.getText(wordRange);
const explanation = await this.plugin.explain(word);
return {
contents: explanation,
range: wordRange
};
}
});
}
}
Advanced Features and Workflows
Multi-File Refactoring
Configure your IDE to handle complex refactoring across multiple files:
// VS Code example - multi-file refactoring
const vscode = require('vscode');
const { ClaudeCodeExtension } = require('./extension');
async function refactorProject() {
const files = await vscode.workspace.findFiles('**/*.{js,ts}', '**/node_modules/**');
const refactorPlan = await ClaudeCodeExtension.analyzeRefactoring(files, {
goal: 'Convert callbacks to async/await',
preserveApi: true,
updateTests: true
});
// Show refactoring preview
const preview = await ClaudeCodeExtension.showRefactoringPreview(refactorPlan);
if (preview.accepted) {
await ClaudeCodeExtension.applyRefactoring(refactorPlan);
}
}
IDE-Agnostic Workflow Automation
Create workflows that work across different IDEs:
# .claude-code/workflows/cross-ide-review.yaml
name: Cross-IDE Code Review
description: Comprehensive review workflow for any IDE
triggers:
- pre-commit
- manual
- save
steps:
- name: Analyze Changes
action: analyze
input:
files: ${changed_files}
baseline: ${baseline_branch}
- name: Security Check
action: security-scan
config:
severity: medium
includeDevDependencies: false
- name: Performance Analysis
action: performance-check
config:
threshold: 10ms
memorylimit: 100MB
- name: Generate Report
action: report
format: ${ide_format} # markdown, html, json
output: ${ide_output_channel}
ide_mappings:
vscode:
ide_format: markdown
ide_output_channel: output.showInformationMessage
jetbrains:
ide_format: html
ide_output_channel: toolWindow.show
vim:
ide_format: markdown
ide_output_channel: preview.show
Performance Monitoring
Track Claude Code performance across different IDEs:
// performance-monitor.ts
interface PerformanceMetrics {
responseTime: number;
tokensUsed: number;
cacheHitRate: number;
errorRate: number;
}
class ClaudeCodePerformanceMonitor {
private metrics: Map<string, PerformanceMetrics[]> = new Map();
async trackOperation(operation: string, func: () => Promise<any>) {
const start = Date.now();
let result;
let error = null;
try {
result = await func();
} catch (e) {
error = e;
}
const duration = Date.now() - start;
this.recordMetric(operation, {
responseTime: duration,
tokensUsed: result?.tokensUsed || 0,
cacheHitRate: result?.fromCache ? 1 : 0,
errorRate: error ? 1 : 0
});
if (error) throw error;
return result;
}
getReport(): string {
const report = [];
for (const [operation, metrics] of this.metrics) {
const avg = this.calculateAverages(metrics);
report.push(`${operation}:
Avg Response Time: ${avg.responseTime}ms
Avg Tokens: ${avg.tokensUsed}
Cache Hit Rate: ${(avg.cacheHitRate * 100).toFixed(1)}%
Error Rate: ${(avg.errorRate * 100).toFixed(1)}%`);
}
return report.join('\n\n');
}
}
Troubleshooting Common Issues
Connection Issues
Problem: "Cannot connect to Claude API from IDE"
Solutions:
-
Check API Key Configuration:
# VS Code code --list-extensions | grep claude-code # Verify settings cat ~/Library/Application\ Support/Code/User/settings.json | grep claudeCode
-
Proxy Configuration:
// IDE settings { "http.proxy": "http://proxy.company.com:8080", "claudeCode.proxy": "http://proxy.company.com:8080" }
-
Firewall/SSL Issues:
# Test connection curl -X POST https://api.anthropic.com/v1/messages \ -H "x-api-key: $CLAUDE_API_KEY" \ -H "content-type: application/json" \ -d '{"model":"claude-3-opus-20240229","messages":[{"role":"user","content":"test"}],"max_tokens":10}'
Performance Issues
Problem: "Slow completions in IDE"
Solutions:
-
Optimize Context Size:
{ "claudeCode.contextWindow": 4000, // Reduce from 8000 "claudeCode.contextStrategy": "smart", // Only relevant context "claudeCode.excludePatterns": [ "**/node_modules/**", "**/dist/**", "**/*.min.js" ] }
-
Use Caching:
{ "claudeCode.cache.enabled": true, "claudeCode.cache.duration": 3600, "claudeCode.cache.maxSize": "100MB" }
-
Choose Appropriate Model:
{ "claudeCode.modelSelection": { "completion": "claude-3-haiku", // Faster for completions "review": "claude-3-opus", // More thorough for reviews "explain": "claude-3-sonnet" // Balanced for explanations } }
IDE-Specific Issues
VS Code Extension Not Loading
# Check extension logs
code --verbose --log debug
# Reinstall extension
code --uninstall-extension anthropic.claude-code
code --install-extension anthropic.claude-code
# Clear extension cache
rm -rf ~/.vscode/extensions/anthropic.claude-code-*
JetBrains Plugin Conflicts
# Check for conflicts
ls ~/Library/Application\ Support/JetBrains/WebStorm*/plugins/
# Reset plugin settings
rm -rf ~/Library/Application\ Support/JetBrains/WebStorm*/options/claude-code.xml
Best Practices
1. Optimize Your IDE Setup
// Recommended base configuration
{
"claudeCode.general": {
"apiKey": "${env:CLAUDE_API_KEY}", // Use environment variable
"model": "claude-3-opus",
"temperature": 0.3, // Lower for more consistent code
"maxTokens": 4000
},
"claudeCode.context": {
"strategy": "smart",
"includeImports": true,
"includeComments": true,
"maxFiles": 10,
"maxFileSize": "100KB"
},
"claudeCode.features": {
"autoComplete": {
"enabled": true,
"delay": 500,
"minCharacters": 2,
"maxSuggestions": 5
},
"codeReview": {
"onSave": false, // Too intrusive
"onCommit": true,
"severity": "warning"
},
"inlineHints": {
"enabled": true,
"complexity": true,
"performance": true,
"security": true
}
}
}
2. Keyboard Shortcuts Strategy
Create a consistent shortcut scheme across IDEs:
Action | VS Code | JetBrains | Vim | Sublime |
---|---|---|---|---|
Ask Claude | Cmd+Shift+C |
Ctrl+Shift+C |
<leader>cc |
Cmd+Shift+C |
Review | Cmd+Shift+R |
Ctrl+Shift+R |
<leader>cr |
Cmd+Shift+R |
Explain | Cmd+Shift+E |
Ctrl+Shift+E |
<leader>ce |
Cmd+Shift+E |
Test | Cmd+Shift+T |
Ctrl+Shift+T |
<leader>ct |
Cmd+Shift+T |
3. Project-Specific Configuration
Create IDE configuration templates for different project types:
# Create configuration templates
claude-code config template create react-typescript
claude-code config template create python-django
claude-code config template create node-express
# Apply template to new projects
cd new-react-project
claude-code config template apply react-typescript
4. Team Collaboration
Share IDE configurations with your team:
// .vscode/settings.json (committed to repo)
{
"claudeCode.project": {
"type": "react-typescript",
"conventions": {
"components": "functional",
"stateManagement": "redux-toolkit",
"styling": "styled-components",
"testing": "jest + react-testing-library"
},
"codeReview": {
"focusAreas": ["performance", "accessibility", "security"],
"customRules": "${workspaceFolder}/.claude-code/review-rules.js"
}
},
// API key not included - each developer uses their own
"claudeCode.apiKey": "${env:CLAUDE_API_KEY}"
}
5. Performance Best Practices
-
Use Appropriate Models:
- Haiku for quick completions
- Sonnet for balanced features
- Opus for complex refactoring
-
Manage Context Wisely:
- Exclude build artifacts and dependencies
- Use smart context selection
- Limit context window for better performance
-
Cache Strategically:
- Enable caching for repeated operations
- Clear cache when switching projects
- Use project-specific cache directories
-
Batch Operations:
- Group related files for review
- Use workflow automation for repetitive tasks
- Schedule intensive operations during low-activity periods
Summary
You've learned how to integrate Claude Code with major IDEs:
- ✅ Installed and configured Claude Code for VS Code, JetBrains, Vim, Sublime, and Emacs
- ✅ Set up advanced features like custom completions and code actions
- ✅ Created custom IDE integrations using LSP
- ✅ Implemented cross-IDE workflows
- ✅ Optimized performance and troubleshot common issues
- ✅ Established best practices for team collaboration
Next Steps
- Explore Advanced Workflows: Claude Code Automation and Workflows
- Learn Team Features: Claude Code for Teams
- Master Debugging: Advanced Debugging with Claude Code
Resources
Last updated: January 2025 | Report an issue | Request IDE support