Skip to content

VS Code Rehberi (Visual Studio Code Guide)

Tam yığın geliştiriciler için kapsamlı VS Code referans rehberi. A comprehensive VS Code reference guide for full-stack developers (PHP/Laravel, React, Python, Node.js, TypeScript) on Ubuntu Linux.

:::tip[Ne Zaman VS Code?]

  • ✅ Her dil, her proje, ücretsiz ve açık kaynak
  • ⚠️ Çok büyük projeler (500K+ satır monorepo) için tam IDE daha iyi performans verebilir
  • ❌ Unity geliştirme için Rider, büyük .NET çözümleri için Visual Studio daha uygun

Önerilen: VS Code + dile özel uzantılar ile neredeyse her senaryo karşılanır. Alternatifler: WebStorm (JS/TS odaklı), Rider (.NET/Unity), Vim/Neovim (terminal tabanlı), Zed (performans odaklı). :::

1. Kısa Yollar (Shortcuts)

Not: Linux kısa yolları listelenmiştir. macOS için Ctrl yerine Cmd kullanılır.

1.1 Genel (General)

Kısa Yol (Shortcut)Açıklama (Description)
Ctrl+Shift+PKomut paleti (Command Palette)
Ctrl+PHızlı dosya açma (Quick Open file)
Ctrl+,Ayarlar (Settings)
Ctrl+K Ctrl+SKlavye kısa yolları (Keyboard Shortcuts)
Ctrl+Shift+NYeni pencere (New window)
Ctrl+WSekmeyi kapat (Close tab)
Ctrl+Shift+WPencereyi kapat (Close window)
Ctrl+NYeni dosya (New file)
Ctrl+ODosya aç (Open file)
Ctrl+K Ctrl+OKlasör aç (Open folder)
Ctrl+SKaydet (Save)
Ctrl+Shift+SFarklı kaydet (Save as)
Ctrl+K STüm dosyaları kaydet (Save all)
Ctrl+ZGeri al (Undo)
Ctrl+Shift+ZYeniden yap (Redo)
Ctrl+K Ctrl+TTema seç (Select theme)
F11Tam ekran (Full screen toggle)
Ctrl+Shift+VMarkdown önizleme (Markdown preview)
Ctrl+K VYan yana Markdown önizleme (Side-by-side Markdown preview)

1.2 Düzenleme (Editing)

