configuring-zed.md

   1# Configuring Zed
   2
   3Zed is designed to be configured: we want to fit your workflow and preferences exactly. We provide default settings that are designed to be a comfortable starting point for as many people as possible, but we hope you will enjoy tweaking it to make it feel incredible.
   4
   5In addition to the settings described here, you may also want to change your [theme](./themes.md), configure your [key bindings](./key-bindings.md), set up [tasks](./tasks.md) or install [extensions](https://github.com/zed-industries/extensions).
   6
   7## Settings files
   8
   9<!--
  10TBD: Settings files. Rewrite with "remote settings" in mind (e.g. `local settings` on the remote host).
  11Consider renaming `zed: Open Local Settings` to `zed: Open Project Settings`.
  12
  13TBD: Add settings documentation about how settings are merged as overlays. E.g. project>local>default. Note how settings that are maps are merged, but settings that are arrays are replaced and must include the defaults.
  14-->
  15
  16Your settings file can be opened with {#kb zed::OpenSettings}. By default it is located at `~/.config/zed/settings.json`, though if you have XDG_CONFIG_HOME in your environment on Linux it will be at `$XDG_CONFIG_HOME/zed/settings.json` instead.
  17
  18This configuration is merged with any local configuration inside your projects. You can open the project settings by running {#action zed::OpenProjectSettings} from the command palette. This will create a `.zed` directory containing`.zed/settings.json`.
  19
  20Although most projects will only need one settings file at the root, you can add more local settings files for subdirectories as needed. Not all settings can be set in local files, just those that impact the behavior of the editor and language tooling. For example you can set `tab_size`, `formatter` etc. but not `theme`, `vim_mode` and similar.
  21
  22The syntax for configuration files is a super-set of JSON that allows `//` comments.
  23
  24## Default settings
  25
  26You can find the default settings for your current Zed by running {#action zed::OpenDefaultSettings} from the command palette.
  27
  28Extensions that provide language servers may also provide default settings for those language servers.
  29
  30# Settings
  31
  32## Active Pane Modifiers
  33
  34- Description: Styling settings applied to the active pane.
  35- Setting: `active_pane_modifiers`
  36- Default:
  37
  38```json
  39{
  40  "active_pane_modifiers": {
  41    "border_size": 0.0,
  42    "inactive_opacity": 1.0
  43  }
  44}
  45```
  46
  47### Border size
  48
  49- Description: Size of the border surrounding the active pane. When set to 0, the active pane doesn't have any border. The border is drawn inset.
  50- Setting: `border_size`
  51- Default: `0.0`
  52
  53**Options**
  54
  55Non-negative `float` values
  56
  57### Inactive Opacity
  58
  59- Description: Opacity of inactive panels. When set to 1.0, the inactive panes have the same opacity as the active one. If set to 0, the inactive panes content will not be visible at all. Values are clamped to the [0.0, 1.0] range.
  60- Setting: `inactive_opacity`
  61- Default: `1.0`
  62
  63**Options**
  64
  65`float` values
  66
  67## Bottom Dock Layout
  68
  69- Description: Control the layout of the bottom dock, relative to the left and right docks
  70- Setting: `bottom_dock_layout`
  71- Default: `"contained"`
  72
  73**Options**
  74
  751. Contain the bottom dock, giving the full height of the window to the left and right docks
  76
  77```json
  78{
  79  "bottom_dock_layout": "contained"
  80}
  81```
  82
  832. Give the bottom dock the full width of the window, truncating the left and right docks
  84
  85```json
  86{
  87  "bottom_dock_layout": "full"
  88}
  89```
  90
  913. Left align the bottom dock, truncating the left dock and giving the right dock the full height of the window
  92
  93```json
  94{
  95  "bottom_dock_layout": "left_aligned"
  96}
  97```
  98
  993. Right align the bottom dock, giving the left dock the full height of the window and truncating the right dock.
 100
 101```json
 102{
 103  "bottom_dock_layout": "right_aligned"
 104}
 105```
 106
 107## Agent Font Size
 108
 109- Description: The font size for text in the agent panel. Inherits the UI font size if unset.
 110- Setting: `agent_font_size`
 111- Default: `null`
 112
 113**Options**
 114
 115`integer` values from `6` to `100` pixels (inclusive)
 116
 117## Allow Rewrap
 118
 119- Description: Controls where the {#action editor::Rewrap} action is allowed in the current language scope
 120- Setting: `allow_rewrap`
 121- Default: `"in_comments"`
 122
 123**Options**
 124
 1251. Allow rewrap in comments only:
 126
 127```json
 128{
 129  "allow_rewrap": "in_comments"
 130}
 131```
 132
 1332. Allow rewrap everywhere:
 134
 135```json
 136{
 137  "allow_rewrap": "everywhere"
 138}
 139```
 140
 1413. Never allow rewrap:
 142
 143```json
 144{
 145  "allow_rewrap": "never"
 146}
 147```
 148
 149Note: This setting has no effect in Vim mode, as rewrap is already allowed everywhere.
 150
 151## Auto Indent
 152
 153- Description: Whether indentation should be adjusted based on the context whilst typing. This can be specified on a per-language basis.
 154- Setting: `auto_indent`
 155- Default: `true`
 156
 157**Options**
 158
 159`boolean` values
 160
 161## Auto Indent On Paste
 162
 163- Description: Whether indentation of pasted content should be adjusted based on the context
 164- Setting: `auto_indent_on_paste`
 165- Default: `true`
 166
 167**Options**
 168
 169`boolean` values
 170
 171## Auto Install extensions
 172
 173- Description: Define extensions to be autoinstalled or never be installed.
 174- Setting: `auto_install_extension`
 175- Default: `{ "html": true }`
 176
 177**Options**
 178
 179You can find the names of your currently installed extensions by listing the subfolders under the [extension installation location](./extensions/installing-extensions.md#installation-location):
 180
 181On macOS:
 182
 183```sh
 184ls ~/Library/Application\ Support/Zed/extensions/installed/
 185```
 186
 187On Linux:
 188
 189```sh
 190ls ~/.local/share/zed/extensions/installed
 191```
 192
 193Define extensions which should be installed (`true`) or never installed (`false`).
 194
 195```json
 196{
 197  "auto_install_extensions": {
 198    "html": true,
 199    "dockerfile": true,
 200    "docker-compose": false
 201  }
 202}
 203```
 204
 205## Autosave
 206
 207- Description: When to automatically save edited buffers.
 208- Setting: `autosave`
 209- Default: `off`
 210
 211**Options**
 212
 2131. To disable autosave, set it to `off`:
 214
 215```json
 216{
 217  "autosave": "off"
 218}
 219```
 220
 2212. To autosave when focus changes, use `on_focus_change`:
 222
 223```json
 224{
 225  "autosave": "on_focus_change"
 226}
 227```
 228
 2293. To autosave when the active window changes, use `on_window_change`:
 230
 231```json
 232{
 233  "autosave": "on_window_change"
 234}
 235```
 236
 2374. To autosave after an inactivity period, use `after_delay`:
 238
 239```json
 240{
 241  "autosave": {
 242    "after_delay": {
 243      "milliseconds": 1000
 244    }
 245  }
 246}
 247```
 248
 249## Autoscroll on Clicks
 250
 251- Description: Whether to scroll when clicking near the edge of the visible text area.
 252- Setting: `autoscroll_on_clicks`
 253- Default: `false`
 254
 255**Options**
 256
 257`boolean` values
 258
 259## Auto Signature Help
 260
 261- Description: Show method signatures in the editor, when inside parentheses
 262- Setting: `auto_signature_help`
 263- Default: `false`
 264
 265**Options**
 266
 267`boolean` values
 268
 269### Show Signature Help After Edits
 270
 271- Description: Whether to show the signature help after completion or a bracket pair inserted. If `auto_signature_help` is enabled, this setting will be treated as enabled also.
 272- Setting: `show_signature_help_after_edits`
 273- Default: `false`
 274
 275**Options**
 276
 277`boolean` values
 278
 279## Auto Update
 280
 281- Description: Whether or not to automatically check for updates.
 282- Setting: `auto_update`
 283- Default: `true`
 284
 285**Options**
 286
 287`boolean` values
 288
 289## Base Keymap
 290
 291- Description: Base key bindings scheme. Base keymaps can be overridden with user keymaps.
 292- Setting: `base_keymap`
 293- Default: `VSCode`
 294
 295**Options**
 296
 2971. VS Code
 298
 299```json
 300{
 301  "base_keymap": "VSCode"
 302}
 303```
 304
 3052. Atom
 306
 307```json
 308{
 309  "base_keymap": "Atom"
 310}
 311```
 312
 3133. JetBrains
 314
 315```json
 316{
 317  "base_keymap": "JetBrains"
 318}
 319```
 320
 3214. None
 322
 323```json
 324{
 325  "base_keymap": "None"
 326}
 327```
 328
 3295. Sublime Text
 330
 331```json
 332{
 333  "base_keymap": "SublimeText"
 334}
 335```
 336
 3376. TextMate
 338
 339```json
 340{
 341  "base_keymap": "TextMate"
 342}
 343```
 344
 345## Buffer Font Family
 346
 347- Description: The name of a font to use for rendering text in the editor.
 348- Setting: `buffer_font_family`
 349- Default: `.ZedMono`. This currently aliases to [Lilex](https://lilex.myrt.co).
 350
 351**Options**
 352
 353The name of any font family installed on the user's system, or `".ZedMono"`.
 354
 355## Buffer Font Features
 356
 357- Description: The OpenType features to enable for text in the editor.
 358- Setting: `buffer_font_features`
 359- Default: `null`
 360- Platform: macOS and Windows.
 361
 362**Options**
 363
 364Zed supports all OpenType features that can be enabled or disabled for a given buffer or terminal font, as well as setting values for font features.
 365
 366For example, to disable font ligatures, add the following to your settings:
 367
 368```json
 369{
 370  "buffer_font_features": {
 371    "calt": false
 372  }
 373}
 374```
 375
 376You can also set other OpenType features, like setting `cv01` to `7`:
 377
 378```json
 379{
 380  "buffer_font_features": {
 381    "cv01": 7
 382  }
 383}
 384```
 385
 386## Buffer Font Fallbacks
 387
 388- Description: Set the buffer text's font fallbacks, this will be merged with the platform's default fallbacks.
 389- Setting: `buffer_font_fallbacks`
 390- Default: `null`
 391- Platform: macOS and Windows.
 392
 393**Options**
 394
 395For example, to use `Nerd Font` as a fallback, add the following to your settings:
 396
 397```json
 398{
 399  "buffer_font_fallbacks": ["Nerd Font"]
 400}
 401```
 402
 403## Buffer Font Size
 404
 405- Description: The default font size for text in the editor.
 406- Setting: `buffer_font_size`
 407- Default: `15`
 408
 409**Options**
 410
 411`integer` values from `6` to `100` pixels (inclusive)
 412
 413## Buffer Font Weight
 414
 415- Description: The default font weight for text in the editor.
 416- Setting: `buffer_font_weight`
 417- Default: `400`
 418
 419**Options**
 420
 421`integer` values between `100` and `900`
 422
 423## Buffer Line Height
 424
 425- Description: The default line height for text in the editor.
 426- Setting: `buffer_line_height`
 427- Default: `"comfortable"`
 428
 429**Options**
 430
 431`"standard"`, `"comfortable"` or `{ "custom": float }` (`1` is compact, `2` is loose)
 432
 433## Centered Layout
 434
 435- Description: Configuration for the centered layout mode.
 436- Setting: `centered_layout`
 437- Default:
 438
 439```json
 440"centered_layout": {
 441  "left_padding": 0.2,
 442  "right_padding": 0.2,
 443}
 444```
 445
 446**Options**
 447
 448The `left_padding` and `right_padding` options define the relative width of the
 449left and right padding of the central pane from the workspace when the centered layout mode is activated. Valid values range is from `0` to `0.4`.
 450
 451## Close on File Delete
 452
 453- Description: Whether to automatically close editor tabs when their corresponding files are deleted from disk.
 454- Setting: `close_on_file_delete`
 455- Default: `false`
 456
 457**Options**
 458
 459`boolean` values
 460
 461When enabled, this setting will automatically close tabs for files that have been deleted from the file system. This is particularly useful for workflows involving temporary or scratch files that are frequently created and deleted. When disabled (default), deleted files remain open with a strikethrough through their tab title.
 462
 463Note: Dirty files (files with unsaved changes) will not be automatically closed even when this setting is enabled, ensuring you don't lose unsaved work.
 464
 465## Confirm Quit
 466
 467- Description: Whether or not to prompt the user to confirm before closing the application.
 468- Setting: `confirm_quit`
 469- Default: `false`
 470
 471**Options**
 472
 473`boolean` values
 474
 475## Diagnostics Max Severity
 476
 477- Description: Which level to use to filter out diagnostics displayed in the editor
 478- Setting: `diagnostics_max_severity`
 479- Default: `null`
 480
 481**Options**
 482
 4831. Allow all diagnostics (default):
 484
 485```json
 486{
 487  "diagnostics_max_severity": null
 488}
 489```
 490
 4912. Show only errors:
 492
 493```json
 494{
 495  "diagnostics_max_severity": "error"
 496}
 497```
 498
 4993. Show errors and warnings:
 500
 501```json
 502{
 503  "diagnostics_max_severity": "warning"
 504}
 505```
 506
 5074. Show errors, warnings, and information:
 508
 509```json
 510{
 511  "diagnostics_max_severity": "information"
 512}
 513```
 514
 5155. Show all including hints:
 516
 517```json
 518{
 519  "diagnostics_max_severity": "hint"
 520}
 521```
 522
 523## Disable AI
 524
 525- Description: Whether to disable all AI features in Zed
 526- Setting: `disable_ai`
 527- Default: `false`
 528
 529**Options**
 530
 531`boolean` values
 532
 533## Direnv Integration
 534
 535- Description: Settings for [direnv](https://direnv.net/) integration. Requires `direnv` to be installed.
 536  `direnv` integration make it possible to use the environment variables set by a `direnv` configuration to detect some language servers in `$PATH` instead of installing them.
 537  It also allows for those environment variables to be used in tasks.
 538- Setting: `load_direnv`
 539- Default: `"direct"`
 540
 541**Options**
 542
 543There are two options to choose from:
 544
 5451. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
 5462. `direct`: Use `direnv export json` to load direnv. This will load direnv directly without relying on the shell hook and might cause some inconsistencies. This allows direnv to work with any shell.
 547
 548## Double Click In Multibuffer
 549
 550- Description: What to do when multibuffer is double clicked in some of its excerpts (parts of singleton buffers)
 551- Setting: `double_click_in_multibuffer`
 552- Default: `"select"`
 553
 554**Options**
 555
 5561. Behave as a regular buffer and select the whole word (default):
 557
 558```json
 559{
 560  "double_click_in_multibuffer": "select"
 561}
 562```
 563
 5642. Open the excerpt clicked as a new buffer in the new tab:
 565
 566```json
 567{
 568  "double_click_in_multibuffer": "open"
 569}
 570```
 571
 572For the case of "open", regular selection behavior can be achieved by holding `alt` when double clicking.
 573
 574## Drop Target Size
 575
 576- Description: Relative size of the drop target in the editor that will open dropped file as a split pane (0-0.5). For example, 0.25 means if you drop onto the top/bottom quarter of the pane a new vertical split will be used, if you drop onto the left/right quarter of the pane a new horizontal split will be used.
 577- Setting: `drop_target_size`
 578- Default: `0.2`
 579
 580**Options**
 581
 582`float` values between `0` and `0.5`
 583
 584## Edit Predictions
 585
 586- Description: Settings for edit predictions.
 587- Setting: `edit_predictions`
 588- Default:
 589
 590```json
 591  "edit_predictions": {
 592    "disabled_globs": [
 593      "**/.env*",
 594      "**/*.pem",
 595      "**/*.key",
 596      "**/*.cert",
 597      "**/*.crt",
 598      "**/.dev.vars",
 599      "**/secrets.yml"
 600    ]
 601  }
 602```
 603
 604**Options**
 605
 606### Disabled Globs
 607
 608- Description: A list of globs for which edit predictions should be disabled for. This list adds to a pre-existing, sensible default set of globs. Any additional ones you add are combined with them.
 609- Setting: `disabled_globs`
 610- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/.dev.vars", "**/secrets.yml"]`
 611
 612**Options**
 613
 614List of `string` values.
 615
 616## Edit Predictions Disabled in
 617
 618- Description: A list of language scopes in which edit predictions should be disabled.
 619- Setting: `edit_predictions_disabled_in`
 620- Default: `[]`
 621
 622**Options**
 623
 624List of `string` values
 625
 6261. Don't show edit predictions in comments:
 627
 628```json
 629"disabled_in": ["comment"]
 630```
 631
 6322. Don't show edit predictions in strings and comments:
 633
 634```json
 635"disabled_in": ["comment", "string"]
 636```
 637
 6383. Only in Go, don't show edit predictions in strings and comments:
 639
 640```json
 641{
 642  "languages": {
 643    "Go": {
 644      "edit_predictions_disabled_in": ["comment", "string"]
 645    }
 646  }
 647}
 648```
 649
 650## Current Line Highlight
 651
 652- Description: How to highlight the current line in the editor.
 653- Setting: `current_line_highlight`
 654- Default: `all`
 655
 656**Options**
 657
 6581. Don't highlight the current line:
 659
 660```json
 661"current_line_highlight": "none"
 662```
 663
 6642. Highlight the gutter area:
 665
 666```json
 667"current_line_highlight": "gutter"
 668```
 669
 6703. Highlight the editor area:
 671
 672```json
 673"current_line_highlight": "line"
 674```
 675
 6764. Highlight the full line:
 677
 678```json
 679"current_line_highlight": "all"
 680```
 681
 682## Selection Highlight
 683
 684- Description: Whether to highlight all occurrences of the selected text in an editor.
 685- Setting: `selection_highlight`
 686- Default: `true`
 687
 688## Rounded Selection
 689
 690- Description: Whether the text selection should have rounded corners.
 691- Setting: `rounded_selection`
 692- Default: `true`
 693
 694## Cursor Blink
 695
 696- Description: Whether or not the cursor blinks.
 697- Setting: `cursor_blink`
 698- Default: `true`
 699
 700**Options**
 701
 702`boolean` values
 703
 704## Cursor Shape
 705
 706- Description: Cursor shape for the default editor.
 707- Setting: `cursor_shape`
 708- Default: `bar`
 709
 710**Options**
 711
 7121. A vertical bar:
 713
 714```json
 715"cursor_shape": "bar"
 716```
 717
 7182. A block that surrounds the following character:
 719
 720```json
 721"cursor_shape": "block"
 722```
 723
 7243. An underline / underscore that runs along the following character:
 725
 726```json
 727"cursor_shape": "underline"
 728```
 729
 7304. An box drawn around the following character:
 731
 732```json
 733"cursor_shape": "hollow"
 734```
 735
 736## Gutter
 737
 738- Description: Settings for the editor gutter
 739- Setting: `gutter`
 740- Default:
 741
 742```json
 743{
 744  "gutter": {
 745    "line_numbers": true,
 746    "runnables": true,
 747    "breakpoints": true,
 748    "folds": true,
 749    "min_line_number_digits": 4
 750  }
 751}
 752```
 753
 754**Options**
 755
 756- `line_numbers`: Whether to show line numbers in the gutter
 757- `runnables`: Whether to show runnable buttons in the gutter
 758- `breakpoints`: Whether to show breakpoints in the gutter
 759- `folds`: Whether to show fold buttons in the gutter
 760- `min_line_number_digits`: Minimum number of characters to reserve space for in the gutter
 761
 762## Hide Mouse
 763
 764- Description: Determines when the mouse cursor should be hidden in an editor or input box.
 765- Setting: `hide_mouse`
 766- Default: `on_typing_and_movement`
 767
 768**Options**
 769
 7701. Never hide the mouse cursor:
 771
 772```json
 773"hide_mouse": "never"
 774```
 775
 7762. Hide only when typing:
 777
 778```json
 779"hide_mouse": "on_typing"
 780```
 781
 7823. Hide on both typing and cursor movement:
 783
 784```json
 785"hide_mouse": "on_typing_and_movement"
 786```
 787
 788## Snippet Sort Order
 789
 790- Description: Determines how snippets are sorted relative to other completion items.
 791- Setting: `snippet_sort_order`
 792- Default: `inline`
 793
 794**Options**
 795
 7961. Place snippets at the top of the completion list:
 797
 798```json
 799"snippet_sort_order": "top"
 800```
 801
 8022. Place snippets normally without any preference:
 803
 804```json
 805"snippet_sort_order": "inline"
 806```
 807
 8083. Place snippets at the bottom of the completion list:
 809
 810```json
 811"snippet_sort_order": "bottom"
 812```
 813
 8144. Do not show snippets in the completion list at all:
 815
 816```json
 817"snippet_sort_order": "none"
 818```
 819
 820## Editor Scrollbar
 821
 822- Description: Whether or not to show the editor scrollbar and various elements in it.
 823- Setting: `scrollbar`
 824- Default:
 825
 826```json
 827"scrollbar": {
 828  "show": "auto",
 829  "cursors": true,
 830  "git_diff": true,
 831  "search_results": true,
 832  "selected_text": true,
 833  "selected_symbol": true,
 834  "diagnostics": "all",
 835  "axes": {
 836    "horizontal": true,
 837    "vertical": true,
 838  },
 839},
 840```
 841
 842### Show Mode
 843
 844- Description: When to show the editor scrollbar.
 845- Setting: `show`
 846- Default: `auto`
 847
 848**Options**
 849
 8501. Show the scrollbar if there's important information or follow the system's configured behavior:
 851
 852```json
 853"scrollbar": {
 854  "show": "auto"
 855}
 856```
 857
 8582. Match the system's configured behavior:
 859
 860```json
 861"scrollbar": {
 862  "show": "system"
 863}
 864```
 865
 8663. Always show the scrollbar:
 867
 868```json
 869"scrollbar": {
 870  "show": "always"
 871}
 872```
 873
 8744. Never show the scrollbar:
 875
 876```json
 877"scrollbar": {
 878  "show": "never"
 879}
 880```
 881
 882### Cursor Indicators
 883
 884- Description: Whether to show cursor positions in the scrollbar.
 885- Setting: `cursors`
 886- Default: `true`
 887
 888**Options**
 889
 890`boolean` values
 891
 892### Git Diff Indicators
 893
 894- Description: Whether to show git diff indicators in the scrollbar.
 895- Setting: `git_diff`
 896- Default: `true`
 897
 898**Options**
 899
 900`boolean` values
 901
 902### Search Results Indicators
 903
 904- Description: Whether to show buffer search results in the scrollbar.
 905- Setting: `search_results`
 906- Default: `true`
 907
 908**Options**
 909
 910`boolean` values
 911
 912### Selected Text Indicators
 913
 914- Description: Whether to show selected text occurrences in the scrollbar.
 915- Setting: `selected_text`
 916- Default: `true`
 917
 918**Options**
 919
 920`boolean` values
 921
 922### Selected Symbols Indicators
 923
 924- Description: Whether to show selected symbol occurrences in the scrollbar.
 925- Setting: `selected_symbol`
 926- Default: `true`
 927
 928**Options**
 929
 930`boolean` values
 931
 932### Diagnostics
 933
 934- Description: Which diagnostic indicators to show in the scrollbar.
 935- Setting: `diagnostics`
 936- Default: `all`
 937
 938**Options**
 939
 9401. Show all diagnostics:
 941
 942```json
 943{
 944  "diagnostics": "all"
 945}
 946```
 947
 9482. Do not show any diagnostics:
 949
 950```json
 951{
 952  "diagnostics": "none"
 953}
 954```
 955
 9563. Show only errors:
 957
 958```json
 959{
 960  "diagnostics": "error"
 961}
 962```
 963
 9644. Show only errors and warnings:
 965
 966```json
 967{
 968  "diagnostics": "warning"
 969}
 970```
 971
 9725. Show only errors, warnings, and information:
 973
 974```json
 975{
 976  "diagnostics": "information"
 977}
 978```
 979
 980### Axes
 981
 982- Description: Forcefully enable or disable the scrollbar for each axis
 983- Setting: `axes`
 984- Default:
 985
 986```json
 987"scrollbar": {
 988  "axes": {
 989    "horizontal": true,
 990    "vertical": true,
 991  },
 992}
 993```
 994
 995#### Horizontal
 996
 997- Description: When false, forcefully disables the horizontal scrollbar. Otherwise, obey other settings.
 998- Setting: `horizontal`
 999- Default: `true`
1000
1001**Options**
1002
1003`boolean` values
1004
1005#### Vertical
1006
1007- Description: When false, forcefully disables the vertical scrollbar. Otherwise, obey other settings.
1008- Setting: `vertical`
1009- Default: `true`
1010
1011**Options**
1012
1013`boolean` values
1014
1015## Minimap
1016
1017- Description: Settings related to the editor's minimap, which provides an overview of your document.
1018- Setting: `minimap`
1019- Default:
1020
1021```json
1022{
1023  "minimap": {
1024    "show": "never",
1025    "thumb": "always",
1026    "thumb_border": "left_open",
1027    "current_line_highlight": null
1028  }
1029}
1030```
1031
1032### Show Mode
1033
1034- Description: When to show the minimap in the editor.
1035- Setting: `show`
1036- Default: `never`
1037
1038**Options**
1039
10401. Always show the minimap:
1041
1042```json
1043{
1044  "show": "always"
1045}
1046```
1047
10482. Show the minimap if the editor's scrollbars are visible:
1049
1050```json
1051{
1052  "show": "auto"
1053}
1054```
1055
10563. Never show the minimap:
1057
1058```json
1059{
1060  "show": "never"
1061}
1062```
1063
1064### Thumb Display
1065
1066- Description: When to show the minimap thumb (the visible editor area) in the minimap.
1067- Setting: `thumb`
1068- Default: `always`
1069
1070**Options**
1071
10721. Show the minimap thumb when hovering over the minimap:
1073
1074```json
1075{
1076  "thumb": "hover"
1077}
1078```
1079
10802. Always show the minimap thumb:
1081
1082```json
1083{
1084  "thumb": "always"
1085}
1086```
1087
1088### Thumb Border
1089
1090- Description: How the minimap thumb border should look.
1091- Setting: `thumb_border`
1092- Default: `left_open`
1093
1094**Options**
1095
10961. Display a border on all sides of the thumb:
1097
1098```json
1099{
1100  "thumb_border": "full"
1101}
1102```
1103
11042. Display a border on all sides except the left side:
1105
1106```json
1107{
1108  "thumb_border": "left_open"
1109}
1110```
1111
11123. Display a border on all sides except the right side:
1113
1114```json
1115{
1116  "thumb_border": "right_open"
1117}
1118```
1119
11204. Display a border only on the left side:
1121
1122```json
1123{
1124  "thumb_border": "left_only"
1125}
1126```
1127
11285. Display the thumb without any border:
1129
1130```json
1131{
1132  "thumb_border": "none"
1133}
1134```
1135
1136### Current Line Highlight
1137
1138- Description: How to highlight the current line in the minimap.
1139- Setting: `current_line_highlight`
1140- Default: `null`
1141
1142**Options**
1143
11441. Inherit the editor's current line highlight setting:
1145
1146```json
1147{
1148  "minimap": {
1149    "current_line_highlight": null
1150  }
1151}
1152```
1153
11542. Highlight the current line in the minimap:
1155
1156```json
1157{
1158  "minimap": {
1159    "current_line_highlight": "line"
1160  }
1161}
1162```
1163
1164or
1165
1166```json
1167{
1168  "minimap": {
1169    "current_line_highlight": "all"
1170  }
1171}
1172```
1173
11743. Do not highlight the current line in the minimap:
1175
1176```json
1177{
1178  "minimap": {
1179    "current_line_highlight": "gutter"
1180  }
1181}
1182```
1183
1184or
1185
1186```json
1187{
1188  "minimap": {
1189    "current_line_highlight": "none"
1190  }
1191}
1192```
1193
1194## Editor Tab Bar
1195
1196- Description: Settings related to the editor's tab bar.
1197- Settings: `tab_bar`
1198- Default:
1199
1200```json
1201"tab_bar": {
1202  "show": true,
1203  "show_nav_history_buttons": true,
1204  "show_tab_bar_buttons": true
1205}
1206```
1207
1208### Show
1209
1210- Description: Whether or not to show the tab bar in the editor.
1211- Setting: `show`
1212- Default: `true`
1213
1214**Options**
1215
1216`boolean` values
1217
1218### Navigation History Buttons
1219
1220- Description: Whether or not to show the navigation history buttons.
1221- Setting: `show_nav_history_buttons`
1222- Default: `true`
1223
1224**Options**
1225
1226`boolean` values
1227
1228### Tab Bar Buttons
1229
1230- Description: Whether or not to show the tab bar buttons.
1231- Setting: `show_tab_bar_buttons`
1232- Default: `true`
1233
1234**Options**
1235
1236`boolean` values
1237
1238## Editor Tabs
1239
1240- Description: Configuration for the editor tabs.
1241- Setting: `tabs`
1242- Default:
1243
1244```json
1245"tabs": {
1246  "close_position": "right",
1247  "file_icons": false,
1248  "git_status": false,
1249  "activate_on_close": "history",
1250  "show_close_button": "hover",
1251  "show_diagnostics": "off"
1252},
1253```
1254
1255### Close Position
1256
1257- Description: Where to display close button within a tab.
1258- Setting: `close_position`
1259- Default: `right`
1260
1261**Options**
1262
12631. Display the close button on the right:
1264
1265```json
1266{
1267  "close_position": "right"
1268}
1269```
1270
12712. Display the close button on the left:
1272
1273```json
1274{
1275  "close_position": "left"
1276}
1277```
1278
1279### File Icons
1280
1281- Description: Whether to show the file icon for a tab.
1282- Setting: `file_icons`
1283- Default: `false`
1284
1285### Git Status
1286
1287- Description: Whether or not to show Git file status in tab.
1288- Setting: `git_status`
1289- Default: `false`
1290
1291### Activate on close
1292
1293- Description: What to do after closing the current tab.
1294- Setting: `activate_on_close`
1295- Default: `history`
1296
1297**Options**
1298
12991.  Activate the tab that was open previously:
1300
1301```json
1302{
1303  "activate_on_close": "history"
1304}
1305```
1306
13072. Activate the right neighbour tab if present:
1308
1309```json
1310{
1311  "activate_on_close": "neighbour"
1312}
1313```
1314
13153. Activate the left neighbour tab if present:
1316
1317```json
1318{
1319  "activate_on_close": "left_neighbour"
1320}
1321```
1322
1323### Show close button
1324
1325- Description: Controls the appearance behavior of the tab's close button.
1326- Setting: `show_close_button`
1327- Default: `hover`
1328
1329**Options**
1330
13311.  Show it just upon hovering the tab:
1332
1333```json
1334{
1335  "show_close_button": "hover"
1336}
1337```
1338
13392. Show it persistently:
1340
1341```json
1342{
1343  "show_close_button": "always"
1344}
1345```
1346
13473. Never show it, even if hovering it:
1348
1349```json
1350{
1351  "show_close_button": "hidden"
1352}
1353```
1354
1355### Show Diagnostics
1356
1357- Description: Whether to show diagnostics indicators in tabs. This setting only works when file icons are active and controls which files with diagnostic issues to mark.
1358- Setting: `show_diagnostics`
1359- Default: `off`
1360
1361**Options**
1362
13631. Do not mark any files:
1364
1365```json
1366{
1367  "show_diagnostics": "off"
1368}
1369```
1370
13712. Only mark files with errors:
1372
1373```json
1374{
1375  "show_diagnostics": "errors"
1376}
1377```
1378
13793. Mark files with errors and warnings:
1380
1381```json
1382{
1383  "show_diagnostics": "all"
1384}
1385```
1386
1387### Show Inline Code Actions
1388
1389- Description: Whether to show code action button at start of buffer line.
1390- Setting: `inline_code_actions`
1391- Default: `true`
1392
1393**Options**
1394
1395`boolean` values
1396
1397### Drag And Drop Selection
1398
1399- Description: Whether to allow drag and drop text selection in buffer. `delay` is the milliseconds that must elapse before drag and drop is allowed. Otherwise, a new text selection is created.
1400- Setting: `drag_and_drop_selection`
1401- Default:
1402
1403```json
1404"drag_and_drop_selection": {
1405  "enabled": true,
1406  "delay": 300
1407}
1408```
1409
1410## Editor Toolbar
1411
1412- Description: Whether or not to show various elements in the editor toolbar.
1413- Setting: `toolbar`
1414- Default:
1415
1416```json
1417"toolbar": {
1418  "breadcrumbs": true,
1419  "quick_actions": true,
1420  "selections_menu": true,
1421  "agent_review": true,
1422  "code_actions": false
1423},
1424```
1425
1426**Options**
1427
1428Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
1429
1430## Use System Tabs
1431
1432- Description: Whether to allow windows to tab together based on the user’s tabbing preference (macOS only).
1433- Setting: `use_system_window_tabs`
1434- Default: `false`
1435
1436**Options**
1437
1438This setting enables integration with macOS’s native window tabbing feature. When set to `true`, Zed windows can be grouped together as tabs in a single macOS window, following the system-wide tabbing preferences set by the user (such as "Always", "In Full Screen", or "Never"). This setting is only available on macOS.
1439
1440## Enable Language Server
1441
1442- Description: Whether or not to use language servers to provide code intelligence.
1443- Setting: `enable_language_server`
1444- Default: `true`
1445
1446**Options**
1447
1448`boolean` values
1449
1450## Ensure Final Newline On Save
1451
1452- Description: Removes any lines containing only whitespace at the end of the file and ensures just one newline at the end.
1453- Setting: `ensure_final_newline_on_save`
1454- Default: `true`
1455
1456**Options**
1457
1458`boolean` values
1459
1460## Expand Excerpt Lines
1461
1462- Description: The default number of lines to expand excerpts in the multibuffer by
1463- Setting: `expand_excerpt_lines`
1464- Default: `5`
1465
1466**Options**
1467
1468Positive `integer` values
1469
1470## Excerpt Context Lines
1471
1472- Description: The number of lines of context to provide when showing excerpts in the multibuffer.
1473- Setting: `excerpt_context_lines`
1474- Default: `2`
1475
1476**Options**
1477
1478Positive `integer` value between 1 and 32. Values outside of this range will be clamped to this range.
1479
1480## Extend Comment On Newline
1481
1482- Description: Whether to start a new line with a comment when a previous line is a comment as well.
1483- Setting: `extend_comment_on_newline`
1484- Default: `true`
1485
1486**Options**
1487
1488`boolean` values
1489
1490## Status Bar
1491
1492- Description: Control various elements in the status bar. Note that some items in the status bar have their own settings set elsewhere.
1493- Setting: `status_bar`
1494- Default:
1495
1496```json
1497"status_bar": {
1498  "active_language_button": true,
1499  "cursor_position_button": true
1500},
1501```
1502
1503## LSP
1504
1505- Description: Configuration for language servers.
1506- Setting: `lsp`
1507- Default: `null`
1508
1509**Options**
1510
1511The following settings can be overridden for specific language servers:
1512
1513- `initialization_options`
1514- `settings`
1515
1516To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
1517
1518Some options are passed via `initialization_options` to the language server. These are for options which must be specified at language server startup and when changed will require restarting the language server.
1519
1520For example to pass the `check` option to `rust-analyzer`, use the following configuration:
1521
1522```json
1523"lsp": {
1524  "rust-analyzer": {
1525    "initialization_options": {
1526      "check": {
1527        "command": "clippy" // rust-analyzer.check.command (default: "check")
1528      }
1529    }
1530  }
1531}
1532```
1533
1534While other options may be changed at a runtime and should be placed under `settings`:
1535
1536```json
1537"lsp": {
1538  "yaml-language-server": {
1539    "settings": {
1540      "yaml": {
1541        "keyOrdering": true // Enforces alphabetical ordering of keys in maps
1542      }
1543    }
1544  }
1545}
1546```
1547
1548## Global LSP Settings
1549
1550- Description: Configuration for global LSP settings that apply to all language servers
1551- Setting: `global_lsp_settings`
1552- Default:
1553
1554```json
1555{
1556  "global_lsp_settings": {
1557    "button": true
1558  }
1559}
1560```
1561
1562**Options**
1563
1564- `button`: Whether to show the LSP status button in the status bar
1565
1566## LSP Highlight Debounce
1567
1568- Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
1569- Setting: `lsp_highlight_debounce`
1570- Default: `75`
1571
1572## Global LSP Settings
1573
1574- Description: Common language server settings.
1575- Setting: `global_lsp_settings`
1576- Default:
1577
1578```json
1579"global_lsp_settings": {
1580  "button": true
1581}
1582```
1583
1584**Options**
1585
1586`integer` values representing milliseconds
1587
1588## Features
1589
1590- Description: Features that can be globally enabled or disabled
1591- Setting: `features`
1592- Default:
1593
1594```json
1595{
1596  "features": {
1597    "edit_prediction_provider": "zed"
1598  }
1599}
1600```
1601
1602### Edit Prediction Provider
1603
1604- Description: Which edit prediction provider to use
1605- Setting: `edit_prediction_provider`
1606- Default: `"zed"`
1607
1608**Options**
1609
16101. Use Zeta as the edit prediction provider:
1611
1612```json
1613{
1614  "features": {
1615    "edit_prediction_provider": "zed"
1616  }
1617}
1618```
1619
16202. Use Copilot as the edit prediction provider:
1621
1622```json
1623{
1624  "features": {
1625    "edit_prediction_provider": "copilot"
1626  }
1627}
1628```
1629
16303. Use Supermaven as the edit prediction provider:
1631
1632```json
1633{
1634  "features": {
1635    "edit_prediction_provider": "supermaven"
1636  }
1637}
1638```
1639
16404. Turn off edit predictions across all providers
1641
1642```json
1643{
1644  "features": {
1645    "edit_prediction_provider": "none"
1646  }
1647}
1648```
1649
1650## Format On Save
1651
1652- Description: Whether or not to perform a buffer format before saving.
1653- Setting: `format_on_save`
1654- Default: `on`
1655
1656**Options**
1657
16581. `on`, enables format on save obeying `formatter` setting:
1659
1660```json
1661{
1662  "format_on_save": "on"
1663}
1664```
1665
16662. `off`, disables format on save:
1667
1668```json
1669{
1670  "format_on_save": "off"
1671}
1672```
1673
1674## Formatter
1675
1676- Description: How to perform a buffer format.
1677- Setting: `formatter`
1678- Default: `auto`
1679
1680**Options**
1681
16821. To use the current language server, use `"language_server"`:
1683
1684```json
1685{
1686  "formatter": "language_server"
1687}
1688```
1689
16902. Or to use an external command, use `"external"`. Specify the name of the formatting program to run, and an array of arguments to pass to the program. The buffer's text will be passed to the program on stdin, and the formatted output should be written to stdout. For example, the following command would strip trailing spaces using [`sed(1)`](https://linux.die.net/man/1/sed):
1691
1692```json
1693{
1694  "formatter": {
1695    "external": {
1696      "command": "sed",
1697      "arguments": ["-e", "s/ *$//"]
1698    }
1699  }
1700}
1701```
1702
17033. External formatters may optionally include a `{buffer_path}` placeholder which at runtime will include the path of the buffer being formatted. Formatters operate by receiving file content via standard input, reformatting it and then outputting it to standard output and so normally don't know the filename of what they are formatting. Tools like Prettier support receiving the file path via a command line argument which can then used to impact formatting decisions.
1704
1705WARNING: `{buffer_path}` should not be used to direct your formatter to read from a filename. Your formatter should only read from standard input and should not read or write files directly.
1706
1707```json
1708  "formatter": {
1709    "external": {
1710      "command": "prettier",
1711      "arguments": ["--stdin-filepath", "{buffer_path}"]
1712    }
1713  }
1714```
1715
17164. Or to use code actions provided by the connected language servers, use `"code_actions"`:
1717
1718```json
1719{
1720  "formatter": {
1721    "code_actions": {
1722      // Use ESLint's --fix:
1723      "source.fixAll.eslint": true,
1724      // Organize imports on save:
1725      "source.organizeImports": true
1726    }
1727  }
1728}
1729```
1730
17315. Or to use multiple formatters consecutively, use an array of formatters:
1732
1733```json
1734{
1735  "formatter": [
1736    { "language_server": { "name": "rust-analyzer" } },
1737    {
1738      "external": {
1739        "command": "sed",
1740        "arguments": ["-e", "s/ *$//"]
1741      }
1742    }
1743  ]
1744}
1745```
1746
1747Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
1748If any of the formatters fails, the subsequent ones will still be executed.
1749
1750## Code Actions On Format
1751
1752- Description: The code actions to perform with the primary language server when formatting the buffer.
1753- Setting: `code_actions_on_format`
1754- Default: `{}`, except for Go it's `{ "source.organizeImports": true }`
1755
1756**Examples**
1757
1758<!--
1759TBD: Add Python Ruff source.organizeImports example
1760-->
1761
17621. Organize imports on format in TypeScript and TSX buffers:
1763
1764```json
1765{
1766  "languages": {
1767    "TypeScript": {
1768      "code_actions_on_format": {
1769        "source.organizeImports": true
1770      }
1771    },
1772    "TSX": {
1773      "code_actions_on_format": {
1774        "source.organizeImports": true
1775      }
1776    }
1777  }
1778}
1779```
1780
17812. Run ESLint `fixAll` code action when formatting:
1782
1783```json
1784{
1785  "languages": {
1786    "JavaScript": {
1787      "code_actions_on_format": {
1788        "source.fixAll.eslint": true
1789      }
1790    }
1791  }
1792}
1793```
1794
17953. Run only a single ESLint rule when using `fixAll`:
1796
1797```json
1798{
1799  "languages": {
1800    "JavaScript": {
1801      "code_actions_on_format": {
1802        "source.fixAll.eslint": true
1803      }
1804    }
1805  },
1806  "lsp": {
1807    "eslint": {
1808      "settings": {
1809        "codeActionOnSave": {
1810          "rules": ["import/order"]
1811        }
1812      }
1813    }
1814  }
1815}
1816```
1817
1818## Auto close
1819
1820- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
1821- Setting: `use_autoclose`
1822- Default: `true`
1823
1824**Options**
1825
1826`boolean` values
1827
1828## Always Treat Brackets As Autoclosed
1829
1830- Description: Controls how the editor handles the autoclosed characters.
1831- Setting: `always_treat_brackets_as_autoclosed`
1832- Default: `false`
1833
1834**Options**
1835
1836`boolean` values
1837
1838**Example**
1839
1840If the setting is set to `true`:
1841
18421. Enter in the editor: `)))`
18432. Move the cursor to the start: `^)))`
18443. Enter again: `)))`
1845
1846The result is still `)))` and not `))))))`, which is what it would be by default.
1847
1848## File Scan Exclusions
1849
1850- Setting: `file_scan_exclusions`
1851- Description: Files or globs of files that will be excluded by Zed entirely. They will be skipped during file scans, file searches, and not be displayed in the project file tree. Overrides `file_scan_inclusions`.
1852- Default:
1853
1854```json
1855"file_scan_exclusions": [
1856  "**/.git",
1857  "**/.svn",
1858  "**/.hg",
1859  "**/.jj",
1860  "**/CVS",
1861  "**/.DS_Store",
1862  "**/Thumbs.db",
1863  "**/.classpath",
1864  "**/.settings"
1865],
1866```
1867
1868Note, specifying `file_scan_exclusions` in settings.json will override the defaults (shown above). If you are looking to exclude additional items you will need to include all the default values in your settings.
1869
1870## File Scan Inclusions
1871
1872- Setting: `file_scan_inclusions`
1873- Description: Files or globs of files that will be included by Zed, even when ignored by git. This is useful for files that are not tracked by git, but are still important to your project. Note that globs that are overly broad can slow down Zed's file scanning. `file_scan_exclusions` takes precedence over these inclusions.
1874- Default:
1875
1876```json
1877"file_scan_inclusions": [".env*"],
1878```
1879
1880## File Types
1881
1882- Setting: `file_types`
1883- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
1884- Default:
1885
1886```json
1887"file_types": {
1888  "JSONC": ["**/.zed/**/*.json", "**/zed/**/*.json", "**/Zed/**/*.json", "**/.vscode/**/*.json"],
1889  "Shell Script": [".env.*"]
1890}
1891```
1892
1893**Examples**
1894
1895To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
1896
1897```json
1898{
1899  "file_types": {
1900    "C++": ["c"],
1901    "TOML": ["MyLockFile"],
1902    "Dockerfile": ["Dockerfile*"]
1903  }
1904}
1905```
1906
1907## Diagnostics
1908
1909- Description: Configuration for diagnostics-related features.
1910- Setting: `diagnostics`
1911- Default:
1912
1913```json
1914{
1915  "diagnostics": {
1916    "include_warnings": true,
1917    "inline": {
1918      "enabled": false
1919    },
1920    "update_with_cursor": false,
1921    "primary_only": false,
1922    "use_rendered": false
1923  }
1924}
1925```
1926
1927### Inline Diagnostics
1928
1929- Description: Whether or not to show diagnostics information inline.
1930- Setting: `inline`
1931- Default:
1932
1933```json
1934{
1935  "diagnostics": {
1936    "inline": {
1937      "enabled": false,
1938      "update_debounce_ms": 150,
1939      "padding": 4,
1940      "min_column": 0,
1941      "max_severity": null
1942    }
1943  }
1944}
1945```
1946
1947**Options**
1948
19491. Enable inline diagnostics.
1950
1951```json
1952{
1953  "diagnostics": {
1954    "inline": {
1955      "enabled": true
1956    }
1957  }
1958}
1959```
1960
19612. Delay diagnostic updates until some time after the last diagnostic update.
1962
1963```json
1964{
1965  "diagnostics": {
1966    "inline": {
1967      "enabled": true,
1968      "update_debounce_ms": 150
1969    }
1970  }
1971}
1972```
1973
19743. Set padding between the end of the source line and the start of the diagnostic.
1975
1976```json
1977{
1978  "diagnostics": {
1979    "inline": {
1980      "enabled": true,
1981      "padding": 4
1982    }
1983  }
1984}
1985```
1986
19874. Horizontally align inline diagnostics at the given column.
1988
1989```json
1990{
1991  "diagnostics": {
1992    "inline": {
1993      "enabled": true,
1994      "min_column": 80
1995    }
1996  }
1997}
1998```
1999
20005. Show only warning and error diagnostics.
2001
2002```json
2003{
2004  "diagnostics": {
2005    "inline": {
2006      "enabled": true,
2007      "max_severity": "warning"
2008    }
2009  }
2010}
2011```
2012
2013## Git
2014
2015- Description: Configuration for git-related features.
2016- Setting: `git`
2017- Default:
2018
2019```json
2020{
2021  "git": {
2022    "git_gutter": "tracked_files",
2023    "inline_blame": {
2024      "enabled": true
2025    },
2026    "hunk_style": "staged_hollow"
2027  }
2028}
2029```
2030
2031### Git Gutter
2032
2033- Description: Whether or not to show the git gutter.
2034- Setting: `git_gutter`
2035- Default: `tracked_files`
2036
2037**Options**
2038
20391. Show git gutter in tracked files
2040
2041```json
2042{
2043  "git": {
2044    "git_gutter": "tracked_files"
2045  }
2046}
2047```
2048
20492. Hide git gutter
2050
2051```json
2052{
2053  "git": {
2054    "git_gutter": "hide"
2055  }
2056}
2057```
2058
2059### Gutter Debounce
2060
2061- Description: Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
2062- Setting: `gutter_debounce`
2063- Default: `null`
2064
2065**Options**
2066
2067`integer` values representing milliseconds
2068
2069Example:
2070
2071```json
2072{
2073  "git": {
2074    "gutter_debounce": 100
2075  }
2076}
2077```
2078
2079### Inline Git Blame
2080
2081- Description: Whether or not to show git blame information inline, on the currently focused line.
2082- Setting: `inline_blame`
2083- Default:
2084
2085```json
2086{
2087  "git": {
2088    "inline_blame": {
2089      "enabled": true
2090    }
2091  }
2092}
2093```
2094
2095**Options**
2096
20971. Disable inline git blame:
2098
2099```json
2100{
2101  "git": {
2102    "inline_blame": {
2103      "enabled": false
2104    }
2105  }
2106}
2107```
2108
21092. Only show inline git blame after a delay (that starts after cursor stops moving):
2110
2111```json
2112{
2113  "git": {
2114    "inline_blame": {
2115      "delay_ms": 500
2116    }
2117  }
2118}
2119```
2120
21213. Show a commit summary next to the commit date and author:
2122
2123```json
2124{
2125  "git": {
2126    "inline_blame": {
2127      "show_commit_summary": true
2128    }
2129  }
2130}
2131```
2132
21334. Use this as the minimum column at which to display inline blame information:
2134
2135```json
2136{
2137  "git": {
2138    "inline_blame": {
2139      "min_column": 80
2140    }
2141  }
2142}
2143```
2144
21455. Set the padding between the end of the line and the inline blame hint, in ems:
2146
2147```json
2148{
2149  "git": {
2150    "inline_blame": {
2151      "padding": 10
2152    }
2153  }
2154}
2155```
2156
2157### Hunk Style
2158
2159- Description: What styling we should use for the diff hunks.
2160- Setting: `hunk_style`
2161- Default:
2162
2163```json
2164{
2165  "git": {
2166    "hunk_style": "staged_hollow"
2167  }
2168}
2169```
2170
2171**Options**
2172
21731. Show the staged hunks faded out and with a border:
2174
2175```json
2176{
2177  "git": {
2178    "hunk_style": "staged_hollow"
2179  }
2180}
2181```
2182
21832. Show unstaged hunks faded out and with a border:
2184
2185```json
2186{
2187  "git": {
2188    "hunk_style": "unstaged_hollow"
2189  }
2190}
2191```
2192
2193## Go to Definition Fallback
2194
2195- Description: What to do when the {#action editor::GoToDefinition} action fails to find a definition
2196- Setting: `go_to_definition_fallback`
2197- Default: `"find_all_references"`
2198
2199**Options**
2200
22011. Do nothing:
2202
2203```json
2204{
2205  "go_to_definition_fallback": "none"
2206}
2207```
2208
22092. Find references for the same symbol (default):
2210
2211```json
2212{
2213  "go_to_definition_fallback": "find_all_references"
2214}
2215```
2216
2217## Hard Tabs
2218
2219- Description: Whether to indent lines using tab characters or multiple spaces.
2220- Setting: `hard_tabs`
2221- Default: `false`
2222
2223**Options**
2224
2225`boolean` values
2226
2227## Helix Mode
2228
2229- Description: Whether or not to enable Helix mode. Enabling `helix_mode` also enables `vim_mode`. See the [Helix documentation](./helix.md) for more details.
2230- Setting: `helix_mode`
2231- Default: `false`
2232
2233**Options**
2234
2235`boolean` values
2236
2237## Indent Guides
2238
2239- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
2240- Setting: `indent_guides`
2241- Default:
2242
2243```json
2244{
2245  "indent_guides": {
2246    "enabled": true,
2247    "line_width": 1,
2248    "active_line_width": 1,
2249    "coloring": "fixed",
2250    "background_coloring": "disabled"
2251  }
2252}
2253```
2254
2255**Options**
2256
22571. Disable indent guides
2258
2259```json
2260{
2261  "indent_guides": {
2262    "enabled": false
2263  }
2264}
2265```
2266
22672. Enable indent guides for a specific language.
2268
2269```json
2270{
2271  "languages": {
2272    "Python": {
2273      "indent_guides": {
2274        "enabled": true
2275      }
2276    }
2277  }
2278}
2279```
2280
22813. Enable indent aware coloring ("rainbow indentation").
2282   The colors that are used for different indentation levels are defined in the theme (theme key: `accents`). They can be customized by using theme overrides.
2283
2284```json
2285{
2286  "indent_guides": {
2287    "enabled": true,
2288    "coloring": "indent_aware"
2289  }
2290}
2291```
2292
22934. Enable indent aware background coloring ("rainbow indentation").
2294   The colors that are used for different indentation levels are defined in the theme (theme key: `accents`). They can be customized by using theme overrides.
2295
2296```json
2297{
2298  "indent_guides": {
2299    "enabled": true,
2300    "coloring": "indent_aware",
2301    "background_coloring": "indent_aware"
2302  }
2303}
2304```
2305
2306## Hover Popover Enabled
2307
2308- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
2309- Setting: `hover_popover_enabled`
2310- Default: `true`
2311
2312**Options**
2313
2314`boolean` values
2315
2316## Hover Popover Delay
2317
2318- Description: Time to wait in milliseconds before showing the informational hover box.
2319- Setting: `hover_popover_delay`
2320- Default: `300`
2321
2322**Options**
2323
2324`integer` values representing milliseconds
2325
2326## Icon Theme
2327
2328- Description: The icon theme setting can be specified in two forms - either as the name of an icon theme or as an object containing the `mode`, `dark`, and `light` icon themes for files/folders inside Zed.
2329- Setting: `icon_theme`
2330- Default: `Zed (Default)`
2331
2332### Icon Theme Object
2333
2334- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
2335- Setting: `icon_theme`
2336- Default:
2337
2338```json
2339"icon_theme": {
2340  "mode": "system",
2341  "dark": "Zed (Default)",
2342  "light": "Zed (Default)"
2343},
2344```
2345
2346### Mode
2347
2348- Description: Specify the icon theme mode.
2349- Setting: `mode`
2350- Default: `system`
2351
2352**Options**
2353
23541. Set the icon theme to dark mode
2355
2356```json
2357{
2358  "mode": "dark"
2359}
2360```
2361
23622. Set the icon theme to light mode
2363
2364```json
2365{
2366  "mode": "light"
2367}
2368```
2369
23703. Set the icon theme to system mode
2371
2372```json
2373{
2374  "mode": "system"
2375}
2376```
2377
2378### Dark
2379
2380- Description: The name of the dark icon theme.
2381- Setting: `dark`
2382- Default: `Zed (Default)`
2383
2384**Options**
2385
2386Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2387
2388### Light
2389
2390- Description: The name of the light icon theme.
2391- Setting: `light`
2392- Default: `Zed (Default)`
2393
2394**Options**
2395
2396Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2397
2398## Image Viewer
2399
2400- Description: Settings for image viewer functionality
2401- Setting: `image_viewer`
2402- Default:
2403
2404```json
2405{
2406  "image_viewer": {
2407    "unit": "binary"
2408  }
2409}
2410```
2411
2412**Options**
2413
2414### Unit
2415
2416- Description: The unit for image file sizes
2417- Setting: `unit`
2418- Default: `"binary"`
2419
2420**Options**
2421
24221. Use binary units (KiB, MiB):
2423
2424```json
2425{
2426  "image_viewer": {
2427    "unit": "binary"
2428  }
2429}
2430```
2431
24322. Use decimal units (KB, MB):
2433
2434```json
2435{
2436  "image_viewer": {
2437    "unit": "decimal"
2438  }
2439}
2440```
2441
2442## Inlay hints
2443
2444- Description: Configuration for displaying extra text with hints in the editor.
2445- Setting: `inlay_hints`
2446- Default:
2447
2448```json
2449"inlay_hints": {
2450  "enabled": false,
2451  "show_type_hints": true,
2452  "show_parameter_hints": true,
2453  "show_other_hints": true,
2454  "show_background": false,
2455  "edit_debounce_ms": 700,
2456  "scroll_debounce_ms": 50,
2457  "toggle_on_modifiers_press": null
2458}
2459```
2460
2461**Options**
2462
2463Inlay hints querying consists of two parts: editor (client) and LSP server.
2464With the inlay settings above are changed to enable the hints, editor will start to query certain types of hints and react on LSP hint refresh request from the server.
2465At this point, the server may or may not return hints depending on its implementation, further configuration might be needed, refer to the corresponding LSP server documentation.
2466
2467The following languages have inlay hints preconfigured by Zed:
2468
2469- [Go](https://docs.zed.dev/languages/go)
2470- [Rust](https://docs.zed.dev/languages/rust)
2471- [Svelte](https://docs.zed.dev/languages/svelte)
2472- [TypeScript](https://docs.zed.dev/languages/typescript)
2473
2474Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
2475
2476Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
2477Settings-related hint updates are not debounced.
2478
2479All possible config values for `toggle_on_modifiers_press` are:
2480
2481```json
2482"inlay_hints": {
2483  "toggle_on_modifiers_press": {
2484    "control": true,
2485    "shift": true,
2486    "alt": true,
2487    "platform": true,
2488    "function": true
2489  }
2490}
2491```
2492
2493Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
2494
2495## Journal
2496
2497- Description: Configuration for the journal.
2498- Setting: `journal`
2499- Default:
2500
2501```json
2502"journal": {
2503  "path": "~",
2504  "hour_format": "hour12"
2505}
2506```
2507
2508### Path
2509
2510- Description: The path of the directory where journal entries are stored.
2511- Setting: `path`
2512- Default: `~`
2513
2514**Options**
2515
2516`string` values
2517
2518### Hour Format
2519
2520- Description: The format to use for displaying hours in the journal.
2521- Setting: `hour_format`
2522- Default: `hour12`
2523
2524**Options**
2525
25261. 12-hour format:
2527
2528```json
2529{
2530  "hour_format": "hour12"
2531}
2532```
2533
25342. 24-hour format:
2535
2536```json
2537{
2538  "hour_format": "hour24"
2539}
2540```
2541
2542## JSX Tag Auto Close
2543
2544- Description: Whether to automatically close JSX tags
2545- Setting: `jsx_tag_auto_close`
2546- Default:
2547
2548```json
2549{
2550  "jsx_tag_auto_close": {
2551    "enabled": true
2552  }
2553}
2554```
2555
2556**Options**
2557
2558- `enabled`: Whether to enable automatic JSX tag closing
2559
2560## Languages
2561
2562- Description: Configuration for specific languages.
2563- Setting: `languages`
2564- Default: `null`
2565
2566**Options**
2567
2568To override settings for a language, add an entry for that languages name to the `languages` value. Example:
2569
2570```json
2571"languages": {
2572  "C": {
2573    "format_on_save": "off",
2574    "preferred_line_length": 64,
2575    "soft_wrap": "preferred_line_length"
2576  },
2577  "JSON": {
2578    "tab_size": 4
2579  }
2580}
2581```
2582
2583The following settings can be overridden for each specific language:
2584
2585- [`enable_language_server`](#enable-language-server)
2586- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
2587- [`format_on_save`](#format-on-save)
2588- [`formatter`](#formatter)
2589- [`hard_tabs`](#hard-tabs)
2590- [`preferred_line_length`](#preferred-line-length)
2591- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
2592- [`show_edit_predictions`](#show-edit-predictions)
2593- [`show_whitespaces`](#show-whitespaces)
2594- [`soft_wrap`](#soft-wrap)
2595- [`tab_size`](#tab-size)
2596- [`use_autoclose`](#use-autoclose)
2597- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
2598
2599These values take in the same options as the root-level settings with the same name.
2600
2601## Language Models
2602
2603- Description: Configuration for language model providers
2604- Setting: `language_models`
2605- Default:
2606
2607```json
2608{
2609  "language_models": {
2610    "anthropic": {
2611      "api_url": "https://api.anthropic.com"
2612    },
2613    "google": {
2614      "api_url": "https://generativelanguage.googleapis.com"
2615    },
2616    "ollama": {
2617      "api_url": "http://localhost:11434"
2618    },
2619    "openai": {
2620      "api_url": "https://api.openai.com/v1"
2621    }
2622  }
2623}
2624```
2625
2626**Options**
2627
2628Configuration for various AI model providers including API URLs and authentication settings.
2629
2630## Line Indicator Format
2631
2632- Description: Format for line indicator in the status bar
2633- Setting: `line_indicator_format`
2634- Default: `"short"`
2635
2636**Options**
2637
26381. Short format:
2639
2640```json
2641{
2642  "line_indicator_format": "short"
2643}
2644```
2645
26462. Long format:
2647
2648```json
2649{
2650  "line_indicator_format": "long"
2651}
2652```
2653
2654## Linked Edits
2655
2656- Description: Whether to perform linked edits of associated ranges, if the language server supports it. For example, when editing opening `<html>` tag, the contents of the closing `</html>` tag will be edited as well.
2657- Setting: `linked_edits`
2658- Default: `true`
2659
2660**Options**
2661
2662`boolean` values
2663
2664## LSP Document Colors
2665
2666- Description: Whether to show document color information from the language server
2667- Setting: `lsp_document_colors`
2668- Default: `true`
2669
2670**Options**
2671
2672`boolean` values
2673
2674## Max Tabs
2675
2676- Description: Maximum number of tabs to show in the tab bar
2677- Setting: `max_tabs`
2678- Default: `null`
2679
2680**Options**
2681
2682Positive `integer` values or `null` for unlimited tabs
2683
2684## Middle Click Paste (Linux only)
2685
2686- Description: Enable middle-click paste on Linux
2687- Setting: `middle_click_paste`
2688- Default: `true`
2689
2690**Options**
2691
2692`boolean` values
2693
2694## Multi Cursor Modifier
2695
2696- Description: Determines the modifier to be used to add multiple cursors with the mouse. The open hover link mouse gestures will adapt such that it do not conflict with the multicursor modifier.
2697- Setting: `multi_cursor_modifier`
2698- Default: `alt`
2699
2700**Options**
2701
27021. Maps to `Alt` on Linux and Windows and to `Option` on macOS:
2703
2704```json
2705{
2706  "multi_cursor_modifier": "alt"
2707}
2708```
2709
27102. Maps `Control` on Linux and Windows and to `Command` on macOS:
2711
2712```json
2713{
2714  "multi_cursor_modifier": "cmd_or_ctrl" // alias: "cmd", "ctrl"
2715}
2716```
2717
2718## Node
2719
2720- Description: Configuration for Node.js integration
2721- Setting: `node`
2722- Default:
2723
2724```json
2725{
2726  "node": {
2727    "ignore_system_version": false,
2728    "path": null,
2729    "npm_path": null
2730  }
2731}
2732```
2733
2734**Options**
2735
2736- `ignore_system_version`: Whether to ignore the system Node.js version
2737- `path`: Custom path to Node.js binary
2738- `npm_path`: Custom path to npm binary
2739
2740## Network Proxy
2741
2742- Description: Configure a network proxy for Zed.
2743- Setting: `proxy`
2744- Default: `null`
2745
2746**Options**
2747
2748The proxy setting must contain a URL to the proxy.
2749
2750The following URI schemes are supported:
2751
2752- `http`
2753- `https`
2754- `socks4` - SOCKS4 proxy with local DNS
2755- `socks4a` - SOCKS4 proxy with remote DNS
2756- `socks5` - SOCKS5 proxy with local DNS
2757- `socks5h` - SOCKS5 proxy with remote DNS
2758
2759`http` will be used when no scheme is specified.
2760
2761By default no proxy will be used, or Zed will attempt to retrieve proxy settings from environment variables, such as `http_proxy`, `HTTP_PROXY`, `https_proxy`, `HTTPS_PROXY`, `all_proxy`, `ALL_PROXY`, `no_proxy` and `NO_PROXY`.
2762
2763For example, to set an `http` proxy, add the following to your settings:
2764
2765```json
2766{
2767  "proxy": "http://127.0.0.1:10809"
2768}
2769```
2770
2771Or to set a `socks5` proxy:
2772
2773```json
2774{
2775  "proxy": "socks5h://localhost:10808"
2776}
2777```
2778
2779If you wish to exclude certain hosts from using the proxy, set the `NO_PROXY` environment variable. This accepts a comma-separated list of hostnames, host suffixes, IPv4/IPv6 addresses or blocks that should not use the proxy. For example if your environment included `NO_PROXY="google.com, 192.168.1.0/24"` all hosts in `192.168.1.*`, `google.com` and `*.google.com` would bypass the proxy. See [reqwest NoProxy docs](https://docs.rs/reqwest/latest/reqwest/struct.NoProxy.html#method.from_string) for more.
2780
2781## On Last Window Closed
2782
2783- Description: What to do when the last window is closed
2784- Setting: `on_last_window_closed`
2785- Default: `"platform_default"`
2786
2787**Options**
2788
27891. Use platform default behavior:
2790
2791```json
2792{
2793  "on_last_window_closed": "platform_default"
2794}
2795```
2796
27972. Always quit the application:
2798
2799```json
2800{
2801  "on_last_window_closed": "quit_app"
2802}
2803```
2804
2805## Profiles
2806
2807- Description: Configuration profiles that can be applied on top of existing settings
2808- Setting: `profiles`
2809- Default: `{}`
2810
2811**Options**
2812
2813Configuration object for defining settings profiles. Example:
2814
2815```json
2816{
2817  "profiles": {
2818    "presentation": {
2819      "buffer_font_size": 20,
2820      "ui_font_size": 18,
2821      "theme": "One Light"
2822    }
2823  }
2824}
2825```
2826
2827## Preview tabs
2828
2829- Description:
2830  Preview tabs allow you to open files in preview mode, where they close automatically when you switch to another file unless you explicitly pin them. This is useful for quickly viewing files without cluttering your workspace. Preview tabs display their file names in italics. \
2831   There are several ways to convert a preview tab into a regular tab:
2832
2833  - Double-clicking on the file
2834  - Double-clicking on the tab header
2835  - Using the {#action project_panel::OpenPermanent} action
2836  - Editing the file
2837  - Dragging the file to a different pane
2838
2839- Setting: `preview_tabs`
2840- Default:
2841
2842```json
2843"preview_tabs": {
2844  "enabled": true,
2845  "enable_preview_from_file_finder": false,
2846  "enable_preview_from_code_navigation": false,
2847}
2848```
2849
2850### Enable preview from file finder
2851
2852- Description: Determines whether to open files in preview mode when selected from the file finder.
2853- Setting: `enable_preview_from_file_finder`
2854- Default: `false`
2855
2856**Options**
2857
2858`boolean` values
2859
2860### Enable preview from code navigation
2861
2862- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
2863- Setting: `enable_preview_from_code_navigation`
2864- Default: `false`
2865
2866**Options**
2867
2868`boolean` values
2869
2870## File Finder
2871
2872### File Icons
2873
2874- Description: Whether to show file icons in the file finder.
2875- Setting: `file_icons`
2876- Default: `true`
2877
2878### Modal Max Width
2879
2880- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
2881- Setting: `modal_max_width`
2882- Default: `small`
2883
2884### Skip Focus For Active In Search
2885
2886- Description: Determines whether the file finder should skip focus for the active file in search results.
2887- Setting: `skip_focus_for_active_in_search`
2888- Default: `true`
2889
2890## Pane Split Direction Horizontal
2891
2892- Description: The direction that you want to split panes horizontally
2893- Setting: `pane_split_direction_horizontal`
2894- Default: `"up"`
2895
2896**Options**
2897
28981. Split upward:
2899
2900```json
2901{
2902  "pane_split_direction_horizontal": "up"
2903}
2904```
2905
29062. Split downward:
2907
2908```json
2909{
2910  "pane_split_direction_horizontal": "down"
2911}
2912```
2913
2914## Pane Split Direction Vertical
2915
2916- Description: The direction that you want to split panes vertically
2917- Setting: `pane_split_direction_vertical`
2918- Default: `"left"`
2919
2920**Options**
2921
29221. Split to the left:
2923
2924```json
2925{
2926  "pane_split_direction_vertical": "left"
2927}
2928```
2929
29302. Split to the right:
2931
2932```json
2933{
2934  "pane_split_direction_vertical": "right"
2935}
2936```
2937
2938## Preferred Line Length
2939
2940- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
2941- Setting: `preferred_line_length`
2942- Default: `80`
2943
2944**Options**
2945
2946`integer` values
2947
2948## Private Files
2949
2950- Description: Globs to match against file paths to determine if a file is private
2951- Setting: `private_files`
2952- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"]`
2953
2954**Options**
2955
2956List of `string` glob patterns
2957
2958## Projects Online By Default
2959
2960- Description: Whether or not to show the online projects view by default.
2961- Setting: `projects_online_by_default`
2962- Default: `true`
2963
2964**Options**
2965
2966`boolean` values
2967
2968## Read SSH Config
2969
2970- Description: Whether to read SSH configuration files
2971- Setting: `read_ssh_config`
2972- Default: `true`
2973
2974**Options**
2975
2976`boolean` values
2977
2978## Redact Private Values
2979
2980- Description: Hide the values of variables from visual display in private files
2981- Setting: `redact_private_values`
2982- Default: `false`
2983
2984**Options**
2985
2986`boolean` values
2987
2988## Relative Line Numbers
2989
2990- Description: Whether to show relative line numbers in the gutter
2991- Setting: `relative_line_numbers`
2992- Default: `false`
2993
2994**Options**
2995
2996`boolean` values
2997
2998## Remove Trailing Whitespace On Save
2999
3000- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
3001- Setting: `remove_trailing_whitespace_on_save`
3002- Default: `true`
3003
3004**Options**
3005
3006`boolean` values
3007
3008## Resize All Panels In Dock
3009
3010- Description: Whether to resize all the panels in a dock when resizing the dock. Can be a combination of "left", "right" and "bottom".
3011- Setting: `resize_all_panels_in_dock`
3012- Default: `["left"]`
3013
3014**Options**
3015
3016List of strings containing any combination of:
3017
3018- `"left"`: Resize left dock panels together
3019- `"right"`: Resize right dock panels together
3020- `"bottom"`: Resize bottom dock panels together
3021
3022## Restore on File Reopen
3023
3024- Description: Whether to attempt to restore previous file's state when opening it again. The state is stored per pane.
3025- Setting: `restore_on_file_reopen`
3026- Default: `true`
3027
3028**Options**
3029
3030`boolean` values
3031
3032## Restore on Startup
3033
3034- Description: Controls session restoration on startup.
3035- Setting: `restore_on_startup`
3036- Default: `last_session`
3037
3038**Options**
3039
30401. Restore all workspaces that were open when quitting Zed:
3041
3042```json
3043{
3044  "restore_on_startup": "last_session"
3045}
3046```
3047
30482. Restore the workspace that was closed last:
3049
3050```json
3051{
3052  "restore_on_startup": "last_workspace"
3053}
3054```
3055
30563. Always start with an empty editor:
3057
3058```json
3059{
3060  "restore_on_startup": "none"
3061}
3062```
3063
3064## Scroll Beyond Last Line
3065
3066- Description: Whether the editor will scroll beyond the last line
3067- Setting: `scroll_beyond_last_line`
3068- Default: `"one_page"`
3069
3070**Options**
3071
30721. Scroll one page beyond the last line by one page:
3073
3074```json
3075{
3076  "scroll_beyond_last_line": "one_page"
3077}
3078```
3079
30802. The editor will scroll beyond the last line by the same amount of lines as `vertical_scroll_margin`:
3081
3082```json
3083{
3084  "scroll_beyond_last_line": "vertical_scroll_margin"
3085}
3086```
3087
30883. The editor will not scroll beyond the last line:
3089
3090```json
3091{
3092  "scroll_beyond_last_line": "off"
3093}
3094```
3095
3096**Options**
3097
3098`boolean` values
3099
3100## Scroll Sensitivity
3101
3102- Description: Scroll sensitivity multiplier. This multiplier is applied to both the horizontal and vertical delta values while scrolling.
3103- Setting: `scroll_sensitivity`
3104- Default: `1.0`
3105
3106**Options**
3107
3108Positive `float` values
3109
3110### Fast Scroll Sensitivity
3111
3112- Description: Scroll sensitivity multiplier for fast scrolling. This multiplier is applied to both the horizontal and vertical delta values while scrolling. Fast scrolling happens when a user holds the alt or option key while scrolling.
3113- Setting: `fast_scroll_sensitivity`
3114- Default: `4.0`
3115
3116**Options**
3117
3118Positive `float` values
3119
3120### Horizontal Scroll Margin
3121
3122- Description: The number of characters to keep on either side when scrolling with the mouse
3123- Setting: `horizontal_scroll_margin`
3124- Default: `5`
3125
3126**Options**
3127
3128Non-negative `integer` values
3129
3130### Vertical Scroll Margin
3131
3132- Description: The number of lines to keep above/below the cursor when scrolling with the keyboard
3133- Setting: `vertical_scroll_margin`
3134- Default: `3`
3135
3136**Options**
3137
3138Non-negative `integer` values
3139
3140## Search
3141
3142- Description: Search options to enable by default when opening new project and buffer searches.
3143- Setting: `search`
3144- Default:
3145
3146```json
3147"search": {
3148  "whole_word": false,
3149  "case_sensitive": false,
3150  "include_ignored": false,
3151  "regex": false
3152},
3153```
3154
3155## Search Wrap
3156
3157- Description: If `search_wrap` is disabled, search result do not wrap around the end of the file
3158- Setting: `search_wrap`
3159- Default: `true`
3160
3161## Seed Search Query From Cursor
3162
3163- Description: When to populate a new search's query based on the text under the cursor.
3164- Setting: `seed_search_query_from_cursor`
3165- Default: `always`
3166
3167**Options**
3168
31691. `always` always populate the search query with the word under the cursor
31702. `selection` only populate the search query when there is text selected
31713. `never` never populate the search query
3172
3173## Use Smartcase Search
3174
3175- Description: When enabled, automatically adjusts search case sensitivity based on your query. If your search query contains any uppercase letters, the search becomes case-sensitive; if it contains only lowercase letters, the search becomes case-insensitive. \
3176  This applies to both in-file searches and project-wide searches.
3177- Setting: `use_smartcase_search`
3178- Default: `false`
3179
3180**Options**
3181
3182`boolean` values
3183
3184Examples:
3185
3186- Searching for "function" would match "function", "Function", "FUNCTION", etc.
3187- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
3188
3189## Show Call Status Icon
3190
3191- Description: Whether or not to show the call status icon in the status bar.
3192- Setting: `show_call_status_icon`
3193- Default: `true`
3194
3195**Options**
3196
3197`boolean` values
3198
3199## Completions
3200
3201- Description: Controls how completions are processed for this language.
3202- Setting: `completions`
3203- Default:
3204
3205```json
3206{
3207  "completions": {
3208    "words": "fallback",
3209    "words_min_length": 3,
3210    "lsp": true,
3211    "lsp_fetch_timeout_ms": 0,
3212    "lsp_insert_mode": "replace_suffix"
3213  }
3214}
3215```
3216
3217### Words
3218
3219- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
3220- Setting: `words`
3221- Default: `fallback`
3222
3223**Options**
3224
32251. `enabled` - Always fetch document's words for completions along with LSP completions
32262. `fallback` - Only if LSP response errors or times out, use document's words to show completions
32273. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
3228
3229### Min Words Query Length
3230
3231- Description: Minimum number of characters required to automatically trigger word-based completions.
3232  Before that value, it's still possible to trigger the words-based completion manually with the corresponding editor command.
3233- Setting: `words_min_length`
3234- Default: `3`
3235
3236**Options**
3237
3238Positive integer values
3239
3240### LSP
3241
3242- Description: Whether to fetch LSP completions or not.
3243- Setting: `lsp`
3244- Default: `true`
3245
3246**Options**
3247
3248`boolean` values
3249
3250### LSP Fetch Timeout (ms)
3251
3252- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
3253- Setting: `lsp_fetch_timeout_ms`
3254- Default: `0`
3255
3256**Options**
3257
3258`integer` values representing milliseconds
3259
3260### LSP Insert Mode
3261
3262- Description: Controls what range to replace when accepting LSP completions.
3263- Setting: `lsp_insert_mode`
3264- Default: `replace_suffix`
3265
3266**Options**
3267
32681. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
32692. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
32703. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
32714. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
3272
3273## Show Completions On Input
3274
3275- Description: Whether or not to show completions as you type.
3276- Setting: `show_completions_on_input`
3277- Default: `true`
3278
3279**Options**
3280
3281`boolean` values
3282
3283## Show Completion Documentation
3284
3285- Description: Whether to display inline and alongside documentation for items in the completions menu.
3286- Setting: `show_completion_documentation`
3287- Default: `true`
3288
3289**Options**
3290
3291`boolean` values
3292
3293## Show Edit Predictions
3294
3295- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
3296- Setting: `show_edit_predictions`
3297- Default: `true`
3298
3299**Options**
3300
3301`boolean` values
3302
3303## Show Whitespaces
3304
3305- Description: Whether or not to render whitespace characters in the editor.
3306- Setting: `show_whitespaces`
3307- Default: `selection`
3308
3309**Options**
3310
33111. `all`
33122. `selection`
33133. `none`
33144. `boundary`
3315
3316## Soft Wrap
3317
3318- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
3319- Setting: `soft_wrap`
3320- Default: `none`
3321
3322**Options**
3323
33241. `none` to avoid wrapping generally, unless the line is too long
33252. `prefer_line` (deprecated, same as `none`)
33263. `editor_width` to wrap lines that overflow the editor width
33274. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
33285. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
3329
3330## Show Wrap Guides
3331
3332- Description: Whether to show wrap guides (vertical rulers) in the editor. Setting this to true will show a guide at the 'preferred_line_length' value if 'soft_wrap' is set to 'preferred_line_length', and will show any additional guides as specified by the 'wrap_guides' setting.
3333- Setting: `show_wrap_guides`
3334- Default: `true`
3335
3336**Options**
3337
3338`boolean` values
3339
3340## Use On Type Format
3341
3342- Description: Whether to use additional LSP queries to format (and amend) the code after every "trigger" symbol input, defined by LSP server capabilities
3343- Setting: `use_on_type_format`
3344- Default: `true`
3345
3346**Options**
3347
3348`boolean` values
3349
3350## Use Auto Surround
3351
3352- Description: Whether to automatically surround selected text when typing opening parenthesis, bracket, brace, single or double quote characters. For example, when you select text and type (, Zed will surround the text with ().
3353- Setting: `use_auto_surround`
3354- Default: `true`
3355
3356**Options**
3357
3358`boolean` values
3359
3360## Use System Path Prompts
3361
3362- Description: Whether to use the system provided dialogs for Open and Save As. When set to false, Zed will use the built-in keyboard-first pickers.
3363- Setting: `use_system_path_prompts`
3364- Default: `true`
3365
3366**Options**
3367
3368`boolean` values
3369
3370## Use System Prompts
3371
3372- Description: Whether to use the system provided dialogs for prompts, such as confirmation prompts. When set to false, Zed will use its built-in prompts. Note that on Linux, this option is ignored and Zed will always use the built-in prompts.
3373- Setting: `use_system_prompts`
3374- Default: `true`
3375
3376**Options**
3377
3378`boolean` values
3379
3380## Wrap Guides (Vertical Rulers)
3381
3382- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
3383- Setting: `wrap_guides`
3384- Default: []
3385
3386**Options**
3387
3388List of `integer` column numbers
3389
3390## Tab Size
3391
3392- Description: The number of spaces to use for each tab character.
3393- Setting: `tab_size`
3394- Default: `4`
3395
3396**Options**
3397
3398`integer` values
3399
3400## Tasks
3401
3402- Description: Configuration for tasks that can be run within Zed
3403- Setting: `tasks`
3404- Default:
3405
3406```json
3407{
3408  "tasks": {
3409    "variables": {},
3410    "enabled": true,
3411    "prefer_lsp": false
3412  }
3413}
3414```
3415
3416**Options**
3417
3418- `variables`: Custom variables for task configuration
3419- `enabled`: Whether tasks are enabled
3420- `prefer_lsp`: Whether to prefer LSP-provided tasks over Zed language extension ones
3421
3422## Telemetry
3423
3424- Description: Control what info is collected by Zed.
3425- Setting: `telemetry`
3426- Default:
3427
3428```json
3429"telemetry": {
3430  "diagnostics": true,
3431  "metrics": true
3432},
3433```
3434
3435**Options**
3436
3437### Diagnostics
3438
3439- Description: Setting for sending debug-related data, such as crash reports.
3440- Setting: `diagnostics`
3441- Default: `true`
3442
3443**Options**
3444
3445`boolean` values
3446
3447### Metrics
3448
3449- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
3450- Setting: `metrics`
3451- Default: `true`
3452
3453**Options**
3454
3455`boolean` values
3456
3457## Terminal
3458
3459- Description: Configuration for the terminal.
3460- Setting: `terminal`
3461- Default:
3462
3463```json
3464{
3465  "terminal": {
3466    "alternate_scroll": "off",
3467    "blinking": "terminal_controlled",
3468    "copy_on_select": false,
3469    "keep_selection_on_copy": false,
3470    "dock": "bottom",
3471    "default_width": 640,
3472    "default_height": 320,
3473    "detect_venv": {
3474      "on": {
3475        "directories": [".env", "env", ".venv", "venv"],
3476        "activate_script": "default"
3477      }
3478    },
3479    "env": {},
3480    "font_family": null,
3481    "font_features": null,
3482    "font_size": null,
3483    "line_height": "comfortable",
3484    "minimum_contrast": 45,
3485    "option_as_meta": false,
3486    "button": true,
3487    "shell": "system",
3488    "toolbar": {
3489      "breadcrumbs": true
3490    },
3491    "working_directory": "current_project_directory",
3492    "scrollbar": {
3493      "show": null
3494    }
3495  }
3496}
3497```
3498
3499### Terminal: Dock
3500
3501- Description: Control the position of the dock
3502- Setting: `dock`
3503- Default: `bottom`
3504
3505**Options**
3506
3507`"bottom"`, `"left"` or `"right"`
3508
3509### Terminal: Alternate Scroll
3510
3511- Description: Set whether Alternate Scroll mode (DECSET code: `?1007`) is active by default. Alternate Scroll mode converts mouse scroll events into up / down key presses when in the alternate screen (e.g. when running applications like vim or less). The terminal can still set and unset this mode with ANSI escape codes.
3512- Setting: `alternate_scroll`
3513- Default: `off`
3514
3515**Options**
3516
35171. Default alternate scroll mode to off
3518
3519```json
3520{
3521  "terminal": {
3522    "alternate_scroll": "off"
3523  }
3524}
3525```
3526
35272. Default alternate scroll mode to on
3528
3529```json
3530{
3531  "terminal": {
3532    "alternate_scroll": "on"
3533  }
3534}
3535```
3536
3537### Terminal: Blinking
3538
3539- Description: Set the cursor blinking behavior in the terminal
3540- Setting: `blinking`
3541- Default: `terminal_controlled`
3542
3543**Options**
3544
35451. Never blink the cursor, ignore the terminal mode
3546
3547```json
3548{
3549  "terminal": {
3550    "blinking": "off"
3551  }
3552}
3553```
3554
35552. Default the cursor blink to off, but allow the terminal to turn blinking on
3556
3557```json
3558{
3559  "terminal": {
3560    "blinking": "terminal_controlled"
3561  }
3562}
3563```
3564
35653. Always blink the cursor, ignore the terminal mode
3566
3567```json
3568{
3569  "terminal": {
3570    "blinking": "on"
3571  }
3572}
3573```
3574
3575### Terminal: Copy On Select
3576
3577- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
3578- Setting: `copy_on_select`
3579- Default: `false`
3580
3581**Options**
3582
3583`boolean` values
3584
3585**Example**
3586
3587```json
3588{
3589  "terminal": {
3590    "copy_on_select": true
3591  }
3592}
3593```
3594
3595### Terminal: Cursor Shape
3596
3597- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
3598- Setting: `cursor_shape`
3599- Default: `null` (defaults to block)
3600
3601**Options**
3602
36031. A block that surrounds the following character
3604
3605```json
3606{
3607  "terminal": {
3608    "cursor_shape": "block"
3609  }
3610}
3611```
3612
36132. A vertical bar
3614
3615```json
3616{
3617  "terminal": {
3618    "cursor_shape": "bar"
3619  }
3620}
3621```
3622
36233. An underline / underscore that runs along the following character
3624
3625```json
3626{
3627  "terminal": {
3628    "cursor_shape": "underline"
3629  }
3630}
3631```
3632
36334. A box drawn around the following character
3634
3635```json
3636{
3637  "terminal": {
3638    "cursor_shape": "hollow"
3639  }
3640}
3641```
3642
3643### Terminal: Keep Selection On Copy
3644
3645- Description: Whether or not to keep the selection in the terminal after copying text.
3646- Setting: `keep_selection_on_copy`
3647- Default: `false`
3648
3649**Options**
3650
3651`boolean` values
3652
3653**Example**
3654
3655```json
3656{
3657  "terminal": {
3658    "keep_selection_on_copy": true
3659  }
3660}
3661```
3662
3663### Terminal: Env
3664
3665- Description: Any key-value pairs added to this object will be added to the terminal's environment. Keys must be unique, use `:` to separate multiple values in a single variable
3666- Setting: `env`
3667- Default: `{}`
3668
3669**Example**
3670
3671```json
3672{
3673  "terminal": {
3674    "env": {
3675      "ZED": "1",
3676      "KEY": "value1:value2"
3677    }
3678  }
3679}
3680```
3681
3682### Terminal: Font Size
3683
3684- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
3685- Setting: `font_size`
3686- Default: `null`
3687
3688**Options**
3689
3690`integer` values
3691
3692```json
3693{
3694  "terminal": {
3695    "font_size": 15
3696  }
3697}
3698```
3699
3700### Terminal: Font Family
3701
3702- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
3703- Setting: `font_family`
3704- Default: `null`
3705
3706**Options**
3707
3708The name of any font family installed on the user's system
3709
3710```json
3711{
3712  "terminal": {
3713    "font_family": "Berkeley Mono"
3714  }
3715}
3716```
3717
3718### Terminal: Font Features
3719
3720- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
3721- Setting: `font_features`
3722- Default: `null`
3723- Platform: macOS and Windows.
3724
3725**Options**
3726
3727See Buffer Font Features
3728
3729```json
3730{
3731  "terminal": {
3732    "font_features": {
3733      "calt": false
3734      // See Buffer Font Features for more features
3735    }
3736  }
3737}
3738```
3739
3740### Terminal: Line Height
3741
3742- Description: Set the terminal's line height.
3743- Setting: `line_height`
3744- Default: `comfortable`
3745
3746**Options**
3747
37481. Use a line height that's `comfortable` for reading, 1.618. (default)
3749
3750```json
3751{
3752  "terminal": {
3753    "line_height": "comfortable"
3754  }
3755}
3756```
3757
37582. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters
3759
3760```json
3761{
3762  "terminal": {
3763    "line_height": "standard"
3764  }
3765}
3766```
3767
37683.  Use a custom line height.
3769
3770```json
3771{
3772  "terminal": {
3773    "line_height": {
3774      "custom": 2
3775    }
3776  }
3777}
3778```
3779
3780### Terminal: Minimum Contrast
3781
3782- Description: Controls the minimum contrast between foreground and background colors in the terminal. Uses the APCA (Accessible Perceptual Contrast Algorithm) for color adjustments. Set this to 0 to disable this feature.
3783- Setting: `minimum_contrast`
3784- Default: `45`
3785
3786**Options**
3787
3788`integer` values from 0 to 106. Common recommended values:
3789
3790- `0`: No contrast adjustment
3791- `45`: Minimum for large fluent text (default)
3792- `60`: Minimum for other content text
3793- `75`: Minimum for body text
3794- `90`: Preferred for body text
3795
3796```json
3797{
3798  "terminal": {
3799    "minimum_contrast": 45
3800  }
3801}
3802```
3803
3804### Terminal: Option As Meta
3805
3806- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
3807- Setting: `option_as_meta`
3808- Default: `false`
3809
3810**Options**
3811
3812`boolean` values
3813
3814```json
3815{
3816  "terminal": {
3817    "option_as_meta": true
3818  }
3819}
3820```
3821
3822### Terminal: Shell
3823
3824- Description: What shell to use when launching the terminal.
3825- Setting: `shell`
3826- Default: `system`
3827
3828**Options**
3829
38301. Use the system's default terminal configuration (usually the `/etc/passwd` file).
3831
3832```json
3833{
3834  "terminal": {
3835    "shell": "system"
3836  }
3837}
3838```
3839
38402. A program to launch:
3841
3842```json
3843{
3844  "terminal": {
3845    "shell": {
3846      "program": "sh"
3847    }
3848  }
3849}
3850```
3851
38523. A program with arguments:
3853
3854```json
3855{
3856  "terminal": {
3857    "shell": {
3858      "with_arguments": {
3859        "program": "/bin/bash",
3860        "args": ["--login"]
3861      }
3862    }
3863  }
3864}
3865```
3866
3867## Terminal: Detect Virtual Environments {#terminal-detect_venv}
3868
3869- Description: Activate the [Python Virtual Environment](https://docs.python.org/3/library/venv.html), if one is found, in the terminal's working directory (as resolved by the working_directory and automatically activating the virtual environment.
3870- Setting: `detect_venv`
3871- Default:
3872
3873```json
3874{
3875  "terminal": {
3876    "detect_venv": {
3877      "on": {
3878        // Default directories to search for virtual environments, relative
3879        // to the current working directory. We recommend overriding this
3880        // in your project's settings, rather than globally.
3881        "directories": [".env", "env", ".venv", "venv"],
3882        // Can also be `csh`, `fish`, and `nushell`
3883        "activate_script": "default"
3884      }
3885    }
3886  }
3887}
3888```
3889
3890Disable with:
3891
3892```json
3893{
3894  "terminal": {
3895    "detect_venv": "off"
3896  }
3897}
3898```
3899
3900## Terminal: Toolbar
3901
3902- Description: Whether or not to show various elements in the terminal toolbar.
3903- Setting: `toolbar`
3904- Default:
3905
3906```json
3907{
3908  "terminal": {
3909    "toolbar": {
3910      "breadcrumbs": true
3911    }
3912  }
3913}
3914```
3915
3916**Options**
3917
3918At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
3919
3920If the terminal title is empty, the breadcrumbs won't be shown.
3921
3922The shell running in the terminal needs to be configured to emit the title.
3923
3924Example command to set the title: `echo -e "\e]2;New Title\007";`
3925
3926### Terminal: Button
3927
3928- Description: Control to show or hide the terminal button in the status bar
3929- Setting: `button`
3930- Default: `true`
3931
3932**Options**
3933
3934`boolean` values
3935
3936```json
3937{
3938  "terminal": {
3939    "button": false
3940  }
3941}
3942```
3943
3944### Terminal: Working Directory
3945
3946- Description: What working directory to use when launching the terminal.
3947- Setting: `working_directory`
3948- Default: `"current_project_directory"`
3949
3950**Options**
3951
39521. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
3953
3954```json
3955{
3956  "terminal": {
3957    "working_directory": "current_project_directory"
3958  }
3959}
3960```
3961
39622. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
3963
3964```json
3965{
3966  "terminal": {
3967    "working_directory": "first_project_directory"
3968  }
3969}
3970```
3971
39723. Always use this platform's home directory (if we can find it)
3973
3974```json
3975{
3976  "terminal": {
3977    "working_directory": "always_home"
3978  }
3979}
3980```
3981
39824. Always use a specific directory. This value will be shell expanded. If this path is not a valid directory the terminal will default to this platform's home directory.
3983
3984```json
3985{
3986  "terminal": {
3987    "working_directory": {
3988      "always": {
3989        "directory": "~/zed/projects/"
3990      }
3991    }
3992  }
3993}
3994```
3995
3996## Theme
3997
3998- Description: The theme setting can be specified in two forms - either as the name of a theme or as an object containing the `mode`, `dark`, and `light` themes for the Zed UI.
3999- Setting: `theme`
4000- Default: `One Dark`
4001
4002### Theme Object
4003
4004- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
4005- Setting: `theme`
4006- Default:
4007
4008```json
4009"theme": {
4010  "mode": "system",
4011  "dark": "One Dark",
4012  "light": "One Light"
4013},
4014```
4015
4016### Mode
4017
4018- Description: Specify theme mode.
4019- Setting: `mode`
4020- Default: `system`
4021
4022**Options**
4023
40241. Set the theme to dark mode
4025
4026```json
4027{
4028  "mode": "dark"
4029}
4030```
4031
40322. Set the theme to light mode
4033
4034```json
4035{
4036  "mode": "light"
4037}
4038```
4039
40403. Set the theme to system mode
4041
4042```json
4043{
4044  "mode": "system"
4045}
4046```
4047
4048### Dark
4049
4050- Description: The name of the dark Zed theme to use for the UI.
4051- Setting: `dark`
4052- Default: `One Dark`
4053
4054**Options**
4055
4056Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
4057
4058### Light
4059
4060- Description: The name of the light Zed theme to use for the UI.
4061- Setting: `light`
4062- Default: `One Light`
4063
4064**Options**
4065
4066Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
4067
4068## Title Bar
4069
4070- Description: Whether or not to show various elements in the title bar
4071- Setting: `title_bar`
4072- Default:
4073
4074```json
4075"title_bar": {
4076  "show_branch_icon": false,
4077  "show_branch_name": true,
4078  "show_project_items": true,
4079  "show_onboarding_banner": true,
4080  "show_user_picture": true,
4081  "show_sign_in": true,
4082  "show_menus": false
4083}
4084```
4085
4086**Options**
4087
4088- `show_branch_icon`: Whether to show the branch icon beside branch switcher in the titlebar
4089- `show_branch_name`: Whether to show the branch name button in the titlebar
4090- `show_project_items`: Whether to show the project host and name in the titlebar
4091- `show_onboarding_banner`: Whether to show onboarding banners in the titlebar
4092- `show_user_picture`: Whether to show user picture in the titlebar
4093- `show_sign_in`: Whether to show the sign in button in the titlebar
4094- `show_menus`: Whether to show the menus in the titlebar
4095
4096## Vim
4097
4098- Description: Whether or not to enable vim mode.
4099- Setting: `vim_mode`
4100- Default: `false`
4101
4102## When Closing With No Tabs
4103
4104- Description: Whether the window should be closed when using 'close active item' on a window with no tabs
4105- Setting: `when_closing_with_no_tabs`
4106- Default: `"platform_default"`
4107
4108**Options**
4109
41101. Use platform default behavior:
4111
4112```json
4113{
4114  "when_closing_with_no_tabs": "platform_default"
4115}
4116```
4117
41182. Always close the window:
4119
4120```json
4121{
4122  "when_closing_with_no_tabs": "close_window"
4123}
4124```
4125
41263. Never close the window:
4127
4128```json
4129{
4130  "when_closing_with_no_tabs": "keep_window_open"
4131}
4132```
4133
4134## Project Panel
4135
4136- Description: Customize project panel
4137- Setting: `project_panel`
4138- Default:
4139
4140```json
4141{
4142  "project_panel": {
4143    "button": true,
4144    "default_width": 240,
4145    "dock": "left",
4146    "entry_spacing": "comfortable",
4147    "file_icons": true,
4148    "folder_icons": true,
4149    "git_status": true,
4150    "indent_size": 20,
4151    "auto_reveal_entries": true,
4152    "auto_fold_dirs": true,
4153    "drag_and_drop": true,
4154    "scrollbar": {
4155      "show": null
4156    },
4157    "sticky_scroll": true,
4158    "show_diagnostics": "all",
4159    "indent_guides": {
4160      "show": "always"
4161    },
4162    "hide_root": false,
4163    "starts_open": true
4164  }
4165}
4166```
4167
4168### Dock
4169
4170- Description: Control the position of the dock
4171- Setting: `dock`
4172- Default: `left`
4173
4174**Options**
4175
41761. Default dock position to left
4177
4178```json
4179{
4180  "dock": "left"
4181}
4182```
4183
41842. Default dock position to right
4185
4186```json
4187{
4188  "dock": "right"
4189}
4190```
4191
4192### Entry Spacing
4193
4194- Description: Spacing between worktree entries
4195- Setting: `entry_spacing`
4196- Default: `comfortable`
4197
4198**Options**
4199
42001. Comfortable entry spacing
4201
4202```json
4203{
4204  "entry_spacing": "comfortable"
4205}
4206```
4207
42082. Standard entry spacing
4209
4210```json
4211{
4212  "entry_spacing": "standard"
4213}
4214```
4215
4216### Git Status
4217
4218- Description: Indicates newly created and updated files
4219- Setting: `git_status`
4220- Default: `true`
4221
4222**Options**
4223
42241. Default enable git status
4225
4226```json
4227{
4228  "git_status": true
4229}
4230```
4231
42322. Default disable git status
4233
4234```json
4235{
4236  "git_status": false
4237}
4238```
4239
4240### Default Width
4241
4242- Description: Customize default width taken by project panel
4243- Setting: `default_width`
4244- Default: `240`
4245
4246**Options**
4247
4248`float` values
4249
4250### Auto Reveal Entries
4251
4252- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
4253- Setting: `auto_reveal_entries`
4254- Default: `true`
4255
4256**Options**
4257
42581. Enable auto reveal entries
4259
4260```json
4261{
4262  "auto_reveal_entries": true
4263}
4264```
4265
42662. Disable auto reveal entries
4267
4268```json
4269{
4270  "auto_reveal_entries": false
4271}
4272```
4273
4274### Auto Fold Dirs
4275
4276- Description: Whether to fold directories automatically when directory has only one directory inside.
4277- Setting: `auto_fold_dirs`
4278- Default: `true`
4279
4280**Options**
4281
42821. Enable auto fold dirs
4283
4284```json
4285{
4286  "auto_fold_dirs": true
4287}
4288```
4289
42902. Disable auto fold dirs
4291
4292```json
4293{
4294  "auto_fold_dirs": false
4295}
4296```
4297
4298### Indent Size
4299
4300- Description: Amount of indentation (in pixels) for nested items.
4301- Setting: `indent_size`
4302- Default: `20`
4303
4304### Indent Guides: Show
4305
4306- Description: Whether to show indent guides in the project panel.
4307- Setting: `indent_guides`
4308- Default:
4309
4310```json
4311"indent_guides": {
4312  "show": "always"
4313}
4314```
4315
4316**Options**
4317
43181. Show indent guides in the project panel
4319
4320```json
4321{
4322  "indent_guides": {
4323    "show": "always"
4324  }
4325}
4326```
4327
43282. Hide indent guides in the project panel
4329
4330```json
4331{
4332  "indent_guides": {
4333    "show": "never"
4334  }
4335}
4336```
4337
4338### Scrollbar: Show
4339
4340- Description: Whether to show a scrollbar in the project panel. Possible values: null, "auto", "system", "always", "never". Inherits editor settings when absent, see its description for more details.
4341- Setting: `scrollbar`
4342- Default:
4343
4344```json
4345"scrollbar": {
4346  "show": null
4347}
4348```
4349
4350**Options**
4351
43521. Show scrollbar in the project panel
4353
4354```json
4355{
4356  "scrollbar": {
4357    "show": "always"
4358  }
4359}
4360```
4361
43622. Hide scrollbar in the project panel
4363
4364```json
4365{
4366  "scrollbar": {
4367    "show": "never"
4368  }
4369}
4370```
4371
4372## Agent
4373
4374Visit [the Configuration page](./ai/configuration.md) under the AI section to learn more about all the agent-related settings.
4375
4376## Collaboration Panel
4377
4378- Description: Customizations for the collaboration panel.
4379- Setting: `collaboration_panel`
4380- Default:
4381
4382```json
4383{
4384  "collaboration_panel": {
4385    "button": true,
4386    "dock": "left",
4387    "default_width": 240
4388  }
4389}
4390```
4391
4392**Options**
4393
4394- `button`: Whether to show the collaboration panel button in the status bar
4395- `dock`: Where to dock the collaboration panel. Can be `left` or `right`
4396- `default_width`: Default width of the collaboration panel
4397
4398## Debugger
4399
4400- Description: Configuration for debugger panel and settings
4401- Setting: `debugger`
4402- Default:
4403
4404```json
4405{
4406  "debugger": {
4407    "stepping_granularity": "line",
4408    "save_breakpoints": true,
4409    "dock": "bottom",
4410    "button": true
4411  }
4412}
4413```
4414
4415See the [debugger page](./debugger.md) for more information about debugging support within Zed.
4416
4417## Git Panel
4418
4419- Description: Setting to customize the behavior of the git panel.
4420- Setting: `git_panel`
4421- Default:
4422
4423```json
4424{
4425  "git_panel": {
4426    "button": true,
4427    "dock": "left",
4428    "default_width": 360,
4429    "status_style": "icon",
4430    "fallback_branch_name": "main",
4431    "sort_by_path": false,
4432    "collapse_untracked_diff": false,
4433    "scrollbar": {
4434      "show": null
4435    }
4436  }
4437}
4438```
4439
4440**Options**
4441
4442- `button`: Whether to show the git panel button in the status bar
4443- `dock`: Where to dock the git panel. Can be `left` or `right`
4444- `default_width`: Default width of the git panel
4445- `status_style`: How to display git status. Can be `label_color` or `icon`
4446- `fallback_branch_name`: What branch name to use if `init.defaultBranch` is not set
4447- `sort_by_path`: Whether to sort entries in the panel by path or by status (the default)
4448- `collapse_untracked_diff`: Whether to collapse untracked files in the diff panel
4449- `scrollbar`: When to show the scrollbar in the git panel
4450
4451## Outline Panel
4452
4453- Description: Customize outline Panel
4454- Setting: `outline_panel`
4455- Default:
4456
4457```json
4458"outline_panel": {
4459  "button": true,
4460  "default_width": 300,
4461  "dock": "left",
4462  "file_icons": true,
4463  "folder_icons": true,
4464  "git_status": true,
4465  "indent_size": 20,
4466  "auto_reveal_entries": true,
4467  "auto_fold_dirs": true,
4468  "indent_guides": {
4469    "show": "always"
4470  },
4471  "scrollbar": {
4472    "show": null
4473  }
4474}
4475```
4476
4477## Calls
4478
4479- Description: Customize behavior when participating in a call
4480- Setting: `calls`
4481- Default:
4482
4483```json
4484"calls": {
4485  // Join calls with the microphone live by default
4486  "mute_on_join": false,
4487  // Share your project when you are the first to join a channel
4488  "share_on_join": false
4489},
4490```
4491
4492## Unnecessary Code Fade
4493
4494- Description: How much to fade out unused code.
4495- Setting: `unnecessary_code_fade`
4496- Default: `0.3`
4497
4498**Options**
4499
4500Float values between `0.0` and `0.9`, where:
4501
4502- `0.0` means no fading (unused code looks the same as used code)
4503- `0.9` means maximum fading (unused code is very faint but still visible)
4504
4505**Example**
4506
4507```json
4508{
4509  "unnecessary_code_fade": 0.5
4510}
4511```
4512
4513## UI Font Family
4514
4515- Description: The name of the font to use for text in the UI.
4516- Setting: `ui_font_family`
4517- Default: `.ZedSans`. This currently aliases to [IBM Plex](https://www.ibm.com/plex/).
4518
4519**Options**
4520
4521The name of any font family installed on the system, `".ZedSans"` to use the Zed-provided default, or `".SystemUIFont"` to use the system's default UI font (on macOS and Windows).
4522
4523## UI Font Features
4524
4525- Description: The OpenType features to enable for text in the UI.
4526- Setting: `ui_font_features`
4527- Default:
4528
4529```json
4530"ui_font_features": {
4531  "calt": false
4532}
4533```
4534
4535- Platform: macOS and Windows.
4536
4537**Options**
4538
4539Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
4540
4541For example, to disable font ligatures, add the following to your settings:
4542
4543```json
4544{
4545  "ui_font_features": {
4546    "calt": false
4547  }
4548}
4549```
4550
4551You can also set other OpenType features, like setting `cv01` to `7`:
4552
4553```json
4554{
4555  "ui_font_features": {
4556    "cv01": 7
4557  }
4558}
4559```
4560
4561## UI Font Fallbacks
4562
4563- Description: The font fallbacks to use for text in the UI.
4564- Setting: `ui_font_fallbacks`
4565- Default: `null`
4566- Platform: macOS and Windows.
4567
4568**Options**
4569
4570For example, to use `Nerd Font` as a fallback, add the following to your settings:
4571
4572```json
4573{
4574  "ui_font_fallbacks": ["Nerd Font"]
4575}
4576```
4577
4578## UI Font Size
4579
4580- Description: The default font size for text in the UI.
4581- Setting: `ui_font_size`
4582- Default: `16`
4583
4584**Options**
4585
4586`integer` values from `6` to `100` pixels (inclusive)
4587
4588## UI Font Weight
4589
4590- Description: The default font weight for text in the UI.
4591- Setting: `ui_font_weight`
4592- Default: `400`
4593
4594**Options**
4595
4596`integer` values between `100` and `900`
4597
4598## An example configuration:
4599
4600```json
4601// ~/.config/zed/settings.json
4602{
4603  "theme": "cave-light",
4604  "tab_size": 2,
4605  "preferred_line_length": 80,
4606  "soft_wrap": "none",
4607
4608  "buffer_font_size": 18,
4609  "buffer_font_family": ".ZedMono",
4610
4611  "autosave": "on_focus_change",
4612  "format_on_save": "off",
4613  "vim_mode": false,
4614  "projects_online_by_default": true,
4615  "terminal": {
4616    "font_family": "FiraCode Nerd Font Mono",
4617    "blinking": "off"
4618  },
4619  "languages": {
4620    "C": {
4621      "format_on_save": "language_server",
4622      "preferred_line_length": 64,
4623      "soft_wrap": "preferred_line_length"
4624    }
4625  }
4626}
4627```