Development

VS Code Productivity: Essential Tips and Extensions

·5 min read
VS Code Productivity: Essential Tips and Extensions

VS Code Productivity: Essential Tips and Extensions

As a developer who spends countless hours in VS Code, I've discovered numerous ways to boost productivity. Here's a comprehensive guide to making the most of this powerful editor.

Essential Keyboard Shortcuts

1. Navigation Shortcuts

Master these shortcuts for faster navigation:

# File Navigation

Ctrl + P Quick file open
Ctrl + Shift + P Command palette
Ctrl + Tab Switch between open files
Alt + ←/→ Navigate back/forward

# Code Navigation

F12 Go to definition
Alt + F12 Peek definition
Shift + F12 Find all references
Ctrl + G Go to line
Ctrl + Shift + O Go to symbol in file
Ctrl + T Go to symbol in workspace

# Editor Management

Ctrl + \ Split editor
Ctrl + W Close editor
Ctrl + K Z Zen mode

2. Code Editing Shortcuts

Efficient code manipulation:

# Multi-Cursor Editing

Alt + Click Add cursor
Ctrl + Alt + ↑/↓ Add cursor above/below
Ctrl + D Select next occurrence
Ctrl + Shift + L Select all occurrences

# Code Manipulation

Alt + ↑/↓ Move line up/down
Shift + Alt + ↑/↓ Copy line up/down
Ctrl + / Toggle line comment
Ctrl + Shift + / Toggle block comment
Ctrl + Space Trigger suggestions

Essential Extensions

1. Productivity Extensions

Must-have extensions for development:

{
  "recommendations": [
    // IntelliSense & Code Completion
    "visualstudioexptteam.vscodeintellicode",
    "christian-kohler.path-intellisense",

    // Git Integration
    "eamodio.gitlens",
    "mhutchie.git-graph",

    // Code Quality
    "dbaeumer.vscode-eslint",
    "esbenp.prettier-vscode",
    "streetsidesoftware.code-spell-checker",

    // Productivity
    "formulahendry.auto-rename-tag",
    "formulahendry.auto-close-tag",
    "aaron-bond.better-comments",
    "wayou.vscode-todo-highlight"
  ]
}

2. Language-Specific Extensions

Extensions for different languages:

{
  "recommendations": {
    "javascript": [
      "mgmcdermott.vscode-language-babel",
      "xabikos.javascriptsnippets",
      "wix.vscode-import-cost"
    ],
    "typescript": ["rbbit.typescript-hero", "pmneo.tsimporter"],
    "python": ["ms-python.python", "ms-python.vscode-pylance"],
    "rust": ["rust-lang.rust-analyzer", "serayuzgur.crates"]
  }
}

Custom Settings

1. Editor Configuration

Optimize your editor settings:

// settings.json
{
  // Editor
  "editor.fontFamily": "'Fira Code', Consolas, 'Courier New', monospace",
  "editor.fontLigatures": true,
  "editor.fontSize": 14,
  "editor.lineHeight": 24,
  "editor.renderWhitespace": "boundary",
  "editor.rulers": [80, 100],
  "editor.minimap.enabled": false,
  "editor.suggestSelection": "first",
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",

  // Workbench
  "workbench.colorTheme": "GitHub Dark Default",
  "workbench.iconTheme": "material-icon-theme",
  "workbench.editor.enablePreview": false,

  // Files
  "files.trimTrailingWhitespace": true,
  "files.insertFinalNewline": true,
  "files.trimFinalNewlines": true,

  // Terminal
  "terminal.integrated.fontFamily": "MesloLGS NF",
  "terminal.integrated.fontSize": 14,

  // Git
  "git.enableSmartCommit": true,
  "git.confirmSync": false,
  "git.autofetch": true
}

2. Language-Specific Settings

Configure settings for different languages:

{
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
      "source.fixAll.eslint": true
    }
  },
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
      "source.fixAll.eslint": true,
      "source.organizeImports": true
    }
  },
  "[python]": {
    "editor.formatOnSave": true,
    "editor.defaultFormatter": "ms-python.python",
    "editor.rulers": [88],
    "editor.codeActionsOnSave": {
      "source.organizeImports": true
    }
  }
}

Custom Snippets

1. JavaScript/TypeScript Snippets

Create reusable code snippets:

{
  "Console Log": {
    "prefix": "cl",
    "body": ["console.log($1);"],
    "description": "Console log statement"
  },
  "React Function Component": {
    "prefix": "rfc",
    "body": [
      "interface ${1:${TM_FILENAME_BASE}}Props {",
      "  $2",
      "}",
      "",
      "export function ${1:${TM_FILENAME_BASE}}({ $3 }: ${1:${TM_FILENAME_BASE}}Props) {",
      "  return (",
      "    <div>",
      "      $4",
      "    </div>",
      "  );",
      "}"
    ],
    "description": "React Function Component with TypeScript"
  },
  "Try Catch": {
    "prefix": "tc",
    "body": [
      "try {",
      "  $1",
      "} catch (error) {",
      "  console.error('Error:', error);",
      "  $2",
      "}"
    ],
    "description": "Try-catch block"
  }
}

2. Project-Specific Snippets

Create snippets for your project:

{
  "API Endpoint": {
    "prefix": "api",
    "body": [
      "export async function ${1:functionName}(${2:params}) {",
      "  try {",
      "    const response = await fetch(`${API_BASE_URL}/${3:endpoint}`, {",
      "      method: '${4|GET,POST,PUT,DELETE|}',",
      "      headers: {",
      "        'Content-Type': 'application/json',",
      "        Authorization: `Bearer ${getToken()}`",
      "      }$5",
      "    });",
      "",
      "    if (!response.ok) {",
      "      throw new Error(`HTTP error! status: ${response.status}`);",
      "    }",
      "",
      "    return await response.json();",
      "  } catch (error) {",
      "    console.error('API Error:', error);",
      "    throw error;",
      "  }",
      "}"
    ],
    "description": "API endpoint function"
  }
}

Workspace Organization

1. Multi-Root Workspaces

Configure multi-root workspaces:

// my-workspace.code-workspace
{
  "folders": [
    {
      "name": "Frontend",
      "path": "./frontend"
    },
    {
      "name": "Backend",
      "path": "./backend"
    },
    {
      "name": "Common",
      "path": "./common"
    }
  ],
  "settings": {
    "files.exclude": {
      "**/node_modules": true,
      "**/dist": true,
      "**/.git": true
    },
    "search.exclude": {
      "**/node_modules": true,
      "**/dist": true
    }
  },
  "extensions": {
    "recommendations": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode"]
  }
}

Best Practices

  1. Learn Shortcuts: Start with a few essential shortcuts and gradually expand
  2. Customize Settings: Adjust settings to match your workflow
  3. Use Extensions Wisely: Only install extensions you actually need
  4. Create Snippets: Make snippets for frequently used code patterns
  5. Organize Workspace: Use workspaces for better project organization

Implementation Checklist

  1. Install essential extensions
  2. Configure editor settings
  3. Set up language-specific settings
  4. Create custom snippets
  5. Learn key shortcuts
  6. Organize workspace
  7. Configure debugging
  8. Set up version control

Conclusion

VS Code is a powerful editor that becomes even more effective when properly configured. Focus on learning the features that match your workflow and gradually incorporate new productivity enhancements.

Resources