Kısa Yol (Shortcut)Açıklama (Description)
Ctrl+DSonraki eşleşen kelimeyi seç (Select next occurrence)
Ctrl+Shift+KSatırı sil (Delete line)
Alt+UpSatırı yukarı taşı (Move line up)
Alt+DownSatırı aşağı taşı (Move line down)
Ctrl+Shift+Alt+UpSatırı yukarı kopyala (Copy line up)
Ctrl+Shift+Alt+DownSatırı aşağı kopyala (Copy line down)
Ctrl+Shift+LTüm eşleşmeleri seç (Select all occurrences)
Ctrl+LTüm satırı seç (Select entire line)
Ctrl+Shift+EnterÜstte yeni satır ekle (Insert line above)
Ctrl+EnterAltta yeni satır ekle (Insert line below)
Ctrl+/Satırı yorum yap/kaldır (Toggle line comment)
Ctrl+Shift+ABlok yorum (Toggle block comment)
TabGirinti ekle (Indent)
Shift+TabGirinti kaldır (Outdent)
Ctrl+]Satır girintisi ekle (Indent line)
Ctrl+[Satır girintisi kaldır (Outdent line)
Ctrl+Shift+\Eşleşen paranteze git (Go to matching bracket)
Ctrl+BackspaceÖnceki kelimeyi sil (Delete word before cursor)
Ctrl+DeleteSonraki kelimeyi sil (Delete word after cursor)
HomeSatır başına git (Go to beginning of line)
EndSatır sonuna git (Go to end of line)
Ctrl+HomeDosya başına git (Go to beginning of file)
Ctrl+EndDosya sonuna git (Go to end of file)
Ctrl+Shift+[Bloğu katla (Fold region)
Ctrl+Shift+]Bloğu aç (Unfold region)
Ctrl+K Ctrl+0Tüm blokları katla (Fold all regions)
Ctrl+K Ctrl+JTüm blokları aç (Unfold all regions)
Ctrl+K Ctrl+CSatırı yorum yap (Add line comment)
Ctrl+K Ctrl+USatır yorumunu kaldır (Remove line comment)
Ctrl+SpaceÖneri tetikle (Trigger suggestion)
Ctrl+Shift+SpaceParametre ipucu (Trigger parameter hints)
F2Yeniden adlandır (Rename symbol)
Ctrl+.Hızlı düzeltme (Quick fix)

1.3 Navigasyon (Navigation)

Kısa Yol (Shortcut)Açıklama (Description)
Ctrl+GSatıra git (Go to line)
Ctrl+PDosyaya git (Go to file)
Ctrl+TabAçık sekmeler arası geçiş (Switch between open tabs)
Ctrl+Shift+OSembole git (Go to symbol in file)
Ctrl+TÇalışma alanında sembole git (Go to symbol in workspace)
F12Tanımına git (Go to definition)
Alt+F12Tanımı gözat (Peek definition)
Shift+F12Referansları göster (Show references)
Ctrl+Shift+MSorunlar paneli (Problems panel)
F8Sonraki hata (Next error/warning)
Shift+F8Önceki hata (Previous error/warning)
Alt+LeftGeri git (Navigate back)
Alt+Rightİleri git (Navigate forward)
Ctrl+K Ctrl+QSon düzenleme yerine git (Go to last edit location)
Ctrl+Shift+EDosya gezgini (Explorer focus)
Ctrl+Shift+FArama paneli (Search panel focus)
Ctrl+Shift+GKaynak kontrol paneli (Source control focus)
Ctrl+Shift+DDebug paneli (Debug panel focus)
Ctrl+Shift+XEklentiler paneli (Extensions panel focus)

1.4 Arama ve Değiştirme (Search & Replace)

Kısa Yol (Shortcut)Açıklama (Description)
Ctrl+FBul (Find)
Ctrl+HBul ve değiştir (Find and replace)
Ctrl+Shift+FDosyalarda bul (Find in files)
Ctrl+Shift+HDosyalarda değiştir (Replace in files)
F3Sonraki eşleme (Next match)
Shift+F3Önceki eşleme (Previous match)
Alt+EnterTüm eşleşmeleri seç (Select all matches)
Alt+RRegex toggle
Alt+WTam kelime eşleme toggle (Whole word match toggle)
Alt+CBüyük/küçük harf duyarlılığı toggle (Case sensitive toggle)

1.5 Terminal

Kısa Yol (Shortcut)Açıklama (Description)
Ctrl+`Terminal aç/kapat (Toggle terminal)
Ctrl+Shift+`Yeni terminal (New terminal)
Ctrl+Shift+5Terminali böl (Split terminal)
Ctrl+PageUpÖnceki terminal (Previous terminal)
Ctrl+PageDownSonraki terminal (Next terminal)
Ctrl+Shift+CHarici terminal aç (Open external terminal)

1.6 Multi-Cursor (Çoklu İmleç)

Kısa Yol (Shortcut)Açıklama (Description)
Alt+Clickİmleç ekle (Add cursor)
Ctrl+Alt+UpYukarı imleç ekle (Add cursor above)
Ctrl+Alt+DownAşağı imleç ekle (Add cursor below)
Ctrl+DSonraki eşleşen kelimede imleç (Add cursor at next occurrence)
Ctrl+Shift+LTüm eşleşmelerde imleç (Add cursor at all occurrences)
Ctrl+USon imleci geri al (Undo last cursor operation)
Shift+Alt+ISeçilen satırların sonuna imleç (Add cursor to end of each selected line)

1.7 Editor Yönetimi (Editor Management)

Kısa Yol (Shortcut)Açıklama (Description)
Ctrl+\Editörü böl (Split editor)
Ctrl+1/2/3Editor grubuna odaklan (Focus editor group 1/2/3)
Ctrl+K Ctrl+LeftÖnceki editor grubuna odaklan (Focus previous group)
Ctrl+K Ctrl+RightSonraki editor grubuna odaklan (Focus next group)
Ctrl+BKenar çubuğunu göster/gizle (Toggle sidebar)
Ctrl+JAlt paneli göster/gizle (Toggle bottom panel)
Ctrl+K ZZen modu (Zen mode)
Ctrl+Shift+TabSon açılan sekmeye dön (Switch to previous tab)
Ctrl+K Ctrl+WTüm sekmeleri kapat (Close all tabs)
Ctrl+K EnterSekmeyi sabit yap (Keep/pin tab)

2.1 Genel (General)

ExtensionAçıklama (Description)
PrettierKod formatlayıcı (Code formatter) - JS, TS, CSS, HTML, JSON
ESLintJavaScript/TypeScript linter
GitLensGelişmiş Git araçları (Advanced Git features) - blame, history, compare
Auto Rename TagEşleşen HTML/JSX tagini otomatik yeniden adlandır
Path IntellisenseDosya yolu otomatik tamamlama (File path autocomplete)
Better CommentsRenkli yorumlar (Colored comments) - !, ?, TODO, *
EditorConfigEditorConfig dosya desteği
Code Spell CheckerYazım denetimi (Spell checking for code)
Project ManagerProjeler arası hızlı geçiş (Quick project switching)
BookmarkKod satırlarını işaretleme (Bookmark lines of code)

2.2 Laravel / PHP

ExtensionAçıklama (Description)
PHP IntelephensePHP dil desteği (PHP language support) - autocomplete, diagnostics, go to definition
Laravel ArtisanArtisan komutlarını VS Code içinden çalıştır (Run Artisan commands)
Laravel Blade SnippetsBlade şablonu snippet'leri
Laravel Blade FormatterBlade dosyalarını formatla
Laravel Extra IntellisenseRoute, view, config, translation autocomplete
PHP DebugXdebug entegrasyonu (Xdebug integration)
PHP Namespace ResolverNamespace otomatik import/sort
PHPUnitPHPUnit test çalıştırma (Run PHPUnit tests)
Laravel GotoConfig, route, view dosyalarına hızlı git
DotENV.env dosya syntax renklendirme

2.3 React / JavaScript / TypeScript

ExtensionAçıklama (Description)
ES7+ React/Redux/React-Native SnippetsReact snippet'leri (rafce, rfc, useState vs.)
Tailwind CSS IntelliSenseTailwind sınıf otomatik tamamlama (Tailwind class autocomplete)
TypeScript HeroTypeScript import yönetimi (Import management)
Auto ImportOtomatik import önerileri
CSS ModulesCSS module sınıf tamamlama
vscode-styled-componentsStyled-components syntax desteği
Import CostImport boyutunu göster (Show import size)
Console NinjaConsole.log çıktısını editörde göster

2.4 Python

ExtensionAçıklama (Description)
PythonMicrosoft Python dil desteği
PylancePython dil sunucusu (Language server) - type checking, autocomplete
JupyterJupyter Notebook desteği
Black FormatterPython kod formatlayıcı
isortPython import sıralama
Python DebuggerPython debug desteği
autoDocstringOtomatik docstring oluşturma

2.5 Docker & DevOps

ExtensionAçıklama (Description)
DockerDockerfile/docker-compose desteği, container yönetimi
Dev ContainersContainer içinde geliştirme (Develop inside containers)
Remote - SSHUzak sunucuda geliştirme (Develop on remote machines)
YAMLYAML dil desteği (docker-compose, CI/CD dosyaları için)

2.6 Tema & UI (Theme & UI)

ExtensionAçıklama (Description)
One Dark ProAtom One Dark teması
CatppuccinPastel renkli tema
Material Icon ThemeDosya/klasör ikonları (File/folder icons)
vscode-iconsAlternatif ikon paketi
Indent RainbowGirinti seviyelerini renklendir (Colorize indentation)
Bracket Pair Color DLCParantez renklendirme (yerleşik, ayarlardan aktif et)

2.7 Diğer (Other)

ExtensionAçıklama (Description)
Live ServerCanlı tarayıcı yenileme ile yerel sunucu (Local dev server with live reload)
REST ClientHTTP istek gönderme (.http dosyaları)
Thunder ClientPostman benzeri API test aracı (GUI-based API testing)
Error LensHataları satır içinde göster (Show errors inline)
Todo TreeTODO/FIXME yorumlarını ağaç görünümünde listele
PeacockHer VS Code penceresine farklı renk ata
WakaTimeKodlama süresi takibi (Coding time tracking)
Markdown All in OneMarkdown yazım araçları

2.8 Extension Öneriler Özet Tablosu (Extension Recommendations Summary)

KategoriExtensionNe Yapar
GenelGitLensSatır bazlı blame, dosya geçmişi, branch karşılaştırma
GenelError LensHata ve uyarıları satır içinde anlık gösterir
GenelThunder ClientGUI tabanlı REST API test aracı (Postman alternatifi)
GenelTODO HighlightTODO, FIXME, HACK gibi anahtar kelimeleri vurgular
FrontendES7+ React Snippetsrafce, rfc, useState gibi React snippet'leri
FrontendTailwind IntelliSenseTailwind sınıflarını otomatik tamamlar ve önizler
FrontendPrettierOtomatik kod formatlama (JS, TS, CSS, HTML, JSON)
FrontendESLintJavaScript/TypeScript statik analiz ve lint
BackendPHP IntelephensePHP autocomplete, diagnostics, go to definition
BackendPylancePython tip kontrolü, akıllı tamamlama, refactoring
BackendC# Dev Kit.NET geliştirme, IntelliSense, test runner
DatabaseSQLToolsSQL bağlantı yönetimi, sorgu çalıştırma, sonuç görüntüleme
DatabaseMongoDB for VS CodeMongoDB koleksiyonlarını görme, sorgu çalıştırma

Extension Kurulumu (Installation)

Terminal üzerinden toplu kurulum (Bulk install via terminal):

bash
# Genel (General)
code --install-extension esbenp.prettier-vscode
code --install-extension dbaeumer.vscode-eslint
code --install-extension eamodio.gitlens
code --install-extension formulahendry.auto-rename-tag
code --install-extension christian-kohler.path-intellisense
code --install-extension usernamehw.errorlens

# Laravel / PHP
code --install-extension bmewburn.vscode-intelephense-client
code --install-extension ryannaddy.laravel-artisan
code --install-extension onecentlin.laravel-blade
code --install-extension xdebug.php-debug

# React / JS / TS
code --install-extension dsznajder.es7-react-js-snippets
code --install-extension bradlc.vscode-tailwindcss

# Python
code --install-extension ms-python.python
code --install-extension ms-python.vscode-pylance

# Docker
code --install-extension ms-azuretools.vscode-docker
code --install-extension ms-vscode-remote.remote-containers

# Tema (Theme)
code --install-extension zhuangtongfa.material-theme
code --install-extension pkief.material-icon-theme

3. settings.json Önemli Ayarlar (Important Settings)

Ayarlar dosyası konumu (Settings file location):

  • Genel (Global): ~/.config/Code/User/settings.json
  • Proje (Workspace): .vscode/settings.json
json
{
  // ---- Editor Genel (Editor General) ----
  "editor.fontSize": 15,
  "editor.fontFamily": "'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace",
  "editor.fontLigatures": true,
  "editor.tabSize": 2,
  "editor.insertSpaces": true,
  "editor.detectIndentation": true,
  "editor.wordWrap": "on",
  "editor.minimap.enabled": true,
  "editor.minimap.maxColumn": 80,
  "editor.cursorBlinking": "smooth",
  "editor.cursorSmoothCaretAnimation": "on",
  "editor.smoothScrolling": true,
  "editor.linkedEditing": true,
  "editor.bracketPairColorization.enabled": true,
  "editor.guides.bracketPairs": true,
  "editor.stickyScroll.enabled": true,
  "editor.renderWhitespace": "boundary",
  "editor.rulers": [80, 120],
  "editor.accessibilitySupport": "off",
  "editor.inlineSuggest.enabled": true,
  "editor.suggestSelection": "first",

  // ---- Kaydetme (Save) ----
  "editor.formatOnSave": true,
  "editor.formatOnPaste": false,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit",
    "source.organizeImports": "explicit"
  },
  "files.autoSave": "afterDelay",
  "files.autoSaveDelay": 1000,
  "files.trimTrailingWhitespace": true,
  "files.insertFinalNewline": true,
  "files.trimFinalNewlines": true,

  // ---- Tema & UI (Theme & UI) ----
  "workbench.colorTheme": "One Dark Pro",
  "workbench.iconTheme": "material-icon-theme",
  "workbench.startupEditor": "none",
  "workbench.tree.indent": 16,
  "workbench.editor.enablePreview": false,
  "breadcrumbs.enabled": true,

  // ---- Terminal ----
  "terminal.integrated.fontSize": 14,
  "terminal.integrated.fontFamily": "'JetBrains Mono', monospace",
  "terminal.integrated.defaultProfile.linux": "bash",
  "terminal.integrated.cursorBlinking": true,
  "terminal.integrated.scrollback": 10000,

  // ---- Emmet ----
  "emmet.includeLanguages": {
    "blade": "html",
    "javascript": "javascriptreact",
    "typescriptreact": "html"
  },
  "emmet.triggerExpansionOnTab": true,

  // ---- Formatlayıcı (Formatter) ----
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "[php]": {
    "editor.defaultFormatter": "bmewburn.vscode-intelephense-client",
    "editor.tabSize": 4
  },
  "[python]": {
    "editor.defaultFormatter": "ms-python.black-formatter",
    "editor.tabSize": 4,
    "editor.formatOnSave": true
  },
  "[blade]": {
    "editor.defaultFormatter": "shufo.vscode-blade-formatter",
    "editor.tabSize": 4
  },
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[markdown]": {
    "editor.wordWrap": "on",
    "editor.quickSuggestions": {
      "other": "off",
      "comments": "off",
      "strings": "off"
    }
  },

  // ---- Dosya Haric Tutma (File Exclusions) ----
  "files.exclude": {
    "**/.git": true,
    "**/.DS_Store": true,
    "**/node_modules": true,
    "**/vendor": true,
    "**/__pycache__": true
  },
  "search.exclude": {
    "**/node_modules": true,
    "**/vendor": true,
    "**/dist": true,
    "**/build": true,
    "**/.next": true,
    "**/storage/framework": true
  },

  // ---- PHP ----
  "php.validate.executablePath": "/usr/bin/php",
  "intelephense.environment.phpVersion": "8.3",

  // ---- Python ----
  "python.defaultInterpreterPath": "/usr/bin/python3",

  // ---- Git ----
  "git.autofetch": true,
  "git.confirmSync": false,
  "git.enableSmartCommit": true,
  "diffEditor.ignoreTrimWhitespace": false,

  // ---- Diğer (Other) ----
  "explorer.confirmDelete": false,
  "explorer.confirmDragAndDrop": false,
  "security.workspace.trust.untrustedFiles": "open",
  "telemetry.telemetryLevel": "off"
}

4. Snippets (Kod Parçacıkları)

Custom Snippet Oluşturma (Creating Custom Snippets)

Snippet dosyası konumu (Snippet file location):

  • Genel: ~/.config/Code/User/snippets/
  • Dile özel: ~/.config/Code/User/snippets/javascript.json
  • Komut: Ctrl+Shift+P > Preferences: Configure User Snippets

Snippet Yapısı (Snippet Structure)

json
{
  "Snippet Adi": {
    "prefix": "tetikleyici_kelime",
    "body": [
      "Satir 1",
      "\t$1 ile tab stop tanimla",
      "\t${2:varsayilan_deger} ile placeholder",
      "$0 son imlec konumu"
    ],
    "description": "Snippet aciklamasi"
  }
}

Snippet değişkenleri:

DeğişkenAçıklama
$1, $2, $3Tab stop - Tab ile sırayla atlanır
${1:varsayılan}Varsayılan değerli placeholder
${1|secim1,secim2|}Seçim listesi (dropdown)
$0Son imleç konumu
$TM_FILENAMEDosya adı
$TM_FILENAME_BASEUzantısız dosya adı
$TM_DIRECTORYDizin yolu
$CURRENT_YEARMevcut yıl
$CURRENT_MONTHMevcut ay
$CLIPBOARDPano içeriği
$UUIDRastgele UUID

JavaScript/TypeScript Snippet Örnekleri

Dosya: ~/.config/Code/User/snippets/javascript.json

json
{
  "Console Log": {
    "prefix": "clg",
    "body": "console.log('$1:', $1);$0",
    "description": "Console log with label"
  },
  "Arrow Function": {
    "prefix": "af",
    "body": [
      "const ${1:name} = (${2:params}) => {",
      "\t$0",
      "};"
    ],
    "description": "Arrow function"
  },
  "React Functional Component": {
    "prefix": "rfc",
    "body": [
      "interface ${1:Component}Props {",
      "\t$2",
      "}",
      "",
      "export default function ${1:Component}({ $3 }: ${1:Component}Props) {",
      "\treturn (",
      "\t\t<div>",
      "\t\t\t$0",
      "\t\t</div>",
      "\t);",
      "}"
    ],
    "description": "React functional component with TypeScript"
  },
  "useState Hook": {
    "prefix": "ust",
    "body": "const [${1:state}, set${1/(.*)/${1:/capitalize}/}] = useState<${2:type}>(${3:initialValue});$0",
    "description": "React useState hook"
  },
  "useEffect Hook": {
    "prefix": "uef",
    "body": [
      "useEffect(() => {",
      "\t$1",
      "",
      "\treturn () => {",
      "\t\t$2",
      "\t};",
      "}, [${3}]);"
    ],
    "description": "React useEffect hook with cleanup"
  },
  "Try Catch": {
    "prefix": "tc",
    "body": [
      "try {",
      "\t$1",
      "} catch (error) {",
      "\tconsole.error('${2:Error}:', error);",
      "\t$0",
      "}"
    ],
    "description": "Try-catch block"
  },
  "Fetch API": {
    "prefix": "fetcha",
    "body": [
      "const response = await fetch('${1:url}', {",
      "\tmethod: '${2|GET,POST,PUT,DELETE|}',",
      "\theaders: {",
      "\t\t'Content-Type': 'application/json',",
      "\t},",
      "\t${3:body: JSON.stringify(data),}",
      "});",
      "const data = await response.json();$0"
    ],
    "description": "Fetch API async call"
  }
}

PHP/Laravel Snippet Örnekleri

Dosya: ~/.config/Code/User/snippets/php.json

json
{
  "Laravel Controller Method": {
    "prefix": "lcon",
    "body": [
      "public function ${1:index}(Request \\$request): ${2:JsonResponse}",
      "{",
      "\t$0",
      "\treturn response()->json([",
      "\t\t'status' => 'success',",
      "\t]);",
      "}"
    ],
    "description": "Laravel controller method"
  },
  "Laravel Migration Column": {
    "prefix": "lmig",
    "body": "\\$table->${1|string,integer,bigInteger,boolean,text,timestamp,foreignId|}('${2:column_name}')${3:->nullable()};$0",
    "description": "Laravel migration column"
  },
  "Laravel Validation": {
    "prefix": "lval",
    "body": [
      "\\$validated = \\$request->validate([",
      "\t'${1:field}' => '${2:required|string|max:255}',",
      "\t$0",
      "]);"
    ],
    "description": "Laravel request validation"
  },
  "PHP Class": {
    "prefix": "cls",
    "body": [
      "<?php",
      "",
      "namespace ${1:App};",
      "",
      "class ${2:ClassName}",
      "{",
      "\tpublic function __construct(",
      "\t\t$3",
      "\t) {}",
      "",
      "\t$0",
      "}"
    ],
    "description": "PHP class with constructor"
  }
}

Python Snippet Ornekleri

Dosya: ~/.config/Code/User/snippets/python.json

json
{
  "Python Main": {
    "prefix": "pymain",
    "body": [
      "def main():",
      "\t$0",
      "",
      "",
      "if __name__ == '__main__':",
      "\tmain()"
    ],
    "description": "Python main block"
  },
  "Python Class": {
    "prefix": "pycls",
    "body": [
      "class ${1:ClassName}:",
      "\t\"\"\"${2:Class description.}\"\"\"",
      "",
      "\tdef __init__(self, ${3:params}):",
      "\t\t${4:self.${3} = ${3}}$0"
    ],
    "description": "Python class with init"
  }
}

5. Debugging (Hata Ayiklama)

launch.json Konumu (Location)

Proje koku (Project root): .vscode/launch.json

Oluşturma: Ctrl+Shift+D > create a launch.json file

launch.json Yapılandırma Detaylari

launch.json dosyasinda her konfigurasyonda kullanilabilecek ortak alanlar:

AlanAçıklama
typeDebugger turu (node, chrome, php, debugpy, coreclr vb.)
requestBaslangic modu: launch (yeni surec baslat) veya attach (mevcut surece baglan)
nameDebug konfigurasyonunun gorunen adi
programCalistirilacak dosya yolu
argsPrograma gonderilecek komut satiri argumanlari
cwdCalisma dizini
envOrtam degiskenleri ("env": {"NODE_ENV": "development"})
preLaunchTaskDebug oncesi calistirilacak tasks.json gorevi
postDebugTaskDebug sonrasi calistirilacak gorev
consoleKonsol turu: integratedTerminal, externalTerminal, internalConsole
skipFilesAdim atlamada atlanacak dosya kaliplari
sourceMapsKaynak harita destegi (true/false)

Node.js Debug

json
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Node.js - Current File",
      "program": "${file}",
      "console": "integratedTerminal",
      "skipFiles": ["<node_internals>/**"]
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Node.js - npm start",
      "runtimeExecutable": "npm",
      "runtimeArgs": ["run", "dev"],
      "console": "integratedTerminal",
      "skipFiles": ["<node_internals>/**"]
    },
    {
      "type": "node",
      "request": "attach",
      "name": "Attach to Process",
      "port": 9229,
      "skipFiles": ["<node_internals>/**"]
    }
  ]
}

Node.js debug için uygulamayi --inspect veya --inspect-brk bayragi ile baslatarak attach modunu kullanabilirsiniz:

bash
node --inspect-brk app.js
# veya
node --inspect=0.0.0.0:9229 app.js

Chrome / Edge Debug (React uygulamalari için)

json
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "chrome",
      "request": "launch",
      "name": "Chrome - React App",
      "url": "http://localhost:3000",
      "webRoot": "${workspaceFolder}/src",
      "sourceMaps": true
    },
    {
      "type": "chrome",
      "request": "launch",
      "name": "Chrome - Vite App",
      "url": "http://localhost:5173",
      "webRoot": "${workspaceFolder}/src"
    }
  ]
}

PHP Debug (Xdebug)

Oncelikle Xdebug kurulumu (First install Xdebug):

bash
# Xdebug kurulumu (Ubuntu)
sudo apt install php-xdebug

# php.ini ayarlari (genellikle /etc/php/8.3/cli/conf.d/20-xdebug.ini)
# Asagidaki satirlari ekleyin:
ini
[xdebug]
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_port=9003
xdebug.client_host=127.0.0.1

launch.json yapılandırması:

json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "PHP - Listen for Xdebug",
      "type": "php",
      "request": "launch",
      "port": 9003,
      "pathMappings": {
        "/var/www/html": "${workspaceFolder}"
      }
    },
    {
      "name": "PHP - Current File",
      "type": "php",
      "request": "launch",
      "program": "${file}",
      "cwd": "${fileDirname}",
      "port": 9003
    }
  ]
}

Python Debug

json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python - Current File",
      "type": "debugpy",
      "request": "launch",
      "program": "${file}",
      "console": "integratedTerminal",
      "justMyCode": true
    },
    {
      "name": "Python - Django",
      "type": "debugpy",
      "request": "launch",
      "program": "${workspaceFolder}/manage.py",
      "args": ["runserver"],
      "django": true,
      "justMyCode": true
    },
    {
      "name": "Python - FastAPI",
      "type": "debugpy",
      "request": "launch",
      "module": "uvicorn",
      "args": ["main:app", "--reload"],
      "jinja": true,
      "justMyCode": true
    }
  ]
}

C# Debug (.NET)

C# Dev Kit veya C# extension kurulduktan sonra:

json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": ".NET Core Launch (web)",
      "type": "coreclr",
      "request": "launch",
      "preLaunchTask": "build",
      "program": "${workspaceFolder}/bin/Debug/net8.0/MyApp.dll",
      "args": [],
      "cwd": "${workspaceFolder}",
      "stopAtEntry": false,
      "env": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  ]
}

Breakpoint Turleri (Breakpoint Types)

Tur (Type)Açıklama (Description)Kullanım (Usage)
BreakpointSatir uzerinde dur (Pause at line)Satir numarasinin soluna tikla (Click left of line number)
Conditional BreakpointKosul saglandiginda dur (Pause when condition is true)Sag tikla > Conditional Breakpoint
LogpointDurdurmadan log yaz (Log without pausing)Sag tikla > Logpoint
Hit CountN. cagrilamada dur (Pause at Nth hit)Sag tikla > Hit Count
Exception BreakpointHata firlatildiginda dur (Pause on thrown exceptions)Debug panelinde ayarla

Breakpoint detaylari:

  • Conditional Breakpoint: Bir ifade girilir, ifade true dondugunde durur. Ornegin i > 100 veya user.role === 'admin'. Dongu icinde belirli bir kosulu yakalamak için idealdir.
  • Logpoint: Kod durmaz ama Debug Console'a mesaj yazilir. Susleme: {değişken} seklinde değişken degeri basilir. Örnek mesaj: Kullanici: {user.name}, Rol: {user.role}.
  • Hit Count: Breakpoint'in kac kez tetiklenmesi gerektigini belirtir. Ornegin 5 girilirse 5. cagrilamada durur. >10 girilirse 10'dan sonra her seferinde durur.
  • Watch Expressions: Debug panelinin Watch bolumune ifade ekleyerek değişken degerlerini surekli izleyebilirsiniz. Ornegin array.length, Object.keys(data), this.state gibi ifadeler eklenebilir.

Debug Kisa Yollari (Debug Shortcuts)

Kisa Yol (Shortcut)Açıklama (Description)
F5Debugging baslat / devam et (Start/continue debugging)
F9Breakpoint toggle
F10Adim atla (Step over)
F11Icine gir (Step into)
Shift+F11Disindan cik (Step out)
Shift+F5Durdur (Stop debugging)
Ctrl+Shift+F5Yeniden baslat (Restart debugging)
Ctrl+Shift+YDebug konsolu (Debug console)

6. Remote Development (Uzaktan Geliştirme)

VS Code'un Remote Development ozellikleri farkli ortamlarda sorunsuz geliştirme yapmanizi sağlar.

Remote - SSH (Uzak Sunucu)

Uzak bir sunucuya SSH ile baglanarak dosyaları dogrudan sunucu uzerinde duzenleyebilirsiniz. Dosyalar yerel makineye indirilmez, tüm islemler uzak makinede gerceklesir.

Kurulum:

  1. Remote - SSH extension'ini kurun
  2. Ctrl+Shift+P > Remote-SSH: Connect to Host
  3. SSH adresini girin: kullanici@sunucu-ip

SSH config dosyasi (~/.ssh/config) ile hızlı erisim:

Host sunucum
    HostName 192.168.1.100
    User deploy
    Port 22
    IdentityFile ~/.ssh/id_rsa

Host production
    HostName prod.example.com
    User admin
    Port 2222
    ForwardAgent yes

Bağlantı sonrasi VS Code uzak sunucudaki dosyaları, terminali ve extension'lari dogrudan kullanir. Extension'lar uzak makineye otomatik kurulur.

WSL (Windows + Linux)

Windows uzerinde Linux ortaminda geliştirme yapmak için WSL entegrasyonu kullanilir. Windows'ta çalışan VS Code, WSL icindeki dosya sistemine ve araclara erisir.

Kurulum:

  1. WSL extension'ini kurun
  2. Ctrl+Shift+P > WSL: Connect to WSL veya terminal'den code . komutu ile acin

Avantajlari:

  • Linux dosya sistemi performansi (node_modules, git islemleri daha hızlı)
  • Linux tabanli araclar (gcc, make, python, node) dogrudan kullanilir
  • Windows ve Linux arasinda sorunsuz gecis

Dev Containers (Docker Ortaminda Geliştirme)

Projeye ozel Docker container icinde geliştirme ortami olusturur. Takim uyelerinin ayni ortamda calismasi garanti edilir.

Proje kokune .devcontainer/devcontainer.json dosyasi ekleyin:

json
{
  "name": "Node.js & PostgreSQL",
  "image": "mcr.microsoft.com/devcontainers/javascript-node:18",
  "features": {
    "ghcr.io/devcontainers/features/node:1": {
      "version": "18"
    }
  },
  "forwardPorts": [3000, 5432],
  "postCreateCommand": "npm install",
  "customizations": {
    "vscode": {
      "extensions": [
        "dbaeumer.vscode-eslint",
        "esbenp.prettier-vscode"
      ],
      "settings": {
        "editor.formatOnSave": true
      }
    }
  }
}

Kullanım: Ctrl+Shift+P > Dev Containers: Reopen in Container

Dev Container avantajlari:

  • Tüm takim ayni isletim sistemi, runtime surumleri ve araçları kullanir
  • Yeni gelistirici dakikalar icinde calismaya baslayabilir
  • Yerel makineyi kirletmeden farkli proje ortamlari olusturulabilir
  • CI/CD ile ayni container kullanilarak "bende calisiyor" sorunu ortadan kalkar

Remote Development Karşılaştırma

ÖzellikSSHWSLDev Containers
Kullanım alaniUzak sunucuWindows+LinuxProje bazli ortam
PerformansAg hizina bagliYerel gibiDocker overhead
Kurulum kolayligiSSH key gerekliWSL kurulumuDockerfile gerekli
Dosya sistemiUzak sunucuLinux FSContainer FS
Extension destegiUzak kurulumUzak kurulumContainer icinde

7. Integrated Terminal (Entegre Terminal)

Terminal Profilleri (Terminal Profiles)

settings.json icinde terminal profili tanimlama:

json
{
  "terminal.integrated.profiles.linux": {
    "bash": {
      "path": "/bin/bash",
      "icon": "terminal-bash"
    },
    "zsh": {
      "path": "/usr/bin/zsh",
      "icon": "terminal"
    },
    "fish": {
      "path": "/usr/bin/fish"
    },
    "node": {
      "path": "/usr/bin/node",
      "icon": "symbol-event"
    },
    "python": {
      "path": "/usr/bin/python3",
      "icon": "symbol-method"
    },
    "laravel-sail": {
      "path": "/bin/bash",
      "args": ["-c", "./vendor/bin/sail shell"],
      "icon": "terminal-bash"
    }
  },
  "terminal.integrated.defaultProfile.linux": "bash"
}

Terminal Yönetimi (Terminal Management)

İşlem (Action)Yöntem (Method)
Yeni terminal (New terminal)Ctrl+Shift+`
Terminali bol (Split terminal)Ctrl+Shift+5
Terminali yeniden adlandir (Rename)Terminal sekmesine sag tikla > Rename
Terminali sonlandir (Kill)Cop kutusu ikonu (Trash icon)
Terminaller arasi gecisCtrl+PageUp / Ctrl+PageDown
Terminal panelini buyut (Maximize)Panel basliginda yukari ok
Panelden editore gecisCtrl+1
Editordan panele gecisCtrl+`
Terminalde metin seç (Select text)Shift+Click baslangic ve bitis
Secimi kopyala (Copy selection)Ctrl+Shift+C
Yapistir (Paste)Ctrl+Shift+V
Temizle (Clear)Terminalde clear veya Ctrl+L

Terminal Gorevleri (Tasks)

.vscode/tasks.json dosyasi ile gorev tanimlama:

json
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Laravel - Serve",
      "type": "shell",
      "command": "php artisan serve",
      "group": "none",
      "presentation": {
        "reveal": "always",
        "panel": "dedicated"
      },
      "isBackground": true,
      "problemMatcher": []
    },
    {
      "label": "NPM - Dev",
      "type": "shell",
      "command": "npm run dev",
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "presentation": {
        "reveal": "always",
        "panel": "dedicated"
      },
      "isBackground": true,
      "problemMatcher": []
    },
    {
      "label": "Full Stack - Start",
      "dependsOn": ["Laravel - Serve", "NPM - Dev"],
      "dependsOrder": "parallel",
      "problemMatcher": []
    }
  ]
}

Gorev calistirma: Ctrl+Shift+P > Tasks: Run Task

tasks.json ek ayarlari:

AlanAçıklama
group.kindGorev grubu: build, test veya none
group.isDefaulttrue ise Ctrl+Shift+B ile dogrudan çalışır
presentation.revealTerminal gorunurlugu: always, silent, never
presentation.panelTerminal paneli: shared, dedicated, new
runOptions.runOnfolderOpen ile klasor acildiginda otomatik çalışır
dependsOnBagimli gorevler listesi
dependsOrderparallel veya sequence

8. Git Entegrasyonu (Git Integration)

Source Control Paneli (Source Control Panel)

Kisa Yol (Shortcut)Açıklama (Description)
Ctrl+Shift+GSource Control panelini aç
Ctrl+EnterCommit mesaji yaziliyken commit et
+ ikonuDosyayi stage'e ekle (Stage file)
- ikonuDosyayi unstage et (Unstage file)
Goz ikonuDegisiklikleri göster (Show diff)
... menusuPull, push, fetch, branch islemleri

Diff Viewer (Fark Goruntuleyici)

İşlem (Action)Açıklama (Description)
Dosyaya tiklaYan yana diff göster (Side by side diff)
Inline gorunumSag ust ... > Inline View
Stage secilen satirlarDiff gorunumunde satir seç > Stage Selected Ranges
Onceki/sonraki degisiklikAlt+F3 / Alt+F5

Yararli Git Komutları (Useful Git Commands via Command Palette)

Ctrl+Shift+P ile erisim:

Git: Clone
Git: Checkout to...
Git: Create Branch
Git: Delete Branch
Git: Merge Branch
Git: Pull
Git: Push
Git: Stash
Git: Pop Stash
Git: Fetch
Git: Sync

Conflict Resolution (Catisma Cozumu)

Catisma oldugunda VS Code otomatik olarak gosterir:

  • Accept Current Change - Mevcut degisikligi kabul et (yerel)
  • Accept Incoming Change - Gelen degisikligi kabul et (uzak)
  • Accept Both Changes - Her iki degisikligi de kabul et
  • Compare Changes - Degisiklikleri karsilastir

GitLens Ozellikleri (GitLens Features)

Özellik (Feature)Açıklama (Description)
Inline BlameHer satirin yaninda son commit bilgisi
File HistoryDosya gecmisi gorunumu
Line HistorySatir gecmisi
Compare BranchesDal karşılaştırma
Interactive RebaseGorsel rebase
Stash ExplorerStash yönetimi

VS Code yerlesik git ozellikleri ile GitLens'i birlikte kullanmak tavsiye edilir. Yerlesik ozellikler temel islemler için yeterlidir; GitLens ise blame, gecmis ve branch karşılaştırma gibi ileri islemler ekler.


9. Keybindings.json (Ozel Kisa Yollar)

Dosya Konumu (File Location)

~/.config/Code/User/keybindings.json

Acmak için: Ctrl+K Ctrl+S > sag ustteki dosya ikonu

Yapi (Structure)

json
[
  {
    "key": "kisa_yol",
    "command": "komut_adi",
    "when": "kosul_ifadesi"
  }
]

Örnek Keybindings (Example Keybindings)

json
[
  // Terminal toggle - Alt+T ile
  {
    "key": "alt+t",
    "command": "workbench.action.terminal.toggleTerminal"
  },

  // Dosya gezgininde yeni dosya - Ctrl+N (explorer odakliyken)
  {
    "key": "ctrl+n",
    "command": "explorer.newFile",
    "when": "explorerViewletFocus"
  },

  // Satiri asagi/yukari tasima (alternatif)
  {
    "key": "ctrl+shift+up",
    "command": "editor.action.moveLinesUpAction",
    "when": "editorTextFocus"
  },
  {
    "key": "ctrl+shift+down",
    "command": "editor.action.moveLinesDownAction",
    "when": "editorTextFocus"
  },

  // Tum dosyayi sec
  {
    "key": "ctrl+a",
    "command": "editor.action.selectAll",
    "when": "editorTextFocus"
  },

  // Kenar cubugu toggle - Ctrl+B yerine Alt+B
  {
    "key": "alt+b",
    "command": "workbench.action.toggleSidebarVisibility"
  },

  // Terminal split - Alt+S
  {
    "key": "alt+s",
    "command": "workbench.action.terminal.split",
    "when": "terminalFocus"
  },

  // Hizli commit - Ctrl+Shift+Enter (SCM odakliyken)
  {
    "key": "ctrl+shift+enter",
    "command": "git.commit",
    "when": "scmRepository"
  },

  // Onceki kisa yolu kaldir (bir kisa yolu devre disi birakmak icin)
  {
    "key": "ctrl+k ctrl+d",
    "command": "-editor.action.moveSelectionToNextFindMatch"
  }
]

Keybinding optimizasyonu için ipuclari:

  • Sik kullandiginiz komutları tek el ile ulasilabilir kisa yollara atayin
  • Ctrl+K ile baslayan chord binding'ler iki asamali kisa yollar tanimlamaya yarar
  • Bir kisa yolu kaldirmak için komut basina - ekleyin (örnek: "-editor.action.selectAll")
  • Dile ozel kisa yollar için when kosulunda editorLangId kullanin

Yaygin When Kosullari (Common When Clauses)

Kosul (Clause)Açıklama (Description)
editorTextFocusEditor odakli (Editor has focus)
terminalFocusTerminal odakli (Terminal has focus)
explorerViewletFocusDosya gezgini odakli
editorLangId == 'php'Dil PHP oldugunda
editorLangId == 'python'Dil Python oldugunda
inDebugModeDebug modundayken
!inDebugModeDebug modunda degilken
scmRepositorySCM deposu varken
editorHasSelectionSecim varken
editorHasMultipleSelectionsBirden fazla secim varken
resourceExtname == '.blade.php'Dosya uzantisi .blade.php oldugunda

10. Workspace Settings (Calisma Alani Ayarlari)

Workspace vs User Settings

VS Code'da iki seviye ayar vardir:

  • User Settings (Kullanici Ayarlari): Tüm projelerde gecerli olan genel ayarlar. Konum: ~/.config/Code/User/settings.json
  • Workspace Settings (Calisma Alani Ayarlari): Yalnizca o projede gecerli ayarlar. Konum: .vscode/settings.json

Workspace ayarlari her zaman user ayarlarini gecer. Bu sayede her proje için farkli formatlayici, tab boyutu veya lint kurallari tanimlanabilir.

Profile Switching (Profil Gecisi)

VS Code profilleri farkli projeler veya diller için ayri ayar, extension ve keybinding setleri tanimlamanizi sağlar.

Profil oluşturma: Ctrl+Shift+P > Profiles: Create Profile

Örnek profil senaryolari:

ProfilKullanımExtension Seti
FrontendReact/Vue/Angular projeleriESLint, Prettier, Tailwind, ES7+ React
Backend PHPLaravel projeleriIntelephense, Xdebug, Laravel Artisan
PythonDjango/FastAPI projeleriPylance, Black, Jupyter
MinimalHafif düzenleme, notlarMarkdown All in One, Code Spell Checker

Profiller arasi gecis: Ctrl+Shift+P > Profiles: Switch Profile

Profil ihrac ve ithal: Profiles: Export Profile ve Profiles: Import Profile ile takim uyeleriyle paylasilabilir.

.vscode Klasor Yapisi (Folder Structure)

proje-koku/
  .vscode/
    settings.json       # Proje bazli ayarlar
    launch.json         # Debug yapilandirmasi
    tasks.json          # Gorev tanimlari
    extensions.json     # Onerilen extension'lar
    snippets.code-snippets  # Proje bazli snippet'ler

Proje Bazli settings.json Ornegi (Project-Level Settings)

Laravel projesi için:

json
{
  "editor.tabSize": 4,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "[php]": {
    "editor.defaultFormatter": "bmewburn.vscode-intelephense-client",
    "editor.tabSize": 4
  },
  "[blade]": {
    "editor.defaultFormatter": "shufo.vscode-blade-formatter",
    "editor.tabSize": 4
  },
  "files.associations": {
    "*.blade.php": "blade"
  },
  "emmet.includeLanguages": {
    "blade": "html"
  },
  "intelephense.environment.phpVersion": "8.3",
  "intelephense.files.maxSize": 5000000,
  "search.exclude": {
    "**/vendor": true,
    "**/node_modules": true,
    "**/storage/framework": true,
    "**/bootstrap/cache": true,
    "public/build": true
  }
}

.vscode/extensions.json dosyasi ile takim uyelerine eklenti onerebilirsiniz:

json
{
  "recommendations": [
    "bmewburn.vscode-intelephense-client",
    "xdebug.php-debug",
    "ryannaddy.laravel-artisan",
    "onecentlin.laravel-blade",
    "esbenp.prettier-vscode",
    "dbaeumer.vscode-eslint",
    "bradlc.vscode-tailwindcss",
    "eamodio.gitlens",
    "usernamehw.errorlens"
  ],
  "unwantedRecommendations": []
}

Multi-Root Workspace (Çoklu Proje Calisma Alani)

workspace.code-workspace dosyasi:

json
{
  "folders": [
    {
      "name": "Backend (Laravel)",
      "path": "./backend"
    },
    {
      "name": "Frontend (React)",
      "path": "./frontend"
    },
    {
      "name": "Docs",
      "path": "./docs"
    }
  ],
  "settings": {
    "editor.formatOnSave": true,
    "files.autoSave": "afterDelay"
  },
  "extensions": {
    "recommendations": [
      "esbenp.prettier-vscode",
      "dbaeumer.vscode-eslint"
    ]
  }
}

Acmak için: code workspace.code-workspace veya File > Open Workspace from File


11. Verimlilik (Productivity)

Multi-Cursor İleri Teknikler

Temel multi-cursor'un otesinde ileri kullanım senaryolari:

TeknikKisa Yol / YöntemAçıklama
Regex ile çoklu secimCtrl+H > Regex aç > Alt+EnterRegex ile eşleşen tüm yerlerde imlec oluştur
Blok secimi (Box select)Shift+Alt+DragDikdortgen alan secimi, sutun bazli düzenleme
Satir sonlarina imlecSatirlari seç > Shift+Alt+ISecilen her satirin sonuna imlec ekle
Eslesen kelimeleri atlamaCtrl+D sonra Ctrl+K Ctrl+DMevcut eslemeyi atla, sonrakine gec
Tüm eslesmelerde düzenlemeCtrl+Shift+LSecili kelimenin tüm orneklerini ayni anda düzenle

Örnek: Bir değişken adini tüm dosyada degistirmek için kelimeyi secin, Ctrl+Shift+L ile tüm eslesmeleri secin, yeni adi yazin. F2 (Rename Symbol) semantik yeniden adlandirma yapar ve import'lari da gunceller.

Settings Sync (Ayar Senkronizasyonu)

VS Code ayarlarini cihazlar arasinda senkronize etmek için:

  1. Ctrl+Shift+P > Settings Sync: Turn On
  2. GitHub veya Microsoft hesabi ile giris yapin
  3. Senkronize edilecek ogeleri secin: Settings, Keybindings, Extensions, Snippets, UI State

Senkronizasyon cakismalarinda VS Code birlestime veya taraf secmeye olanak tanir.

Git Integration İpuçları

VS Code icinde git islemlerini hizlandirmak için:

  • Source Control gorunumunde dosyalara tek tikla ile diff goruntuleyebilirsiniz
  • Gutter indicators: Editorde satir numaralarinin yaninda yesil (eklenen), mavi (degisen) ve kirmizi (silinen) satirlar isaretlenir
  • Timeline gorunumu: Explorer panelinin altinda dosya gecmisini gorsel olarak izleyebilirsiniz
  • Inline blame: GitLens ile her satirin yaninda son degistiren kisi ve commit bilgisi gorunur
  • Smart Commit: git.enableSmartCommit ayari ile stage'e almadan dogrudan commit yapabilirsiniz
  • Auto Fetch: git.autofetch ayari ile uzak depo degisiklikleri otomatik cekilir

Font Ligatures (Yazi Tipi Baglantimlari)

Font ligature destegi kodda ozel karakter birlesimlerini daha okunakli sembollerle gosterir. Ornegin => bir ok sembolune, !== ozel bir esitsizlik sembolune donusur.

Destekleyen fontlar: JetBrains Mono, Fira Code, Cascadia Code, Victor Mono.

Etkinlestirme:

json
{
  "editor.fontFamily": "'JetBrains Mono', 'Fira Code', monospace",
  "editor.fontLigatures": true
}

Kullanisli Editor Ozellikleri

  • Linked Editing: HTML'de bir tag'i degistirdiginizde eşleşen kapanma tag'i otomatik guncellenir. "editor.linkedEditing": true ile etkinlestirilir.
  • Bracket Pair Colorization: Eslesen parantezler farkli renklerde gosterilir. "editor.bracketPairColorization.enabled": true
  • Inlay Hints: Parametre adlarini ve tip bilgilerini kodun icinde gosterir. TypeScript ve Python için cok faydalidir.
  • Sticky Scroll: Fonksiyon/sınıf basliklarini kaydirirken ust kisimda sabit tutar, büyük dosyalarda nerede oldugunuzu kolayca gorebilirsiniz.
  • Editor Rulers: "editor.rulers": [80, 120] ile satir uzunlugu kilavuz cizgileri ekleyebilirsiniz.

12. İpuçları & Tricks (Tips & Tricks)

Zen Mode

Dikkat dagitici tüm ogelerden arinmis tam ekran modu.

  • Etkinlestir: Ctrl+K Z
  • Cikis: Esc Esc (iki kez Escape)
  • Ayar: "zenMode.hideLineNumbers": false (satir numaralarini gizleme)

Minimap

Dosyanin küçük onizlemesi (sag kenarda).

json
{
  "editor.minimap.enabled": true,
  "editor.minimap.maxColumn": 80,
  "editor.minimap.renderCharacters": false,
  "editor.minimap.scale": 1,
  "editor.minimap.showSlider": "mouseover"
}

Dosya yolunu ve sembol hiyerarsisini gosteren ust cubuk.

json
{
  "breadcrumbs.enabled": true,
  "breadcrumbs.filePath": "on",
  "breadcrumbs.symbolPath": "on"
}

Sticky Scroll (Yapisan Basliklar)

Fonksiyon/sınıf basliklarini kaydirirken gorunur tutar.

json
{
  "editor.stickyScroll.enabled": true,
  "editor.stickyScroll.maxLineCount": 5
}

Terminal Split Kullanimi

Terminal bolme ile ayni anda birden fazla islemi izleyebilirsiniz:

  • Ctrl+Shift+5 ile terminali bolerek yan yana iki terminal acin
  • Sol panelde sunucu (npm run dev), sag panelde testler (npm test -- --watch)
  • Terminal sekmesine sag tiklayarak renk atayabilir, yeniden adlandirabilirsiniz
  • Ctrl+PageUp / Ctrl+PageDown ile terminaller arasi hizla gecis yapin

Emmet İpuçları (Emmet Tips)

HTML ve JSX icinde hızlı kod yazma:

Kisaltma (Abbreviation)Sonuc (Result)
div.container<div class="container"></div>
ul>li*55 li ogeli ul
div>p+spandiv icinde p ve span
.item$*3item1, item2, item3 class'li 3 div
a[href="#"]<a href="#"></a>
input:email<input type="email">
form>input:text+input:submitForm ile text ve submit input
div>(header>h1)+main+footerGruplamali yapi
loremLorem ipsum metni
lorem1010 kelimelik lorem ipsum

Hızlı Dosya Oluşturma (Quick File Creation)

Explorer panelinde Ctrl+P ile dosya adi yazarken yeni dosya olusturabilirsiniz. Veya komut satirindan:

bash
# VS Code ile dosya olustur ve ac
code yeni-dosya.ts

# Birden fazla dosya ac
code src/index.ts src/utils.ts src/types.ts

# Belirli satira git
code -g dosya.ts:42

# Diff gorunumu
code --diff dosya1.ts dosya2.ts

# Extension kurulumu
code --install-extension extension-id

# Extension listesi
code --list-extensions

Yararli Ayarlar (Useful Miscellaneous Settings)

json
{
  // Dosyada yapilan degisikligi tab'da goster
  "workbench.editor.highlightModifiedTabs": true,

  // Kapanmis sekmeleri hatirla
  "workbench.editor.restoreViewState": true,

  // Dosya kaydettiginde eslint sorunlarini duzelt
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  },

  // Otomatik parantez kapatma
  "editor.autoClosingBrackets": "always",
  "editor.autoClosingQuotes": "always",

  // Satir numarasi gosterimi
  "editor.lineNumbers": "relative",

  // Dosya ikonlari
  "workbench.iconTheme": "material-icon-theme",
  "material-icon-theme.folders.theme": "specific",

  // Terminal'de dosya linklerini tiklama
  "terminal.integrated.enableFileLinks": "on",

  // Editorden sonraki boslugu gizle
  "editor.scrollBeyondLastLine": false,

  // Otomatik kapanan tag
  "html.autoClosingTags": true,
  "javascript.autoClosingTags": true,
  "typescript.autoClosingTags": true,

  // Otomatik import guncelleme (dosya tasima/yeniden adlandirma)
  "javascript.updateImportsOnFileMove.enabled": "always",
  "typescript.updateImportsOnFileMove.enabled": "always"
}

Faydali Komut Paleti Komutları (Useful Command Palette Commands)

Ctrl+Shift+P ile erisin:

Komut (Command)Açıklama (Description)
Reload WindowPencereyi yeniden yükle (extension sorunlarinda faydali)
Transform to UppercaseSecili metni büyük harfe cevir
Transform to LowercaseSecili metni küçük harfe cevir
Sort Lines AscendingSatirlari A-Z sirala
Sort Lines DescendingSatirlari Z-A sirala
Join LinesSecili satirlari birlestir
Toggle Word WrapKelime sarmalamayi aç/kapat
Format DocumentBelgeyi formatla
Trim Trailing WhitespaceSondaki bosluklari temizle
Change Language ModeDil modunu değiştir (syntax highlight)
Preferences: Open Default Settings (JSON)Tüm varsayılan ayarlari gor
Developer: Toggle Developer ToolsGelistirici araçları
Emmet: Wrap with AbbreviationSecili kodu Emmet kisaltmasiyla sar
Emmet: Remove TagHTML tag'ini kaldir, icerigi birak

Performans İpuçları (Performance Tips)

  1. Gereksiz extension'lari devre disi birakin - Kullanmadiginiz extension'lari workspace bazinda devre disi birakin
  2. files.exclude kullanin - node_modules, vendor gibi büyük klasorleri gizleyin
  3. search.exclude kullanin - Aramada gereksiz klasorleri haric tutun
  4. files.watcherExclude - Dosya izleyicisinden büyük klasorleri haric tutun:
json
{
  "files.watcherExclude": {
    "**/.git/objects/**": true,
    "**/node_modules/**": true,
    "**/vendor/**": true,
    "**/storage/**": true,
    "**/.next/**": true
  }
}
  1. Büyük dosyalarda minimap'i kapatin - "editor.minimap.enabled": false
  2. Telemetry'yi kapatin - "telemetry.telemetryLevel": "off"
  3. Large file threshold ayarlayin - Büyük dosyalar için tokenization devre disi birakilir, varsayılan 20MB
  4. Extension bisect kullanin - Hangi extension'in sorun cikardigini bulmak için: Help > Start Extension Bisect

Hızlı Erisim ve Navigasyon Ozeti

AmacYöntem
Herhangi bir dosyayi açCtrl+P ile dosya adi yazin
Herhangi bir sembolu bulCtrl+T ile sembol adi yazin
Herhangi bir komut çalıştırCtrl+Shift+P ile komut yazin
Herhangi bir ayari değiştirCtrl+, ile ayar adi yazin
Herhangi bir satira gitCtrl+G ile satir numarasi yazin
Son düzenleme yerine donCtrl+K Ctrl+Q
Onceki konuma geri gitAlt+Left
Tanimina gitF12
Tanimi gozat (popup)Alt+F12
Referanslari listeleShift+F12

Bu rehber VS Code 1.96+ surumu için hazirlanmistir. Kisa yollar ve ozellikler sürüm guncellemeleriyle degisebilir. This guide is prepared for VS Code 1.96+. Shortcuts and features may change with version updates.


Ilgili Rehberler

DevOps & Tools

Diger Kategoriler

Developer Guides & Technical References