all-settings.md

   1# All Settings
   2
   3This is a comprehensive reference of all settings available in Zed. For an introduction to how settings work, see the [Appearance overview](../appearance.md).
   4
   5You may also want to change your [theme](../themes.md), configure your [key bindings](../key-bindings.md), set up [tasks](../tasks.md), or install [extensions](../extensions.md).
   6
   7## How to Edit Settings
   8
   9Open the **Settings Editor** with {#kb zed::OpenSettings} to browse and modify settings through a searchable UI.
  10
  11To edit settings as JSON, open your settings file with {#kb zed::OpenSettingsFile}. The file is located at:
  12- macOS/Linux: `~/.config/zed/settings.json`
  13- Windows: `%APPDATA%\Zed\settings.json`
  14
  15For project-specific settings, run {#action zed::OpenProjectSettings} to create a `.zed/settings.json` file in your project root.
  16
  17> **Tip:** View the default values for all settings by running {#action zed::OpenDefaultSettings} from the command palette.
  18
  19---
  20
  21# Settings Reference
  22
  23## Active Pane Modifiers
  24
  25- Description: Styling settings applied to the active pane.
  26- Setting: `active_pane_modifiers`
  27- Default:
  28
  29```json [settings]
  30{
  31  "active_pane_modifiers": {
  32    "border_size": 0.0,
  33    "inactive_opacity": 1.0
  34  }
  35}
  36```
  37
  38### Border size
  39
  40- 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.
  41- Setting: `border_size`
  42- Default: `0.0`
  43
  44**Options**
  45
  46Non-negative `float` values
  47
  48### Inactive Opacity
  49
  50- 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.
  51- Setting: `inactive_opacity`
  52- Default: `1.0`
  53
  54**Options**
  55
  56`float` values
  57
  58## Bottom Dock Layout
  59
  60- Description: Control the layout of the bottom dock, relative to the left and right docks.
  61- Setting: `bottom_dock_layout`
  62- Default: `"contained"`
  63
  64**Options**
  65
  661. Contain the bottom dock, giving the full height of the window to the left and right docks.
  67
  68```json [settings]
  69{
  70  "bottom_dock_layout": "contained"
  71}
  72```
  73
  742. Give the bottom dock the full width of the window, truncating the left and right docks.
  75
  76```json [settings]
  77{
  78  "bottom_dock_layout": "full"
  79}
  80```
  81
  823. Left align the bottom dock, truncating the left dock and giving the right dock the full height of the window.
  83
  84```json [settings]
  85{
  86  "bottom_dock_layout": "left_aligned"
  87}
  88```
  89
  904. Right align the bottom dock, giving the left dock the full height of the window and truncating the right dock.
  91
  92```json [settings]
  93{
  94  "bottom_dock_layout": "right_aligned"
  95}
  96```
  97
  98## Agent Font Size
  99
 100- Description: The font size for text in the agent panel. Inherits the UI font size if unset.
 101- Setting: `agent_font_size`
 102- Default: `null`
 103
 104**Options**
 105
 106`integer` values from `6` to `100` pixels (inclusive)
 107
 108## Allow Rewrap
 109
 110- Description: Controls where the {#action editor::Rewrap} action is allowed in the current language scope
 111- Setting: `allow_rewrap`
 112- Default: `"in_comments"`
 113
 114**Options**
 115
 1161. Allow rewrap in comments only:
 117
 118```json [settings]
 119{
 120  "allow_rewrap": "in_comments"
 121}
 122```
 123
 1242. Allow rewrap in selections only:
 125
 126```json [settings]
 127{
 128  "allow_rewrap": "in_selections"
 129}
 130```
 131
 1323. Allow rewrap anywhere:
 133
 134```json [settings]
 135{
 136  "allow_rewrap": "anywhere"
 137}
 138```
 139
 140Note: This setting has no effect in Vim mode, as rewrap is already allowed everywhere.
 141
 142## Auto Indent
 143
 144- Description: Whether indentation should be adjusted based on the context whilst typing. This can be specified on a per-language basis.
 145- Setting: `auto_indent`
 146- Default: `true`
 147
 148**Options**
 149
 150`boolean` values
 151
 152## Auto Indent On Paste
 153
 154- Description: Whether indentation of pasted content should be adjusted based on the context
 155- Setting: `auto_indent_on_paste`
 156- Default: `true`
 157
 158**Options**
 159
 160`boolean` values
 161
 162## Auto Install extensions
 163
 164- Description: Define extensions to be autoinstalled or never be installed.
 165- Setting: `auto_install_extensions`
 166- Default: `{ "html": true }`
 167
 168**Options**
 169
 170You can find the names of your currently installed extensions by listing the subfolders under the [extension installation location](../extensions/installing-extensions.md#installation-location):
 171
 172On macOS:
 173
 174```sh
 175ls ~/Library/Application\ Support/Zed/extensions/installed/
 176```
 177
 178On Linux:
 179
 180```sh
 181ls ~/.local/share/zed/extensions/installed
 182```
 183
 184Define extensions which should be installed (`true`) or never installed (`false`).
 185
 186```json [settings]
 187{
 188  "auto_install_extensions": {
 189    "html": true,
 190    "dockerfile": true,
 191    "docker-compose": false
 192  }
 193}
 194```
 195
 196## Autosave
 197
 198- Description: When to automatically save edited buffers.
 199- Setting: `autosave`
 200- Default: `off`
 201
 202**Options**
 203
 2041. To disable autosave, set it to `off`:
 205
 206```json [settings]
 207{
 208  "autosave": "off"
 209}
 210```
 211
 2122. To autosave when focus changes, use `on_focus_change`:
 213
 214```json [settings]
 215{
 216  "autosave": "on_focus_change"
 217}
 218```
 219
 2203. To autosave when the active window changes, use `on_window_change`:
 221
 222```json [settings]
 223{
 224  "autosave": "on_window_change"
 225}
 226```
 227
 2284. To autosave after an inactivity period, use `after_delay`:
 229
 230```json [settings]
 231{
 232  "autosave": {
 233    "after_delay": {
 234      "milliseconds": 1000
 235    }
 236  }
 237}
 238```
 239
 240Note that a save will be triggered when an unsaved tab is closed, even if this is earlier than the configured inactivity period.
 241
 242## Autoscroll on Clicks
 243
 244- Description: Whether to scroll when clicking near the edge of the visible text area.
 245- Setting: `autoscroll_on_clicks`
 246- Default: `false`
 247
 248**Options**
 249
 250`boolean` values
 251
 252## Auto Signature Help
 253
 254- Description: Show method signatures in the editor, when inside parentheses
 255- Setting: `auto_signature_help`
 256- Default: `false`
 257
 258**Options**
 259
 260`boolean` values
 261
 262### Show Signature Help After Edits
 263
 264- 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.
 265- Setting: `show_signature_help_after_edits`
 266- Default: `false`
 267
 268**Options**
 269
 270`boolean` values
 271
 272## Auto Update
 273
 274- Description: Whether or not to automatically check for updates.
 275- Setting: `auto_update`
 276- Default: `true`
 277
 278**Options**
 279
 280`boolean` values
 281
 282## Base Keymap
 283
 284- Description: Base key bindings scheme. Base keymaps can be overridden with user keymaps.
 285- Setting: `base_keymap`
 286- Default: `VSCode`
 287
 288**Options**
 289
 2901. VS Code
 291
 292```json [settings]
 293{
 294  "base_keymap": "VSCode"
 295}
 296```
 297
 2982. Atom
 299
 300```json [settings]
 301{
 302  "base_keymap": "Atom"
 303}
 304```
 305
 3063. JetBrains
 307
 308```json [settings]
 309{
 310  "base_keymap": "JetBrains"
 311}
 312```
 313
 3144. None
 315
 316```json [settings]
 317{
 318  "base_keymap": "None"
 319}
 320```
 321
 3225. Sublime Text
 323
 324```json [settings]
 325{
 326  "base_keymap": "SublimeText"
 327}
 328```
 329
 3306. TextMate
 331
 332```json [settings]
 333{
 334  "base_keymap": "TextMate"
 335}
 336```
 337
 338## Buffer Font Family
 339
 340- Description: The name of a font to use for rendering text in the editor.
 341- Setting: `buffer_font_family`
 342- Default: `.ZedMono`. This currently aliases to [Lilex](https://lilex.myrt.co).
 343
 344**Options**
 345
 346The name of any font family installed on the user's system, or `".ZedMono"`.
 347
 348## Buffer Font Features
 349
 350- Description: The OpenType features to enable for text in the editor.
 351- Setting: `buffer_font_features`
 352- Default: `null`
 353- Platform: macOS and Windows.
 354
 355**Options**
 356
 357Zed 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.
 358
 359For example, to disable font ligatures, add the following to your settings:
 360
 361```json [settings]
 362{
 363  "buffer_font_features": {
 364    "calt": false
 365  }
 366}
 367```
 368
 369You can also set other OpenType features, like setting `cv01` to `7`:
 370
 371```json [settings]
 372{
 373  "buffer_font_features": {
 374    "cv01": 7
 375  }
 376}
 377```
 378
 379## Buffer Font Fallbacks
 380
 381- Description: Set the buffer text's font fallbacks, this will be merged with the platform's default fallbacks.
 382- Setting: `buffer_font_fallbacks`
 383- Default: `null`
 384- Platform: macOS and Windows.
 385
 386**Options**
 387
 388For example, to use `Nerd Font` as a fallback, add the following to your settings:
 389
 390```json [settings]
 391{
 392  "buffer_font_fallbacks": ["Nerd Font"]
 393}
 394```
 395
 396## Buffer Font Size
 397
 398- Description: The default font size for text in the editor.
 399- Setting: `buffer_font_size`
 400- Default: `15`
 401
 402**Options**
 403
 404A font size from `6` to `100` pixels (inclusive)
 405
 406## Buffer Font Weight
 407
 408- Description: The default font weight for text in the editor.
 409- Setting: `buffer_font_weight`
 410- Default: `400`
 411
 412**Options**
 413
 414`integer` values between `100` and `900`
 415
 416## Buffer Line Height
 417
 418- Description: The default line height for text in the editor.
 419- Setting: `buffer_line_height`
 420- Default: `"comfortable"`
 421
 422**Options**
 423
 424`"standard"`, `"comfortable"` or `{ "custom": float }` (`1` is compact, `2` is loose)
 425
 426## Centered Layout
 427
 428- Description: Configuration for the centered layout mode.
 429- Setting: `centered_layout`
 430- Default:
 431
 432```json [settings]
 433"centered_layout": {
 434  "left_padding": 0.2,
 435  "right_padding": 0.2,
 436}
 437```
 438
 439**Options**
 440
 441The `left_padding` and `right_padding` options define the relative width of the
 442left 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`.
 443
 444## Close on File Delete
 445
 446- Description: Whether to automatically close editor tabs when their corresponding files are deleted from disk.
 447- Setting: `close_on_file_delete`
 448- Default: `false`
 449
 450**Options**
 451
 452`boolean` values
 453
 454When 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.
 455
 456Note: Dirty files (files with unsaved changes) will not be automatically closed even when this setting is enabled, ensuring you don't lose unsaved work.
 457
 458## Confirm Quit
 459
 460- Description: Whether or not to prompt the user to confirm before closing the application.
 461- Setting: `confirm_quit`
 462- Default: `false`
 463
 464**Options**
 465
 466`boolean` values
 467
 468## Diagnostics Max Severity
 469
 470- Description: Which level to use to filter out diagnostics displayed in the editor
 471- Setting: `diagnostics_max_severity`
 472- Default: `null`
 473
 474**Options**
 475
 4761. Allow all diagnostics (default):
 477
 478```json [settings]
 479{
 480  "diagnostics_max_severity": "all"
 481}
 482```
 483
 4842. Show only errors:
 485
 486```json [settings]
 487{
 488  "diagnostics_max_severity": "error"
 489}
 490```
 491
 4923. Show errors and warnings:
 493
 494```json [settings]
 495{
 496  "diagnostics_max_severity": "warning"
 497}
 498```
 499
 5004. Show errors, warnings, and information:
 501
 502```json [settings]
 503{
 504  "diagnostics_max_severity": "info"
 505}
 506```
 507
 5085. Show all including hints:
 509
 510```json [settings]
 511{
 512  "diagnostics_max_severity": "hint"
 513}
 514```
 515
 516## Disable AI
 517
 518- Description: Whether to disable all AI features in Zed
 519- Setting: `disable_ai`
 520- Default: `false`
 521
 522**Options**
 523
 524`boolean` values
 525
 526## Direnv Integration
 527
 528- Description: Settings for [direnv](https://direnv.net/) integration. Requires `direnv` to be installed.
 529  `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.
 530  It also allows for those environment variables to be used in tasks.
 531- Setting: `load_direnv`
 532- Default: `"direct"`
 533
 534**Options**
 535
 536There are three options to choose from:
 537
 5381. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
 5392. `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.
 5403. `disabled`: No shell environment will be loaded automatically; direnv must be invoked manually (e.g. with `direnv exec`) to be used.
 541
 542## Double Click In Multibuffer
 543
 544- Description: What to do when multibuffer is double clicked in some of its excerpts (parts of singleton buffers)
 545- Setting: `double_click_in_multibuffer`
 546- Default: `"select"`
 547
 548**Options**
 549
 5501. Behave as a regular buffer and select the whole word (default):
 551
 552```json [settings]
 553{
 554  "double_click_in_multibuffer": "select"
 555}
 556```
 557
 5582. Open the excerpt clicked as a new buffer in the new tab:
 559
 560```json [settings]
 561{
 562  "double_click_in_multibuffer": "open"
 563}
 564```
 565
 566For the case of "open", regular selection behavior can be achieved by holding `alt` when double clicking.
 567
 568## Drop Target Size
 569
 570- 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.
 571- Setting: `drop_target_size`
 572- Default: `0.2`
 573
 574**Options**
 575
 576`float` values between `0` and `0.5`
 577
 578## Edit Predictions
 579
 580- Description: Settings for edit predictions.
 581- Setting: `edit_predictions`
 582- Default:
 583
 584```json [settings]
 585  "edit_predictions": {
 586    "disabled_globs": [
 587      "**/.env*",
 588      "**/*.pem",
 589      "**/*.key",
 590      "**/*.cert",
 591      "**/*.crt",
 592      "**/.dev.vars",
 593      "**/secrets.yml"
 594    ]
 595  }
 596```
 597
 598**Options**
 599
 600### Disabled Globs
 601
 602- 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.
 603- Setting: `disabled_globs`
 604- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/.dev.vars", "**/secrets.yml"]`
 605
 606**Options**
 607
 608List of `string` values.
 609
 610## Edit Predictions Disabled in
 611
 612- Description: A list of language scopes in which edit predictions should be disabled.
 613- Setting: `edit_predictions_disabled_in`
 614- Default: `[]`
 615
 616**Options**
 617
 618List of `string` values
 619
 6201. Don't show edit predictions in comments:
 621
 622```json [settings]
 623"disabled_in": ["comment"]
 624```
 625
 6262. Don't show edit predictions in strings and comments:
 627
 628```json [settings]
 629"disabled_in": ["comment", "string"]
 630```
 631
 6323. Only in Go, don't show edit predictions in strings and comments:
 633
 634```json [settings]
 635{
 636  "languages": {
 637    "Go": {
 638      "edit_predictions_disabled_in": ["comment", "string"]
 639    }
 640  }
 641}
 642```
 643
 644## Current Line Highlight
 645
 646- Description: How to highlight the current line in the editor.
 647- Setting: `current_line_highlight`
 648- Default: `all`
 649
 650**Options**
 651
 6521. Don't highlight the current line:
 653
 654```json [settings]
 655"current_line_highlight": "none"
 656```
 657
 6582. Highlight the gutter area:
 659
 660```json [settings]
 661"current_line_highlight": "gutter"
 662```
 663
 6643. Highlight the editor area:
 665
 666```json [settings]
 667"current_line_highlight": "line"
 668```
 669
 6704. Highlight the full line:
 671
 672```json [settings]
 673"current_line_highlight": "all"
 674```
 675
 676## Selection Highlight
 677
 678- Description: Whether to highlight all occurrences of the selected text in an editor.
 679- Setting: `selection_highlight`
 680- Default: `true`
 681
 682## Rounded Selection
 683
 684- Description: Whether the text selection should have rounded corners.
 685- Setting: `rounded_selection`
 686- Default: `true`
 687
 688## Cursor Blink
 689
 690- Description: Whether or not the cursor blinks.
 691- Setting: `cursor_blink`
 692- Default: `true`
 693
 694**Options**
 695
 696`boolean` values
 697
 698## Cursor Shape
 699
 700- Description: Cursor shape for the default editor.
 701- Setting: `cursor_shape`
 702- Default: `bar`
 703
 704**Options**
 705
 7061. A vertical bar:
 707
 708```json [settings]
 709"cursor_shape": "bar"
 710```
 711
 7122. A block that surrounds the following character:
 713
 714```json [settings]
 715"cursor_shape": "block"
 716```
 717
 7183. An underline / underscore that runs along the following character:
 719
 720```json [settings]
 721"cursor_shape": "underline"
 722```
 723
 7244. An box drawn around the following character:
 725
 726```json [settings]
 727"cursor_shape": "hollow"
 728```
 729
 730## Gutter
 731
 732- Description: Settings for the editor gutter
 733- Setting: `gutter`
 734- Default:
 735
 736```json [settings]
 737{
 738  "gutter": {
 739    "line_numbers": true,
 740    "runnables": true,
 741    "breakpoints": true,
 742    "folds": true,
 743    "min_line_number_digits": 4
 744  }
 745}
 746```
 747
 748**Options**
 749
 750- `line_numbers`: Whether to show line numbers in the gutter
 751- `runnables`: Whether to show runnable buttons in the gutter
 752- `breakpoints`: Whether to show breakpoints in the gutter
 753- `folds`: Whether to show fold buttons in the gutter
 754- `min_line_number_digits`: Minimum number of characters to reserve space for in the gutter
 755
 756## Hide Mouse
 757
 758- Description: Determines when the mouse cursor should be hidden in an editor or input box.
 759- Setting: `hide_mouse`
 760- Default: `on_typing_and_movement`
 761
 762**Options**
 763
 7641. Never hide the mouse cursor:
 765
 766```json [settings]
 767"hide_mouse": "never"
 768```
 769
 7702. Hide only when typing:
 771
 772```json [settings]
 773"hide_mouse": "on_typing"
 774```
 775
 7763. Hide on both typing and cursor movement:
 777
 778```json [settings]
 779"hide_mouse": "on_typing_and_movement"
 780```
 781
 782## Snippet Sort Order
 783
 784- Description: Determines how snippets are sorted relative to other completion items.
 785- Setting: `snippet_sort_order`
 786- Default: `inline`
 787
 788**Options**
 789
 7901. Place snippets at the top of the completion list:
 791
 792```json [settings]
 793"snippet_sort_order": "top"
 794```
 795
 7962. Place snippets normally without any preference:
 797
 798```json [settings]
 799"snippet_sort_order": "inline"
 800```
 801
 8023. Place snippets at the bottom of the completion list:
 803
 804```json [settings]
 805"snippet_sort_order": "bottom"
 806```
 807
 8084. Do not show snippets in the completion list at all:
 809
 810```json [settings]
 811"snippet_sort_order": "none"
 812```
 813
 814## Editor Scrollbar
 815
 816- Description: Whether or not to show the editor scrollbar and various elements in it.
 817- Setting: `scrollbar`
 818- Default:
 819
 820```json [settings]
 821"scrollbar": {
 822  "show": "auto",
 823  "cursors": true,
 824  "git_diff": true,
 825  "search_results": true,
 826  "selected_text": true,
 827  "selected_symbol": true,
 828  "diagnostics": "all",
 829  "axes": {
 830    "horizontal": true,
 831    "vertical": true,
 832  },
 833},
 834```
 835
 836### Show Mode
 837
 838- Description: When to show the editor scrollbar.
 839- Setting: `show`
 840- Default: `auto`
 841
 842**Options**
 843
 8441. Show the scrollbar if there's important information or follow the system's configured behavior:
 845
 846```json [settings]
 847"scrollbar": {
 848  "show": "auto"
 849}
 850```
 851
 8522. Match the system's configured behavior:
 853
 854```json [settings]
 855"scrollbar": {
 856  "show": "system"
 857}
 858```
 859
 8603. Always show the scrollbar:
 861
 862```json [settings]
 863"scrollbar": {
 864  "show": "always"
 865}
 866```
 867
 8684. Never show the scrollbar:
 869
 870```json [settings]
 871"scrollbar": {
 872  "show": "never"
 873}
 874```
 875
 876### Cursor Indicators
 877
 878- Description: Whether to show cursor positions in the scrollbar.
 879- Setting: `cursors`
 880- Default: `true`
 881
 882Cursor indicators appear as small marks on the scrollbar showing where other collaborators' cursors are positioned in the file.
 883
 884**Options**
 885
 886`boolean` values
 887
 888### Git Diff Indicators
 889
 890- Description: Whether to show git diff indicators in the scrollbar.
 891- Setting: `git_diff`
 892- Default: `true`
 893
 894Git diff indicators appear as colored marks showing lines that have been added, modified, or deleted compared to the git HEAD.
 895
 896**Options**
 897
 898`boolean` values
 899
 900### Search Results Indicators
 901
 902- Description: Whether to show buffer search results in the scrollbar.
 903- Setting: `search_results`
 904- Default: `true`
 905
 906Search result indicators appear as marks showing all locations in the file where your current search query matches.
 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
 918Selected text indicators appear as marks showing all occurrences of the currently selected text throughout the file.
 919
 920**Options**
 921
 922`boolean` values
 923
 924### Selected Symbols Indicators
 925
 926- Description: Whether to show selected symbol occurrences in the scrollbar.
 927- Setting: `selected_symbol`
 928- Default: `true`
 929
 930Selected symbol indicators appear as marks showing all occurrences of the currently selected symbol (like a function or variable name) throughout the file.
 931
 932**Options**
 933
 934`boolean` values
 935
 936### Diagnostics
 937
 938- Description: Which diagnostic indicators to show in the scrollbar.
 939- Setting: `diagnostics`
 940- Default: `all`
 941
 942Diagnostic indicators appear as colored marks showing errors, warnings, and other language server diagnostics at their corresponding line positions in the file.
 943
 944**Options**
 945
 9461. Show all diagnostics:
 947
 948```json [settings]
 949{
 950  "show_diagnostics": "all"
 951}
 952```
 953
 9542. Do not show any diagnostics:
 955
 956```json [settings]
 957{
 958  "show_diagnostics": "off"
 959}
 960```
 961
 9623. Show only errors:
 963
 964```json [settings]
 965{
 966  "show_diagnostics": "error"
 967}
 968```
 969
 9704. Show only errors and warnings:
 971
 972```json [settings]
 973{
 974  "show_diagnostics": "warning"
 975}
 976```
 977
 9785. Show only errors, warnings, and information:
 979
 980```json [settings]
 981{
 982  "show_diagnostics": "info"
 983}
 984```
 985
 986### Axes
 987
 988- Description: Forcefully enable or disable the scrollbar for each axis
 989- Setting: `axes`
 990- Default:
 991
 992```json [settings]
 993"scrollbar": {
 994  "axes": {
 995    "horizontal": true,
 996    "vertical": true,
 997  },
 998}
 999```
1000
1001#### Horizontal
1002
1003- Description: When false, forcefully disables the horizontal scrollbar. Otherwise, obey other settings.
1004- Setting: `horizontal`
1005- Default: `true`
1006
1007**Options**
1008
1009`boolean` values
1010
1011#### Vertical
1012
1013- Description: When false, forcefully disables the vertical scrollbar. Otherwise, obey other settings.
1014- Setting: `vertical`
1015- Default: `true`
1016
1017**Options**
1018
1019`boolean` values
1020
1021## Minimap
1022
1023- Description: Settings related to the editor's minimap, which provides an overview of your document.
1024- Setting: `minimap`
1025- Default:
1026
1027```json [settings]
1028{
1029  "minimap": {
1030    "show": "never",
1031    "thumb": "always",
1032    "thumb_border": "left_open",
1033    "current_line_highlight": null
1034  }
1035}
1036```
1037
1038### Show Mode
1039
1040- Description: When to show the minimap in the editor.
1041- Setting: `show`
1042- Default: `never`
1043
1044**Options**
1045
10461. Always show the minimap:
1047
1048```json [settings]
1049{
1050  "show": "always"
1051}
1052```
1053
10542. Show the minimap if the editor's scrollbars are visible:
1055
1056```json [settings]
1057{
1058  "show": "auto"
1059}
1060```
1061
10623. Never show the minimap:
1063
1064```json [settings]
1065{
1066  "show": "never"
1067}
1068```
1069
1070### Thumb Display
1071
1072- Description: When to show the minimap thumb (the visible editor area) in the minimap.
1073- Setting: `thumb`
1074- Default: `always`
1075
1076**Options**
1077
10781. Show the minimap thumb when hovering over the minimap:
1079
1080```json [settings]
1081{
1082  "thumb": "hover"
1083}
1084```
1085
10862. Always show the minimap thumb:
1087
1088```json [settings]
1089{
1090  "thumb": "always"
1091}
1092```
1093
1094### Thumb Border
1095
1096- Description: How the minimap thumb border should look.
1097- Setting: `thumb_border`
1098- Default: `left_open`
1099
1100**Options**
1101
11021. Display a border on all sides of the thumb:
1103
1104```json [settings]
1105{
1106  "thumb_border": "full"
1107}
1108```
1109
11102. Display a border on all sides except the left side:
1111
1112```json [settings]
1113{
1114  "thumb_border": "left_open"
1115}
1116```
1117
11183. Display a border on all sides except the right side:
1119
1120```json [settings]
1121{
1122  "thumb_border": "right_open"
1123}
1124```
1125
11264. Display a border only on the left side:
1127
1128```json [settings]
1129{
1130  "thumb_border": "left_only"
1131}
1132```
1133
11345. Display the thumb without any border:
1135
1136```json [settings]
1137{
1138  "thumb_border": "none"
1139}
1140```
1141
1142### Current Line Highlight
1143
1144- Description: How to highlight the current line in the minimap.
1145- Setting: `current_line_highlight`
1146- Default: `null`
1147
1148**Options**
1149
11501. Inherit the editor's current line highlight setting:
1151
1152```json [settings]
1153{
1154  "minimap": {
1155    "current_line_highlight": null
1156  }
1157}
1158```
1159
11602. Highlight the current line in the minimap:
1161
1162```json [settings]
1163{
1164  "minimap": {
1165    "current_line_highlight": "line"
1166  }
1167}
1168```
1169
1170or
1171
1172```json [settings]
1173{
1174  "minimap": {
1175    "current_line_highlight": "all"
1176  }
1177}
1178```
1179
11803. Do not highlight the current line in the minimap:
1181
1182```json [settings]
1183{
1184  "minimap": {
1185    "current_line_highlight": "gutter"
1186  }
1187}
1188```
1189
1190or
1191
1192```json [settings]
1193{
1194  "minimap": {
1195    "current_line_highlight": "none"
1196  }
1197}
1198```
1199
1200## Editor Tab Bar
1201
1202- Description: Settings related to the editor's tab bar.
1203- Settings: `tab_bar`
1204- Default:
1205
1206```json [settings]
1207"tab_bar": {
1208  "show": true,
1209  "show_nav_history_buttons": true,
1210  "show_tab_bar_buttons": true
1211}
1212```
1213
1214### Show
1215
1216- Description: Whether or not to show the tab bar in the editor.
1217- Setting: `show`
1218- Default: `true`
1219
1220**Options**
1221
1222`boolean` values
1223
1224### Navigation History Buttons
1225
1226- Description: Whether or not to show the navigation history buttons.
1227- Setting: `show_nav_history_buttons`
1228- Default: `true`
1229
1230**Options**
1231
1232`boolean` values
1233
1234### Tab Bar Buttons
1235
1236- Description: Whether or not to show the tab bar buttons.
1237- Setting: `show_tab_bar_buttons`
1238- Default: `true`
1239
1240**Options**
1241
1242`boolean` values
1243
1244## Editor Tabs
1245
1246- Description: Configuration for the editor tabs.
1247- Setting: `tabs`
1248- Default:
1249
1250```json [settings]
1251"tabs": {
1252  "close_position": "right",
1253  "file_icons": false,
1254  "git_status": false,
1255  "activate_on_close": "history",
1256  "show_close_button": "hover",
1257  "show_diagnostics": "off"
1258},
1259```
1260
1261### Close Position
1262
1263- Description: Where to display close button within a tab.
1264- Setting: `close_position`
1265- Default: `right`
1266
1267**Options**
1268
12691. Display the close button on the right:
1270
1271```json [settings]
1272{
1273  "close_position": "right"
1274}
1275```
1276
12772. Display the close button on the left:
1278
1279```json [settings]
1280{
1281  "close_position": "left"
1282}
1283```
1284
1285### File Icons
1286
1287- Description: Whether to show the file icon for a tab.
1288- Setting: `file_icons`
1289- Default: `false`
1290
1291### Git Status
1292
1293- Description: Whether or not to show Git file status in tab.
1294- Setting: `git_status`
1295- Default: `false`
1296
1297### Activate on close
1298
1299- Description: What to do after closing the current tab.
1300- Setting: `activate_on_close`
1301- Default: `history`
1302
1303**Options**
1304
13051.  Activate the tab that was open previously:
1306
1307```json [settings]
1308{
1309  "activate_on_close": "history"
1310}
1311```
1312
13132. Activate the right neighbour tab if present:
1314
1315```json [settings]
1316{
1317  "activate_on_close": "neighbour"
1318}
1319```
1320
13213. Activate the left neighbour tab if present:
1322
1323```json [settings]
1324{
1325  "activate_on_close": "left_neighbour"
1326}
1327```
1328
1329### Show close button
1330
1331- Description: Controls the appearance behavior of the tab's close button.
1332- Setting: `show_close_button`
1333- Default: `hover`
1334
1335**Options**
1336
13371.  Show it just upon hovering the tab:
1338
1339```json [settings]
1340{
1341  "show_close_button": "hover"
1342}
1343```
1344
13452. Show it persistently:
1346
1347```json [settings]
1348{
1349  "show_close_button": "always"
1350}
1351```
1352
13533. Never show it, even if hovering it:
1354
1355```json [settings]
1356{
1357  "show_close_button": "hidden"
1358}
1359```
1360
1361### Show Diagnostics
1362
1363- 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.
1364- Setting: `show_diagnostics`
1365- Default: `off`
1366
1367**Options**
1368
13691. Do not mark any files:
1370
1371```json [settings]
1372{
1373  "show_diagnostics": "off"
1374}
1375```
1376
13772. Only mark files with errors:
1378
1379```json [settings]
1380{
1381  "show_diagnostics": "errors"
1382}
1383```
1384
13853. Mark files with errors and warnings:
1386
1387```json [settings]
1388{
1389  "show_diagnostics": "all"
1390}
1391```
1392
1393### Show Inline Code Actions
1394
1395- Description: Whether to show code action button at start of buffer line.
1396- Setting: `inline_code_actions`
1397- Default: `true`
1398
1399**Options**
1400
1401`boolean` values
1402
1403### Session
1404
1405- Description: Controls Zed lifecycle-related behavior.
1406- Setting: `session`
1407- Default:
1408
1409```json
1410{
1411  "session": {
1412    "restore_unsaved_buffers": true,
1413    "trust_all_worktrees": false
1414  }
1415}
1416```
1417
1418**Options**
1419
14201.  Whether or not to restore unsaved buffers on restart:
1421
1422```json [settings]
1423{
1424  "session": {
1425    "restore_unsaved_buffers": true
1426  }
1427}
1428```
1429
1430If this is true, user won't be prompted whether to save/discard dirty files when closing the application.
1431
14322. Whether or not to skip worktree and workspace trust checks:
1433
1434```json [settings]
1435{
1436  "session": {
1437    "trust_all_worktrees": false
1438  }
1439}
1440```
1441
1442When trusted, project settings are synchronized automatically, language and MCP servers are downloaded and started automatically.
1443
1444### Drag And Drop Selection
1445
1446- 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.
1447- Setting: `drag_and_drop_selection`
1448- Default:
1449
1450```json [settings]
1451"drag_and_drop_selection": {
1452  "enabled": true,
1453  "delay": 300
1454}
1455```
1456
1457## Editor Toolbar
1458
1459- Description: Whether or not to show various elements in the editor toolbar.
1460- Setting: `toolbar`
1461- Default:
1462
1463```json [settings]
1464"toolbar": {
1465  "breadcrumbs": true,
1466  "quick_actions": true,
1467  "selections_menu": true,
1468  "agent_review": true,
1469  "code_actions": false
1470},
1471```
1472
1473**Options**
1474
1475Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
1476
1477## Use System Tabs
1478
1479- Description: Whether to allow windows to tab together based on the user’s tabbing preference (macOS only).
1480- Setting: `use_system_window_tabs`
1481- Default: `false`
1482
1483**Options**
1484
1485This 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.
1486
1487## Enable Language Server
1488
1489- Description: Whether or not to use language servers to provide code intelligence.
1490- Setting: `enable_language_server`
1491- Default: `true`
1492
1493**Options**
1494
1495`boolean` values
1496
1497## Ensure Final Newline On Save
1498
1499- Description: Removes any lines containing only whitespace at the end of the file and ensures just one newline at the end.
1500- Setting: `ensure_final_newline_on_save`
1501- Default: `true`
1502
1503**Options**
1504
1505`boolean` values
1506
1507## Expand Excerpt Lines
1508
1509- Description: The default number of lines to expand excerpts in the multibuffer by
1510- Setting: `expand_excerpt_lines`
1511- Default: `5`
1512
1513**Options**
1514
1515Positive `integer` values
1516
1517## Excerpt Context Lines
1518
1519- Description: The number of lines of context to provide when showing excerpts in the multibuffer.
1520- Setting: `excerpt_context_lines`
1521- Default: `2`
1522
1523**Options**
1524
1525Positive `integer` value between 1 and 32. Values outside of this range will be clamped to this range.
1526
1527## Extend Comment On Newline
1528
1529- Description: Whether to start a new line with a comment when a previous line is a comment as well.
1530- Setting: `extend_comment_on_newline`
1531- Default: `true`
1532
1533**Options**
1534
1535`boolean` values
1536
1537## Status Bar
1538
1539- Description: Control various elements in the status bar. Note that some items in the status bar have their own settings set elsewhere.
1540- Setting: `status_bar`
1541- Default:
1542
1543```json [settings]
1544"status_bar": {
1545  "active_language_button": true,
1546  "cursor_position_button": true,
1547  "line_endings_button": false
1548},
1549```
1550
1551There is an experimental setting that completely hides the status bar. This causes major usability problems (you will be unable to use many of Zed's features), but is provided for those who value screen real-estate above all else.
1552
1553```json
1554"status_bar": {
1555  "experimental.show": false
1556}
1557```
1558
1559## LSP
1560
1561- Description: Configuration for language servers.
1562- Setting: `lsp`
1563- Default: `null`
1564
1565**Options**
1566
1567The following settings can be overridden for specific language servers:
1568
1569- `initialization_options`
1570- `settings`
1571
1572To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
1573
1574Some 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.
1575
1576For example to pass the `check` option to `rust-analyzer`, use the following configuration:
1577
1578```json [settings]
1579"lsp": {
1580  "rust-analyzer": {
1581    "initialization_options": {
1582      "check": {
1583        "command": "clippy" // rust-analyzer.check.command (default: "check")
1584      }
1585    }
1586  }
1587}
1588```
1589
1590While other options may be changed at a runtime and should be placed under `settings`:
1591
1592```json [settings]
1593"lsp": {
1594  "yaml-language-server": {
1595    "settings": {
1596      "yaml": {
1597        "keyOrdering": true // Enforces alphabetical ordering of keys in maps
1598      }
1599    }
1600  }
1601}
1602```
1603
1604## Global LSP Settings
1605
1606- Description: Configuration for global LSP settings that apply to all language servers
1607- Setting: `global_lsp_settings`
1608- Default:
1609
1610```json [settings]
1611{
1612  "global_lsp_settings": {
1613    "button": true
1614  }
1615}
1616```
1617
1618**Options**
1619
1620- `button`: Whether to show the LSP status button in the status bar
1621
1622## LSP Highlight Debounce
1623
1624- Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
1625- Setting: `lsp_highlight_debounce`
1626- Default: `75`
1627
1628**Options**
1629
1630`integer` values representing milliseconds
1631
1632## Features
1633
1634- Description: Features that can be globally enabled or disabled
1635- Setting: `features`
1636- Default:
1637
1638```json [settings]
1639{
1640  "features": {
1641    "edit_prediction_provider": "zed"
1642  }
1643}
1644```
1645
1646### Edit Prediction Provider
1647
1648- Description: Which edit prediction provider to use
1649- Setting: `edit_prediction_provider`
1650- Default: `"zed"`
1651
1652**Options**
1653
16541. Use Zeta as the edit prediction provider:
1655
1656```json [settings]
1657{
1658  "features": {
1659    "edit_prediction_provider": "zed"
1660  }
1661}
1662```
1663
16642. Use Copilot as the edit prediction provider:
1665
1666```json [settings]
1667{
1668  "features": {
1669    "edit_prediction_provider": "copilot"
1670  }
1671}
1672```
1673
16743. Use Supermaven as the edit prediction provider:
1675
1676```json [settings]
1677{
1678  "features": {
1679    "edit_prediction_provider": "supermaven"
1680  }
1681}
1682```
1683
16844. Turn off edit predictions across all providers
1685
1686```json [settings]
1687{
1688  "features": {
1689    "edit_prediction_provider": "none"
1690  }
1691}
1692```
1693
1694## Format On Save
1695
1696- Description: Whether or not to perform a buffer format before saving.
1697- Setting: `format_on_save`
1698- Default: `on`
1699
1700**Options**
1701
17021. `on`, enables format on save obeying `formatter` setting:
1703
1704```json [settings]
1705{
1706  "format_on_save": "on"
1707}
1708```
1709
17102. `off`, disables format on save:
1711
1712```json [settings]
1713{
1714  "format_on_save": "off"
1715}
1716```
1717
1718## Formatter
1719
1720- Description: How to perform a buffer format.
1721- Setting: `formatter`
1722- Default: `auto`
1723
1724**Options**
1725
17261. To use the current language server, use `"language_server"`:
1727
1728```json [settings]
1729{
1730  "formatter": "language_server"
1731}
1732```
1733
17342. 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):
1735
1736```json [settings]
1737{
1738  "formatter": {
1739    "external": {
1740      "command": "sed",
1741      "arguments": ["-e", "s/ *$//"]
1742    }
1743  }
1744}
1745```
1746
17473. 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.
1748
1749WARNING: `{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.
1750
1751```json [settings]
1752  "formatter": {
1753    "external": {
1754      "command": "prettier",
1755      "arguments": ["--stdin-filepath", "{buffer_path}"]
1756    }
1757  }
1758```
1759
17604. Or to use code actions provided by the connected language servers, use `"code_actions"`:
1761
1762```json [settings]
1763{
1764  "formatter": [
1765    // Use ESLint's --fix:
1766    { "code_action": "source.fixAll.eslint" },
1767    // Organize imports on save:
1768    { "code_action": "source.organizeImports" }
1769  ]
1770}
1771```
1772
17735. Or to use multiple formatters consecutively, use an array of formatters:
1774
1775```json [settings]
1776{
1777  "formatter": [
1778    { "language_server": { "name": "rust-analyzer" } },
1779    {
1780      "external": {
1781        "command": "sed",
1782        "arguments": ["-e", "s/ *$//"]
1783      }
1784    }
1785  ]
1786}
1787```
1788
1789Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
1790If any of the formatters fails, the subsequent ones will still be executed.
1791
1792## Auto close
1793
1794- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
1795- Setting: `use_autoclose`
1796- Default: `true`
1797
1798**Options**
1799
1800`boolean` values
1801
1802## Always Treat Brackets As Autoclosed
1803
1804- Description: Controls how the editor handles the autoclosed characters.
1805- Setting: `always_treat_brackets_as_autoclosed`
1806- Default: `false`
1807
1808**Options**
1809
1810`boolean` values
1811
1812**Example**
1813
1814If the setting is set to `true`:
1815
18161. Enter in the editor: `)))`
18172. Move the cursor to the start: `^)))`
18183. Enter again: `)))`
1819
1820The result is still `)))` and not `))))))`, which is what it would be by default.
1821
1822## File Scan Exclusions
1823
1824- Setting: `file_scan_exclusions`
1825- 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`.
1826- Default:
1827
1828```json [settings]
1829"file_scan_exclusions": [
1830  "**/.git",
1831  "**/.svn",
1832  "**/.hg",
1833  "**/.jj",
1834  "**/CVS",
1835  "**/.DS_Store",
1836  "**/Thumbs.db",
1837  "**/.classpath",
1838  "**/.settings"
1839],
1840```
1841
1842Note, 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.
1843
1844## File Scan Inclusions
1845
1846- Setting: `file_scan_inclusions`
1847- 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.
1848- Default:
1849
1850```json [settings]
1851"file_scan_inclusions": [".env*"],
1852```
1853
1854## File Types
1855
1856- Setting: `file_types`
1857- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
1858- Default:
1859
1860```json [settings]
1861"file_types": {
1862  "JSONC": ["**/.zed/**/*.json", "**/zed/**/*.json", "**/Zed/**/*.json", "**/.vscode/**/*.json"],
1863  "Shell Script": [".env.*"]
1864}
1865```
1866
1867**Examples**
1868
1869To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
1870
1871```json [settings]
1872{
1873  "file_types": {
1874    "C++": ["c"],
1875    "TOML": ["MyLockFile"],
1876    "Dockerfile": ["Dockerfile*"]
1877  }
1878}
1879```
1880
1881## Diagnostics
1882
1883- Description: Configuration for diagnostics-related features.
1884- Setting: `diagnostics`
1885- Default:
1886
1887```json [settings]
1888{
1889  "diagnostics": {
1890    "include_warnings": true,
1891    "inline": {
1892      "enabled": false
1893    },
1894    "update_with_cursor": false,
1895    "primary_only": false,
1896    "use_rendered": false
1897  }
1898}
1899```
1900
1901### Inline Diagnostics
1902
1903- Description: Whether or not to show diagnostics information inline.
1904- Setting: `inline`
1905- Default:
1906
1907```json [settings]
1908{
1909  "diagnostics": {
1910    "inline": {
1911      "enabled": false,
1912      "update_debounce_ms": 150,
1913      "padding": 4,
1914      "min_column": 0,
1915      "max_severity": null
1916    }
1917  }
1918}
1919```
1920
1921**Options**
1922
19231. Enable inline diagnostics.
1924
1925```json [settings]
1926{
1927  "diagnostics": {
1928    "inline": {
1929      "enabled": true
1930    }
1931  }
1932}
1933```
1934
19352. Delay diagnostic updates until some time after the last diagnostic update.
1936
1937```json [settings]
1938{
1939  "diagnostics": {
1940    "inline": {
1941      "enabled": true,
1942      "update_debounce_ms": 150
1943    }
1944  }
1945}
1946```
1947
19483. Set padding between the end of the source line and the start of the diagnostic.
1949
1950```json [settings]
1951{
1952  "diagnostics": {
1953    "inline": {
1954      "enabled": true,
1955      "padding": 4
1956    }
1957  }
1958}
1959```
1960
19614. Horizontally align inline diagnostics at the given column.
1962
1963```json [settings]
1964{
1965  "diagnostics": {
1966    "inline": {
1967      "enabled": true,
1968      "min_column": 80
1969    }
1970  }
1971}
1972```
1973
19745. Show only warning and error diagnostics.
1975
1976```json [settings]
1977{
1978  "diagnostics": {
1979    "inline": {
1980      "enabled": true,
1981      "max_severity": "warning"
1982    }
1983  }
1984}
1985```
1986
1987## Git
1988
1989- Description: Configuration for git-related features.
1990- Setting: `git`
1991- Default:
1992
1993```json [settings]
1994{
1995  "git": {
1996    "git_gutter": "tracked_files",
1997    "inline_blame": {
1998      "enabled": true
1999    },
2000    "branch_picker": {
2001      "show_author_name": true
2002    },
2003    "hunk_style": "staged_hollow"
2004  }
2005}
2006```
2007
2008### Git Gutter
2009
2010- Description: Whether or not to show the git gutter.
2011- Setting: `git_gutter`
2012- Default: `tracked_files`
2013
2014**Options**
2015
20161. Show git gutter in tracked files
2017
2018```json [settings]
2019{
2020  "git": {
2021    "git_gutter": "tracked_files"
2022  }
2023}
2024```
2025
20262. Hide git gutter
2027
2028```json [settings]
2029{
2030  "git": {
2031    "git_gutter": "hide"
2032  }
2033}
2034```
2035
2036### Gutter Debounce
2037
2038- Description: Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
2039- Setting: `gutter_debounce`
2040- Default: `null`
2041
2042**Options**
2043
2044`integer` values representing milliseconds
2045
2046Example:
2047
2048```json [settings]
2049{
2050  "git": {
2051    "gutter_debounce": 100
2052  }
2053}
2054```
2055
2056### Inline Git Blame
2057
2058- Description: Whether or not to show git blame information inline, on the currently focused line.
2059- Setting: `inline_blame`
2060- Default:
2061
2062```json [settings]
2063{
2064  "git": {
2065    "inline_blame": {
2066      "enabled": true
2067    }
2068  }
2069}
2070```
2071
2072**Options**
2073
20741. Disable inline git blame:
2075
2076```json [settings]
2077{
2078  "git": {
2079    "inline_blame": {
2080      "enabled": false
2081    }
2082  }
2083}
2084```
2085
20862. Only show inline git blame after a delay (that starts after cursor stops moving):
2087
2088```json [settings]
2089{
2090  "git": {
2091    "inline_blame": {
2092      "delay_ms": 500
2093    }
2094  }
2095}
2096```
2097
20983. Show a commit summary next to the commit date and author:
2099
2100```json [settings]
2101{
2102  "git": {
2103    "inline_blame": {
2104      "show_commit_summary": true
2105    }
2106  }
2107}
2108```
2109
21104. Use this as the minimum column at which to display inline blame information:
2111
2112```json [settings]
2113{
2114  "git": {
2115    "inline_blame": {
2116      "min_column": 80
2117    }
2118  }
2119}
2120```
2121
21225. Set the padding between the end of the line and the inline blame hint, in ems:
2123
2124```json [settings]
2125{
2126  "git": {
2127    "inline_blame": {
2128      "padding": 10
2129    }
2130  }
2131}
2132```
2133
2134### Branch Picker
2135
2136- Description: Configuration related to the branch picker.
2137- Setting: `branch_picker`
2138- Default:
2139
2140```json [settings]
2141{
2142  "git": {
2143    "branch_picker": {
2144      "show_author_name": false
2145    }
2146  }
2147}
2148```
2149
2150**Options**
2151
21521. Show the author name in the branch picker:
2153
2154```json [settings]
2155{
2156  "git": {
2157    "branch_picker": {
2158      "show_author_name": true
2159    }
2160  }
2161}
2162```
2163
2164### Hunk Style
2165
2166- Description: What styling we should use for the diff hunks.
2167- Setting: `hunk_style`
2168- Default:
2169
2170```json [settings]
2171{
2172  "git": {
2173    "hunk_style": "staged_hollow"
2174  }
2175}
2176```
2177
2178**Options**
2179
21801. Show the staged hunks faded out and with a border:
2181
2182```json [settings]
2183{
2184  "git": {
2185    "hunk_style": "staged_hollow"
2186  }
2187}
2188```
2189
21902. Show unstaged hunks faded out and with a border:
2191
2192```json [settings]
2193{
2194  "git": {
2195    "hunk_style": "unstaged_hollow"
2196  }
2197}
2198```
2199
2200## Go to Definition Fallback
2201
2202- Description: What to do when the {#action editor::GoToDefinition} action fails to find a definition
2203- Setting: `go_to_definition_fallback`
2204- Default: `"find_all_references"`
2205
2206**Options**
2207
22081. Do nothing:
2209
2210```json [settings]
2211{
2212  "go_to_definition_fallback": "none"
2213}
2214```
2215
22162. Find references for the same symbol (default):
2217
2218```json [settings]
2219{
2220  "go_to_definition_fallback": "find_all_references"
2221}
2222```
2223
2224## Hard Tabs
2225
2226- Description: Whether to indent lines using tab characters or multiple spaces.
2227- Setting: `hard_tabs`
2228- Default: `false`
2229
2230**Options**
2231
2232`boolean` values
2233
2234## Helix Mode
2235
2236- Description: Whether or not to enable Helix mode. Enabling `helix_mode` also enables `vim_mode`. See the [Helix documentation](../helix.md) for more details.
2237- Setting: `helix_mode`
2238- Default: `false`
2239
2240**Options**
2241
2242`boolean` values
2243
2244## Indent Guides
2245
2246- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
2247- Setting: `indent_guides`
2248- Default:
2249
2250```json [settings]
2251{
2252  "indent_guides": {
2253    "enabled": true,
2254    "line_width": 1,
2255    "active_line_width": 1,
2256    "coloring": "fixed",
2257    "background_coloring": "disabled"
2258  }
2259}
2260```
2261
2262**Options**
2263
22641. Disable indent guides
2265
2266```json [settings]
2267{
2268  "indent_guides": {
2269    "enabled": false
2270  }
2271}
2272```
2273
22742. Enable indent guides for a specific language.
2275
2276```json [settings]
2277{
2278  "languages": {
2279    "Python": {
2280      "indent_guides": {
2281        "enabled": true
2282      }
2283    }
2284  }
2285}
2286```
2287
22883. Enable indent aware coloring ("rainbow indentation").
2289   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.
2290
2291```json [settings]
2292{
2293  "indent_guides": {
2294    "enabled": true,
2295    "coloring": "indent_aware"
2296  }
2297}
2298```
2299
23004. Enable indent aware background coloring ("rainbow indentation").
2301   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.
2302
2303```json [settings]
2304{
2305  "indent_guides": {
2306    "enabled": true,
2307    "coloring": "indent_aware",
2308    "background_coloring": "indent_aware"
2309  }
2310}
2311```
2312
2313## Hover Popover Enabled
2314
2315- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
2316- Setting: `hover_popover_enabled`
2317- Default: `true`
2318
2319**Options**
2320
2321`boolean` values
2322
2323## Hover Popover Delay
2324
2325- Description: Time to wait in milliseconds before showing the informational hover box.
2326- Setting: `hover_popover_delay`
2327- Default: `300`
2328
2329**Options**
2330
2331`integer` values representing milliseconds
2332
2333## Icon Theme
2334
2335- 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.
2336- Setting: `icon_theme`
2337- Default: `Zed (Default)`
2338
2339### Icon Theme Object
2340
2341- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
2342- Setting: `icon_theme`
2343- Default:
2344
2345```json [settings]
2346"icon_theme": {
2347  "mode": "system",
2348  "dark": "Zed (Default)",
2349  "light": "Zed (Default)"
2350},
2351```
2352
2353### Mode
2354
2355- Description: Specify the icon theme mode.
2356- Setting: `mode`
2357- Default: `system`
2358
2359**Options**
2360
23611. Set the icon theme to dark mode
2362
2363```json [settings]
2364{
2365  "mode": "dark"
2366}
2367```
2368
23692. Set the icon theme to light mode
2370
2371```json [settings]
2372{
2373  "mode": "light"
2374}
2375```
2376
23773. Set the icon theme to system mode
2378
2379```json [settings]
2380{
2381  "mode": "system"
2382}
2383```
2384
2385### Dark
2386
2387- Description: The name of the dark icon theme.
2388- Setting: `dark`
2389- Default: `Zed (Default)`
2390
2391**Options**
2392
2393Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2394
2395### Light
2396
2397- Description: The name of the light icon theme.
2398- Setting: `light`
2399- Default: `Zed (Default)`
2400
2401**Options**
2402
2403Run the {#action icon_theme_selector::Toggle} action in the command palette to see a current list of valid icon themes names.
2404
2405## Image Viewer
2406
2407- Description: Settings for image viewer functionality
2408- Setting: `image_viewer`
2409- Default:
2410
2411```json [settings]
2412{
2413  "image_viewer": {
2414    "unit": "binary"
2415  }
2416}
2417```
2418
2419**Options**
2420
2421### Unit
2422
2423- Description: The unit for image file sizes
2424- Setting: `unit`
2425- Default: `"binary"`
2426
2427**Options**
2428
24291. Use binary units (KiB, MiB):
2430
2431```json [settings]
2432{
2433  "image_viewer": {
2434    "unit": "binary"
2435  }
2436}
2437```
2438
24392. Use decimal units (KB, MB):
2440
2441```json [settings]
2442{
2443  "image_viewer": {
2444    "unit": "decimal"
2445  }
2446}
2447```
2448
2449## Inlay hints
2450
2451- Description: Configuration for displaying extra text with hints in the editor.
2452- Setting: `inlay_hints`
2453- Default:
2454
2455```json [settings]
2456"inlay_hints": {
2457  "enabled": false,
2458  "show_type_hints": true,
2459  "show_parameter_hints": true,
2460  "show_other_hints": true,
2461  "show_background": false,
2462  "edit_debounce_ms": 700,
2463  "scroll_debounce_ms": 50,
2464  "toggle_on_modifiers_press": null
2465}
2466```
2467
2468**Options**
2469
2470Inlay hints querying consists of two parts: editor (client) and LSP server.
2471With 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.
2472At 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.
2473
2474The following languages have inlay hints preconfigured by Zed:
2475
2476- [Go](https://docs.zed.dev/languages/go)
2477- [Rust](https://docs.zed.dev/languages/rust)
2478- [Svelte](https://docs.zed.dev/languages/svelte)
2479- [TypeScript](https://docs.zed.dev/languages/typescript)
2480
2481Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
2482
2483Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
2484Settings-related hint updates are not debounced.
2485
2486All possible config values for `toggle_on_modifiers_press` are:
2487
2488```json [settings]
2489"inlay_hints": {
2490  "toggle_on_modifiers_press": {
2491    "control": true,
2492    "shift": true,
2493    "alt": true,
2494    "platform": true,
2495    "function": true
2496  }
2497}
2498```
2499
2500Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
2501
2502## Journal
2503
2504- Description: Configuration for the journal.
2505- Setting: `journal`
2506- Default:
2507
2508```json [settings]
2509"journal": {
2510  "path": "~",
2511  "hour_format": "hour12"
2512}
2513
2514```
2515
2516### Path
2517
2518- Description: The path of the directory where journal entries are stored. If an invalid path is specified, the journal will fall back to using `~` (the home directory).
2519- Setting: `path`
2520- Default: `~`
2521
2522**Options**
2523
2524`string` values
2525
2526### Hour Format
2527
2528- Description: The format to use for displaying hours in the journal.
2529- Setting: `hour_format`
2530- Default: `hour12`
2531
2532**Options**
2533
25341. 12-hour format:
2535
2536```json [settings]
2537{
2538  "hour_format": "hour12"
2539}
2540```
2541
25422. 24-hour format:
2543
2544```json [settings]
2545{
2546  "hour_format": "hour24"
2547}
2548```
2549
2550## JSX Tag Auto Close
2551
2552- Description: Whether to automatically close JSX tags
2553- Setting: `jsx_tag_auto_close`
2554- Default:
2555
2556```json [settings]
2557{
2558  "jsx_tag_auto_close": {
2559    "enabled": true
2560  }
2561}
2562```
2563
2564**Options**
2565
2566- `enabled`: Whether to enable automatic JSX tag closing
2567
2568## Languages
2569
2570- Description: Configuration for specific languages.
2571- Setting: `languages`
2572- Default: `null`
2573
2574**Options**
2575
2576To override settings for a language, add an entry for that languages name to the `languages` value. Example:
2577
2578```json [settings]
2579"languages": {
2580  "C": {
2581    "format_on_save": "off",
2582    "preferred_line_length": 64,
2583    "soft_wrap": "preferred_line_length"
2584  },
2585  "JSON": {
2586    "tab_size": 4
2587  }
2588}
2589```
2590
2591The following settings can be overridden for each specific language:
2592
2593- [`enable_language_server`](#enable-language-server)
2594- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
2595- [`format_on_save`](#format-on-save)
2596- [`formatter`](#formatter)
2597- [`hard_tabs`](#hard-tabs)
2598- [`preferred_line_length`](#preferred-line-length)
2599- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
2600- [`show_edit_predictions`](#show-edit-predictions)
2601- [`show_whitespaces`](#show-whitespaces)
2602- [`whitespace_map`](#whitespace-map)
2603- [`soft_wrap`](#soft-wrap)
2604- [`tab_size`](#tab-size)
2605- [`use_autoclose`](#use-autoclose)
2606- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
2607
2608These values take in the same options as the root-level settings with the same name.
2609
2610## Language Models
2611
2612- Description: Configuration for language model providers
2613- Setting: `language_models`
2614- Default:
2615
2616```json [settings]
2617{
2618  "language_models": {
2619    "anthropic": {
2620      "api_url": "https://api.anthropic.com"
2621    },
2622    "google": {
2623      "api_url": "https://generativelanguage.googleapis.com"
2624    },
2625    "ollama": {
2626      "api_url": "http://localhost:11434"
2627    },
2628    "openai": {
2629      "api_url": "https://api.openai.com/v1"
2630    }
2631  }
2632}
2633```
2634
2635**Options**
2636
2637Configuration for various AI model providers including API URLs and authentication settings.
2638
2639## Line Indicator Format
2640
2641- Description: Format for line indicator in the status bar
2642- Setting: `line_indicator_format`
2643- Default: `"short"`
2644
2645**Options**
2646
26471. Short format:
2648
2649```json [settings]
2650{
2651  "line_indicator_format": "short"
2652}
2653```
2654
26552. Long format:
2656
2657```json [settings]
2658{
2659  "line_indicator_format": "long"
2660}
2661```
2662
2663## Linked Edits
2664
2665- 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.
2666- Setting: `linked_edits`
2667- Default: `true`
2668
2669**Options**
2670
2671`boolean` values
2672
2673## LSP Document Colors
2674
2675- Description: Whether to show document color information from the language server
2676- Setting: `lsp_document_colors`
2677- Default: `true`
2678
2679**Options**
2680
2681`boolean` values
2682
2683## Max Tabs
2684
2685- Description: Maximum number of tabs to show in the tab bar
2686- Setting: `max_tabs`
2687- Default: `null`
2688
2689**Options**
2690
2691Positive `integer` values or `null` for unlimited tabs
2692
2693## Middle Click Paste (Linux only)
2694
2695- Description: Enable middle-click paste on Linux
2696- Setting: `middle_click_paste`
2697- Default: `true`
2698
2699**Options**
2700
2701`boolean` values
2702
2703## Multi Cursor Modifier
2704
2705- 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.
2706- Setting: `multi_cursor_modifier`
2707- Default: `alt`
2708
2709**Options**
2710
27111. Maps to `Alt` on Linux and Windows and to `Option` on macOS:
2712
2713```json [settings]
2714{
2715  "multi_cursor_modifier": "alt"
2716}
2717```
2718
27192. Maps `Control` on Linux and Windows and to `Command` on macOS:
2720
2721```json [settings]
2722{
2723  "multi_cursor_modifier": "cmd_or_ctrl" // alias: "cmd", "ctrl"
2724}
2725```
2726
2727## Node
2728
2729- Description: Configuration for Node.js integration
2730- Setting: `node`
2731- Default:
2732
2733```json [settings]
2734{
2735  "node": {
2736    "ignore_system_version": false,
2737    "path": null,
2738    "npm_path": null
2739  }
2740}
2741```
2742
2743**Options**
2744
2745- `ignore_system_version`: Whether to ignore the system Node.js version
2746- `path`: Custom path to Node.js binary
2747- `npm_path`: Custom path to npm binary
2748
2749## Network Proxy
2750
2751- Description: Configure a network proxy for Zed.
2752- Setting: `proxy`
2753- Default: `null`
2754
2755**Options**
2756
2757The proxy setting must contain a URL to the proxy.
2758
2759The following URI schemes are supported:
2760
2761- `http`
2762- `https`
2763- `socks4` - SOCKS4 proxy with local DNS
2764- `socks4a` - SOCKS4 proxy with remote DNS
2765- `socks5` - SOCKS5 proxy with local DNS
2766- `socks5h` - SOCKS5 proxy with remote DNS
2767
2768`http` will be used when no scheme is specified.
2769
2770By 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`.
2771
2772For example, to set an `http` proxy, add the following to your settings:
2773
2774```json [settings]
2775{
2776  "proxy": "http://127.0.0.1:10809"
2777}
2778```
2779
2780Or to set a `socks5` proxy:
2781
2782```json [settings]
2783{
2784  "proxy": "socks5h://localhost:10808"
2785}
2786```
2787
2788If 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.
2789
2790## On Last Window Closed
2791
2792- Description: What to do when the last window is closed
2793- Setting: `on_last_window_closed`
2794- Default: `"platform_default"`
2795
2796**Options**
2797
27981. Use platform default behavior:
2799
2800```json [settings]
2801{
2802  "on_last_window_closed": "platform_default"
2803}
2804```
2805
28062. Always quit the application:
2807
2808```json [settings]
2809{
2810  "on_last_window_closed": "quit_app"
2811}
2812```
2813
2814## Profiles
2815
2816- Description: Configuration profiles that can be applied on top of existing settings
2817- Setting: `profiles`
2818- Default: `{}`
2819
2820**Options**
2821
2822Configuration object for defining settings profiles. Example:
2823
2824```json [settings]
2825{
2826  "profiles": {
2827    "presentation": {
2828      "buffer_font_size": 20,
2829      "ui_font_size": 18,
2830      "theme": "One Light"
2831    }
2832  }
2833}
2834```
2835
2836## Preview tabs
2837
2838- Description:
2839  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. \
2840   There are several ways to convert a preview tab into a regular tab:
2841
2842  - Double-clicking on the file
2843  - Double-clicking on the tab header
2844  - Using the {#action project_panel::OpenPermanent} action
2845  - Editing the file
2846  - Dragging the file to a different pane
2847
2848- Setting: `preview_tabs`
2849- Default:
2850
2851```json [settings]
2852"preview_tabs": {
2853  "enabled": true,
2854  "enable_preview_from_project_panel": true,
2855  "enable_preview_from_file_finder": false,
2856  "enable_preview_from_multibuffer": true,
2857  "enable_preview_multibuffer_from_code_navigation": false,
2858  "enable_preview_file_from_code_navigation": true,
2859  "enable_keep_preview_on_code_navigation": false,
2860}
2861```
2862
2863### Enable preview from project panel
2864
2865- Description: Determines whether to open files in preview mode when opened from the project panel with a single click.
2866- Setting: `enable_preview_from_project_panel`
2867- Default: `true`
2868
2869**Options**
2870
2871`boolean` values
2872
2873### Enable preview from file finder
2874
2875- Description: Determines whether to open files in preview mode when selected from the file finder.
2876- Setting: `enable_preview_from_file_finder`
2877- Default: `false`
2878
2879**Options**
2880
2881`boolean` values
2882
2883### Enable preview from multibuffer
2884
2885- Description: Determines whether to open files in preview mode when opened from a multibuffer.
2886- Setting: `enable_preview_from_multibuffer`
2887- Default: `true`
2888
2889**Options**
2890
2891`boolean` values
2892
2893### Enable preview multibuffer from code navigation
2894
2895- Description: Determines whether to open tabs in preview mode when code navigation is used to open a multibuffer.
2896- Setting: `enable_preview_multibuffer_from_code_navigation`
2897- Default: `false`
2898
2899**Options**
2900
2901`boolean` values
2902
2903### Enable preview file from code navigation
2904
2905- Description: Determines whether to open tabs in preview mode when code navigation is used to open a single file.
2906- Setting: `enable_preview_file_from_code_navigation`
2907- Default: `true`
2908
2909**Options**
2910
2911`boolean` values
2912
2913### Enable keep preview on code navigation
2914
2915- Description: Determines whether to keep tabs in preview mode when code navigation is used to navigate away from them. If `enable_preview_file_from_code_navigation` or `enable_preview_multibuffer_from_code_navigation` is also true, the new tab may replace the existing one.
2916- Setting: `enable_keep_preview_on_code_navigation`
2917- Default: `false`
2918
2919**Options**
2920
2921`boolean` values
2922
2923## File Finder
2924
2925### File Icons
2926
2927- Description: Whether to show file icons in the file finder.
2928- Setting: `file_icons`
2929- Default: `true`
2930
2931### Modal Max Width
2932
2933- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
2934- Setting: `modal_max_width`
2935- Default: `small`
2936
2937### Skip Focus For Active In Search
2938
2939- Description: Determines whether the file finder should skip focus for the active file in search results.
2940- Setting: `skip_focus_for_active_in_search`
2941- Default: `true`
2942
2943## Pane Split Direction Horizontal
2944
2945- Description: The direction that you want to split panes horizontally
2946- Setting: `pane_split_direction_horizontal`
2947- Default: `"up"`
2948
2949**Options**
2950
29511. Split upward:
2952
2953```json [settings]
2954{
2955  "pane_split_direction_horizontal": "up"
2956}
2957```
2958
29592. Split downward:
2960
2961```json [settings]
2962{
2963  "pane_split_direction_horizontal": "down"
2964}
2965```
2966
2967## Pane Split Direction Vertical
2968
2969- Description: The direction that you want to split panes vertically
2970- Setting: `pane_split_direction_vertical`
2971- Default: `"left"`
2972
2973**Options**
2974
29751. Split to the left:
2976
2977```json [settings]
2978{
2979  "pane_split_direction_vertical": "left"
2980}
2981```
2982
29832. Split to the right:
2984
2985```json [settings]
2986{
2987  "pane_split_direction_vertical": "right"
2988}
2989```
2990
2991## Preferred Line Length
2992
2993- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
2994- Setting: `preferred_line_length`
2995- Default: `80`
2996
2997**Options**
2998
2999`integer` values
3000
3001## Private Files
3002
3003- Description: Globs to match against file paths to determine if a file is private
3004- Setting: `private_files`
3005- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/secrets.yml"]`
3006
3007**Options**
3008
3009List of `string` glob patterns
3010
3011## Projects Online By Default
3012
3013- Description: Whether or not to show the online projects view by default.
3014- Setting: `projects_online_by_default`
3015- Default: `true`
3016
3017**Options**
3018
3019`boolean` values
3020
3021## Read SSH Config
3022
3023- Description: Whether to read SSH configuration files
3024- Setting: `read_ssh_config`
3025- Default: `true`
3026
3027**Options**
3028
3029`boolean` values
3030
3031## Redact Private Values
3032
3033- Description: Hide the values of variables from visual display in private files
3034- Setting: `redact_private_values`
3035- Default: `false`
3036
3037**Options**
3038
3039`boolean` values
3040
3041## Relative Line Numbers
3042
3043- Description: Whether to show relative line numbers in the gutter
3044- Setting: `relative_line_numbers`
3045- Default: `"disabled"`
3046
3047**Options**
3048
30491. Show relative line numbers in the gutter whilst counting wrapped lines as one line:
3050
3051```json [settings]
3052{
3053  "relative_line_numbers": "enabled"
3054}
3055```
3056
30572. Show relative line numbers in the gutter, including wrapped lines in the counting:
3058
3059```json [settings]
3060{
3061  "relative_line_numbers": "wrapped"
3062}
3063```
3064
30652. Do not use relative line numbers:
3066
3067```json [settings]
3068{
3069  "relative_line_numbers": "disabled"
3070}
3071```
3072
3073## Remove Trailing Whitespace On Save
3074
3075- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
3076- Setting: `remove_trailing_whitespace_on_save`
3077- Default: `true`
3078
3079**Options**
3080
3081`boolean` values
3082
3083## Resize All Panels In Dock
3084
3085- Description: Whether to resize all the panels in a dock when resizing the dock. Can be a combination of "left", "right" and "bottom".
3086- Setting: `resize_all_panels_in_dock`
3087- Default: `["left"]`
3088
3089**Options**
3090
3091List of strings containing any combination of:
3092
3093- `"left"`: Resize left dock panels together
3094- `"right"`: Resize right dock panels together
3095- `"bottom"`: Resize bottom dock panels together
3096
3097## Restore on File Reopen
3098
3099- Description: Whether to attempt to restore previous file's state when opening it again. The state is stored per pane.
3100- Setting: `restore_on_file_reopen`
3101- Default: `true`
3102
3103**Options**
3104
3105`boolean` values
3106
3107## Restore on Startup
3108
3109- Description: Controls session restoration on startup.
3110- Setting: `restore_on_startup`
3111- Default: `last_session`
3112
3113**Options**
3114
31151. Restore all workspaces that were open when quitting Zed:
3116
3117```json [settings]
3118{
3119  "restore_on_startup": "last_session"
3120}
3121```
3122
31232. Restore the workspace that was closed last:
3124
3125```json [settings]
3126{
3127  "restore_on_startup": "last_workspace"
3128}
3129```
3130
31313. Always start with an empty editor:
3132
3133```json [settings]
3134{
3135  "restore_on_startup": "empty_tab"
3136}
3137```
3138
31394. Always start with the welcome launchpad:
3140
3141```json [settings]
3142{
3143  "restore_on_startup": "launchpad"
3144}
3145```
3146
3147## Scroll Beyond Last Line
3148
3149- Description: Whether the editor will scroll beyond the last line
3150- Setting: `scroll_beyond_last_line`
3151- Default: `"one_page"`
3152
3153**Options**
3154
31551. Scroll one page beyond the last line by one page:
3156
3157```json [settings]
3158{
3159  "scroll_beyond_last_line": "one_page"
3160}
3161```
3162
31632. The editor will scroll beyond the last line by the same amount of lines as `vertical_scroll_margin`:
3164
3165```json [settings]
3166{
3167  "scroll_beyond_last_line": "vertical_scroll_margin"
3168}
3169```
3170
31713. The editor will not scroll beyond the last line:
3172
3173```json [settings]
3174{
3175  "scroll_beyond_last_line": "off"
3176}
3177```
3178
3179**Options**
3180
3181`boolean` values
3182
3183## Scroll Sensitivity
3184
3185- Description: Scroll sensitivity multiplier. This multiplier is applied to both the horizontal and vertical delta values while scrolling.
3186- Setting: `scroll_sensitivity`
3187- Default: `1.0`
3188
3189**Options**
3190
3191Positive `float` values
3192
3193### Fast Scroll Sensitivity
3194
3195- 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.
3196- Setting: `fast_scroll_sensitivity`
3197- Default: `4.0`
3198
3199**Options**
3200
3201Positive `float` values
3202
3203### Horizontal Scroll Margin
3204
3205- Description: The number of characters to keep on either side when scrolling with the mouse
3206- Setting: `horizontal_scroll_margin`
3207- Default: `5`
3208
3209**Options**
3210
3211Non-negative `integer` values
3212
3213### Vertical Scroll Margin
3214
3215- Description: The number of lines to keep above/below the cursor when scrolling with the keyboard
3216- Setting: `vertical_scroll_margin`
3217- Default: `3`
3218
3219**Options**
3220
3221Non-negative `integer` values
3222
3223## Search
3224
3225- Description: Search options to enable by default when opening new project and buffer searches.
3226- Setting: `search`
3227- Default:
3228
3229```json [settings]
3230"search": {
3231  "button": true,
3232  "whole_word": false,
3233  "case_sensitive": false,
3234  "include_ignored": false,
3235  "regex": false,
3236  "center_on_match": false
3237},
3238```
3239
3240### Button
3241
3242- Description: Whether to show the project search button in the status bar.
3243- Setting: `button`
3244- Default: `true`
3245
3246### Whole Word
3247
3248- Description: Whether to only match on whole words.
3249- Setting: `whole_word`
3250- Default: `false`
3251
3252### Case Sensitive
3253
3254- Description: Whether to match case sensitively. This setting affects both
3255  searches and editor actions like "Select Next Occurrence", "Select Previous
3256  Occurrence", and "Select All Occurrences".
3257- Setting: `case_sensitive`
3258- Default: `false`
3259
3260### Include Ignore
3261
3262- Description: Whether to include gitignored files in search results.
3263- Setting: `include_ignored`
3264- Default: `false`
3265
3266### Regex
3267
3268- Description: Whether to interpret the search query as a regular expression.
3269- Setting: `regex`
3270- Default: `false`
3271
3272### Center On Match
3273
3274- Description: Whether to center the cursor on each search match when navigating.
3275- Setting: `center_on_match`
3276- Default: `false`
3277
3278## Search Wrap
3279
3280- Description: If `search_wrap` is disabled, search result do not wrap around the end of the file
3281- Setting: `search_wrap`
3282- Default: `true`
3283
3284## Center on Match
3285
3286- Description: If `center_on_match` is enabled, the editor will center the cursor on the current match when searching.
3287- Setting: `center_on_match`
3288- Default: `false`
3289
3290## Seed Search Query From Cursor
3291
3292- Description: When to populate a new search's query based on the text under the cursor.
3293- Setting: `seed_search_query_from_cursor`
3294- Default: `always`
3295
3296**Options**
3297
32981. `always` always populate the search query with the word under the cursor
32992. `selection` only populate the search query when there is text selected
33003. `never` never populate the search query
3301
3302## Use Smartcase Search
3303
3304- 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. \
3305  This applies to both in-file searches and project-wide searches.
3306- Setting: `use_smartcase_search`
3307- Default: `false`
3308
3309**Options**
3310
3311`boolean` values
3312
3313Examples:
3314
3315- Searching for "function" would match "function", "Function", "FUNCTION", etc.
3316- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
3317
3318## Show Call Status Icon
3319
3320- Description: Whether or not to show the call status icon in the status bar.
3321- Setting: `show_call_status_icon`
3322- Default: `true`
3323
3324**Options**
3325
3326`boolean` values
3327
3328## Completions
3329
3330- Description: Controls how completions are processed for this language.
3331- Setting: `completions`
3332- Default:
3333
3334```json [settings]
3335{
3336  "completions": {
3337    "words": "fallback",
3338    "words_min_length": 3,
3339    "lsp": true,
3340    "lsp_fetch_timeout_ms": 0,
3341    "lsp_insert_mode": "replace_suffix"
3342  }
3343}
3344```
3345
3346### Words
3347
3348- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
3349- Setting: `words`
3350- Default: `fallback`
3351
3352**Options**
3353
33541. `enabled` - Always fetch document's words for completions along with LSP completions
33552. `fallback` - Only if LSP response errors or times out, use document's words to show completions
33563. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
3357
3358### Min Words Query Length
3359
3360- Description: Minimum number of characters required to automatically trigger word-based completions.
3361  Before that value, it's still possible to trigger the words-based completion manually with the corresponding editor command.
3362- Setting: `words_min_length`
3363- Default: `3`
3364
3365**Options**
3366
3367Positive integer values
3368
3369### LSP
3370
3371- Description: Whether to fetch LSP completions or not.
3372- Setting: `lsp`
3373- Default: `true`
3374
3375**Options**
3376
3377`boolean` values
3378
3379### LSP Fetch Timeout (ms)
3380
3381- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
3382- Setting: `lsp_fetch_timeout_ms`
3383- Default: `0`
3384
3385**Options**
3386
3387`integer` values representing milliseconds
3388
3389### LSP Insert Mode
3390
3391- Description: Controls what range to replace when accepting LSP completions.
3392- Setting: `lsp_insert_mode`
3393- Default: `replace_suffix`
3394
3395**Options**
3396
33971. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
33982. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
33993. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
34004. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
3401
3402## Show Completions On Input
3403
3404- Description: Whether or not to show completions as you type.
3405- Setting: `show_completions_on_input`
3406- Default: `true`
3407
3408**Options**
3409
3410`boolean` values
3411
3412## Show Completion Documentation
3413
3414- Description: Whether to display inline and alongside documentation for items in the completions menu.
3415- Setting: `show_completion_documentation`
3416- Default: `true`
3417
3418**Options**
3419
3420`boolean` values
3421
3422## Show Edit Predictions
3423
3424- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
3425- Setting: `show_edit_predictions`
3426- Default: `true`
3427
3428**Options**
3429
3430`boolean` values
3431
3432## Show Whitespaces
3433
3434- Description: Whether or not to render whitespace characters in the editor.
3435- Setting: `show_whitespaces`
3436- Default: `selection`
3437
3438**Options**
3439
34401. `all`
34412. `selection`
34423. `none`
34434. `boundary`
3444
3445## Whitespace Map
3446
3447- Description: Specify the characters used to render whitespace when show_whitespaces is enabled.
3448- Setting: `whitespace_map`
3449- Default:
3450
3451```json [settings]
3452{
3453  "whitespace_map": {
3454    "space": "•",
3455    "tab": "→"
3456  }
3457}
3458```
3459
3460## Soft Wrap
3461
3462- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
3463- Setting: `soft_wrap`
3464- Default: `none`
3465
3466**Options**
3467
34681. `none` to avoid wrapping generally, unless the line is too long
34692. `prefer_line` (deprecated, same as `none`)
34703. `editor_width` to wrap lines that overflow the editor width
34714. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
34725. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
3473
3474## Show Wrap Guides
3475
3476- 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.
3477- Setting: `show_wrap_guides`
3478- Default: `true`
3479
3480**Options**
3481
3482`boolean` values
3483
3484## Use On Type Format
3485
3486- Description: Whether to use additional LSP queries to format (and amend) the code after every "trigger" symbol input, defined by LSP server capabilities
3487- Setting: `use_on_type_format`
3488- Default: `true`
3489
3490**Options**
3491
3492`boolean` values
3493
3494## Use Auto Surround
3495
3496- 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 ().
3497- Setting: `use_auto_surround`
3498- Default: `true`
3499
3500**Options**
3501
3502`boolean` values
3503
3504## Use System Path Prompts
3505
3506- 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.
3507- Setting: `use_system_path_prompts`
3508- Default: `true`
3509
3510**Options**
3511
3512`boolean` values
3513
3514## Use System Prompts
3515
3516- 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.
3517- Setting: `use_system_prompts`
3518- Default: `true`
3519
3520**Options**
3521
3522`boolean` values
3523
3524## Wrap Guides (Vertical Rulers)
3525
3526- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
3527- Setting: `wrap_guides`
3528- Default: []
3529
3530**Options**
3531
3532List of `integer` column numbers
3533
3534## Tab Size
3535
3536- Description: The number of spaces to use for each tab character.
3537- Setting: `tab_size`
3538- Default: `4`
3539
3540**Options**
3541
3542`integer` values
3543
3544## Tasks
3545
3546- Description: Configuration for tasks that can be run within Zed
3547- Setting: `tasks`
3548- Default:
3549
3550```json [settings]
3551{
3552  "tasks": {
3553    "variables": {},
3554    "enabled": true,
3555    "prefer_lsp": false
3556  }
3557}
3558```
3559
3560**Options**
3561
3562- `variables`: Custom variables for task configuration
3563- `enabled`: Whether tasks are enabled
3564- `prefer_lsp`: Whether to prefer LSP-provided tasks over Zed language extension ones
3565
3566## Telemetry
3567
3568- Description: Control what info is collected by Zed.
3569- Setting: `telemetry`
3570- Default:
3571
3572```json [settings]
3573"telemetry": {
3574  "diagnostics": true,
3575  "metrics": true
3576},
3577```
3578
3579**Options**
3580
3581### Diagnostics
3582
3583- Description: Setting for sending debug-related data, such as crash reports.
3584- Setting: `diagnostics`
3585- Default: `true`
3586
3587**Options**
3588
3589`boolean` values
3590
3591### Metrics
3592
3593- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
3594- Setting: `metrics`
3595- Default: `true`
3596
3597**Options**
3598
3599`boolean` values
3600
3601## Terminal
3602
3603- Description: Configuration for the terminal.
3604- Setting: `terminal`
3605- Default:
3606
3607```json [settings]
3608{
3609  "terminal": {
3610    "alternate_scroll": "off",
3611    "blinking": "terminal_controlled",
3612    "copy_on_select": false,
3613    "keep_selection_on_copy": true,
3614    "dock": "bottom",
3615    "default_width": 640,
3616    "default_height": 320,
3617    "detect_venv": {
3618      "on": {
3619        "directories": [".env", "env", ".venv", "venv"],
3620        "activate_script": "default"
3621      }
3622    },
3623    "env": {},
3624    "font_family": null,
3625    "font_features": null,
3626    "font_size": null,
3627    "line_height": "comfortable",
3628    "minimum_contrast": 45,
3629    "option_as_meta": false,
3630    "button": true,
3631    "shell": "system",
3632    "scroll_multiplier": 3.0,
3633    "toolbar": {
3634      "breadcrumbs": false
3635    },
3636    "working_directory": "current_project_directory",
3637    "scrollbar": {
3638      "show": null
3639    }
3640  }
3641}
3642```
3643
3644### Terminal: Dock
3645
3646- Description: Control the position of the dock
3647- Setting: `dock`
3648- Default: `bottom`
3649
3650**Options**
3651
3652`"bottom"`, `"left"` or `"right"`
3653
3654### Terminal: Alternate Scroll
3655
3656- 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.
3657- Setting: `alternate_scroll`
3658- Default: `off`
3659
3660**Options**
3661
36621. Default alternate scroll mode to off
3663
3664```json [settings]
3665{
3666  "terminal": {
3667    "alternate_scroll": "off"
3668  }
3669}
3670```
3671
36722. Default alternate scroll mode to on
3673
3674```json [settings]
3675{
3676  "terminal": {
3677    "alternate_scroll": "on"
3678  }
3679}
3680```
3681
3682### Terminal: Blinking
3683
3684- Description: Set the cursor blinking behavior in the terminal
3685- Setting: `blinking`
3686- Default: `terminal_controlled`
3687
3688**Options**
3689
36901. Never blink the cursor, ignore the terminal mode
3691
3692```json [settings]
3693{
3694  "terminal": {
3695    "blinking": "off"
3696  }
3697}
3698```
3699
37002. Default the cursor blink to off, but allow the terminal to turn blinking on
3701
3702```json [settings]
3703{
3704  "terminal": {
3705    "blinking": "terminal_controlled"
3706  }
3707}
3708```
3709
37103. Always blink the cursor, ignore the terminal mode
3711
3712```json [settings]
3713{
3714  "terminal": {
3715    "blinking": "on"
3716  }
3717}
3718```
3719
3720### Terminal: Copy On Select
3721
3722- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
3723- Setting: `copy_on_select`
3724- Default: `false`
3725
3726**Options**
3727
3728`boolean` values
3729
3730**Example**
3731
3732```json [settings]
3733{
3734  "terminal": {
3735    "copy_on_select": true
3736  }
3737}
3738```
3739
3740### Terminal: Cursor Shape
3741
3742- Description: Controls the visual shape of the cursor in the terminal. When not explicitly set, it defaults to a block shape.
3743- Setting: `cursor_shape`
3744- Default: `null` (defaults to block)
3745
3746**Options**
3747
37481. A block that surrounds the following character
3749
3750```json [settings]
3751{
3752  "terminal": {
3753    "cursor_shape": "block"
3754  }
3755}
3756```
3757
37582. A vertical bar
3759
3760```json [settings]
3761{
3762  "terminal": {
3763    "cursor_shape": "bar"
3764  }
3765}
3766```
3767
37683. An underline / underscore that runs along the following character
3769
3770```json [settings]
3771{
3772  "terminal": {
3773    "cursor_shape": "underline"
3774  }
3775}
3776```
3777
37784. A box drawn around the following character
3779
3780```json [settings]
3781{
3782  "terminal": {
3783    "cursor_shape": "hollow"
3784  }
3785}
3786```
3787
3788### Terminal: Keep Selection On Copy
3789
3790- Description: Whether or not to keep the selection in the terminal after copying text.
3791- Setting: `keep_selection_on_copy`
3792- Default: `true`
3793
3794**Options**
3795
3796`boolean` values
3797
3798**Example**
3799
3800```json [settings]
3801{
3802  "terminal": {
3803    "keep_selection_on_copy": false
3804  }
3805}
3806```
3807
3808### Terminal: Env
3809
3810- 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
3811- Setting: `env`
3812- Default: `{}`
3813
3814**Example**
3815
3816```json [settings]
3817{
3818  "terminal": {
3819    "env": {
3820      "ZED": "1",
3821      "KEY": "value1:value2"
3822    }
3823  }
3824}
3825```
3826
3827### Terminal: Font Size
3828
3829- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
3830- Setting: `font_size`
3831- Default: `null`
3832
3833**Options**
3834
3835`integer` values
3836
3837```json [settings]
3838{
3839  "terminal": {
3840    "font_size": 15
3841  }
3842}
3843```
3844
3845### Terminal: Font Family
3846
3847- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
3848- Setting: `font_family`
3849- Default: `null`
3850
3851**Options**
3852
3853The name of any font family installed on the user's system
3854
3855```json [settings]
3856{
3857  "terminal": {
3858    "font_family": "Berkeley Mono"
3859  }
3860}
3861```
3862
3863### Terminal: Font Features
3864
3865- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
3866- Setting: `font_features`
3867- Default: `null`
3868- Platform: macOS and Windows.
3869
3870**Options**
3871
3872See Buffer Font Features
3873
3874```json [settings]
3875{
3876  "terminal": {
3877    "font_features": {
3878      "calt": false
3879      // See Buffer Font Features for more features
3880    }
3881  }
3882}
3883```
3884
3885### Terminal: Line Height
3886
3887- Description: Set the terminal's line height.
3888- Setting: `line_height`
3889- Default: `standard`
3890
3891**Options**
3892
38931. Use a line height that's `comfortable` for reading, 1.618.
3894
3895```json [settings]
3896{
3897  "terminal": {
3898    "line_height": "comfortable"
3899  }
3900}
3901```
3902
39032. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters. (default)
3904
3905```json [settings]
3906{
3907  "terminal": {
3908    "line_height": "standard"
3909  }
3910}
3911```
3912
39133.  Use a custom line height.
3914
3915```json [settings]
3916{
3917  "terminal": {
3918    "line_height": {
3919      "custom": 2
3920    }
3921  }
3922}
3923```
3924
3925### Terminal: Minimum Contrast
3926
3927- 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.
3928- Setting: `minimum_contrast`
3929- Default: `45`
3930
3931**Options**
3932
3933`integer` values from 0 to 106. Common recommended values:
3934
3935- `0`: No contrast adjustment
3936- `45`: Minimum for large fluent text (default)
3937- `60`: Minimum for other content text
3938- `75`: Minimum for body text
3939- `90`: Preferred for body text
3940
3941```json [settings]
3942{
3943  "terminal": {
3944    "minimum_contrast": 45
3945  }
3946}
3947```
3948
3949### Terminal: Option As Meta
3950
3951- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
3952- Setting: `option_as_meta`
3953- Default: `false`
3954
3955**Options**
3956
3957`boolean` values
3958
3959```json [settings]
3960{
3961  "terminal": {
3962    "option_as_meta": true
3963  }
3964}
3965```
3966
3967### Terminal: Shell
3968
3969- Description: What shell to use when launching the terminal.
3970- Setting: `shell`
3971- Default: `system`
3972
3973**Options**
3974
39751. Use the system's default terminal configuration (usually the `/etc/passwd` file).
3976
3977```json [settings]
3978{
3979  "terminal": {
3980    "shell": "system"
3981  }
3982}
3983```
3984
39852. A program to launch:
3986
3987```json [settings]
3988{
3989  "terminal": {
3990    "shell": {
3991      "program": "sh"
3992    }
3993  }
3994}
3995```
3996
39973. A program with arguments:
3998
3999```json [settings]
4000{
4001  "terminal": {
4002    "shell": {
4003      "with_arguments": {
4004        "program": "/bin/bash",
4005        "args": ["--login"]
4006      }
4007    }
4008  }
4009}
4010```
4011
4012## Terminal: Detect Virtual Environments {#terminal-detect_venv}
4013
4014- 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.
4015- Setting: `detect_venv`
4016- Default:
4017
4018```json [settings]
4019{
4020  "terminal": {
4021    "detect_venv": {
4022      "on": {
4023        // Default directories to search for virtual environments, relative
4024        // to the current working directory. We recommend overriding this
4025        // in your project's settings, rather than globally.
4026        "directories": [".env", "env", ".venv", "venv"],
4027        // Can also be `csh`, `fish`, and `nushell`
4028        "activate_script": "default"
4029      }
4030    }
4031  }
4032}
4033```
4034
4035Disable with:
4036
4037```json [settings]
4038{
4039  "terminal": {
4040    "detect_venv": "off"
4041  }
4042}
4043```
4044
4045### Terminal: Scroll Multiplier
4046
4047- Description: The multiplier for scrolling speed in the terminal when using mouse wheel or trackpad.
4048- Setting: `scroll_multiplier`
4049- Default: `1.0`
4050
4051**Options**
4052
4053Positive floating point values. Values less than or equal to 0 will be clamped to a minimum of 0.01.
4054
4055**Example**
4056
4057```json
4058{
4059  "terminal": {
4060    "scroll_multiplier": 5.0
4061  }
4062}
4063```
4064
4065## Terminal: Toolbar
4066
4067- Description: Whether or not to show various elements in the terminal toolbar.
4068- Setting: `toolbar`
4069- Default:
4070
4071```json [settings]
4072{
4073  "terminal": {
4074    "toolbar": {
4075      "breadcrumbs": false
4076    }
4077  }
4078}
4079```
4080
4081**Options**
4082
4083At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
4084
4085If the terminal title is empty, the breadcrumbs won't be shown.
4086
4087The shell running in the terminal needs to be configured to emit the title.
4088
4089Example command to set the title: `echo -e "\e]2;New Title\007";`
4090
4091### Terminal: Button
4092
4093- Description: Control to show or hide the terminal button in the status bar
4094- Setting: `button`
4095- Default: `true`
4096
4097**Options**
4098
4099`boolean` values
4100
4101```json [settings]
4102{
4103  "terminal": {
4104    "button": false
4105  }
4106}
4107```
4108
4109### Terminal: Working Directory
4110
4111- Description: What working directory to use when launching the terminal.
4112- Setting: `working_directory`
4113- Default: `"current_project_directory"`
4114
4115**Options**
4116
41171. Use the current file's project directory. Fallback to the first project directory strategy if unsuccessful.
4118
4119```json [settings]
4120{
4121  "terminal": {
4122    "working_directory": "current_project_directory"
4123  }
4124}
4125```
4126
41272. Use the first project in this workspace's directory. Fallback to using this platform's home directory.
4128
4129```json [settings]
4130{
4131  "terminal": {
4132    "working_directory": "first_project_directory"
4133  }
4134}
4135```
4136
41373. Always use this platform's home directory if it can be found.
4138
4139```json [settings]
4140{
4141  "terminal": {
4142    "working_directory": "always_home"
4143  }
4144}
4145```
4146
41474. 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.
4148
4149```json [settings]
4150{
4151  "terminal": {
4152    "working_directory": {
4153      "always": {
4154        "directory": "~/zed/projects/"
4155      }
4156    }
4157  }
4158}
4159```
4160
4161### Terminal: Path Hyperlink Regexes
4162
4163- Description: Regexes used to identify path hyperlinks. The regexes can be specified in two forms - a single regex string, or an array of strings (which will be collected into a single multi-line regex string).
4164- Setting: `path_hyperlink_regexes`
4165- Default:
4166
4167```json [settings]
4168{
4169  "terminal": {
4170    "path_hyperlink_regexes": [
4171      // Python-style diagnostics
4172      "File \"(?<path>[^\"]+)\", line (?<line>[0-9]+)",
4173      // Common path syntax with optional line, column, description, trailing punctuation, or
4174      // surrounding symbols or quotes
4175      [
4176        "(?x)",
4177        "# optionally starts with 0-2 opening prefix symbols",
4178        "[({\\[<]{0,2}",
4179        "# which may be followed by an opening quote",
4180        "(?<quote>[\"'`])?",
4181        "# `path` is the shortest sequence of any non-space character",
4182        "(?<link>(?<path>[^ ]+?",
4183        "    # which may end with a line and optionally a column,",
4184        "    (?<line_column>:+[0-9]+(:[0-9]+)?|:?\\([0-9]+([,:][0-9]+)?\\))?",
4185        "))",
4186        "# which must be followed by a matching quote",
4187        "(?(<quote>)\\k<quote>)",
4188        "# and optionally a single closing symbol",
4189        "[)}\\]>]?",
4190        "# if line/column matched, may be followed by a description",
4191        "(?(<line_column>):[^ 0-9][^ ]*)?",
4192        "# which may be followed by trailing punctuation",
4193        "[.,:)}\\]>]*",
4194        "# and always includes trailing whitespace or end of line",
4195        "([ ]+|$)"
4196      ]
4197    ]
4198  }
4199}
4200```
4201
4202### Terminal: Path Hyperlink Timeout (ms)
4203
4204- Description: Maximum time to search for a path hyperlink. When set to 0, path hyperlinks are disabled.
4205- Setting: `path_hyperlink_timeout_ms`
4206- Default: `1`
4207
4208## REPL
4209
4210- Description: Repl settings.
4211- Setting: `repl`
4212- Default:
4213
4214```json [settings]
4215"repl": {
4216  // Maximum number of columns to keep in REPL's scrollback buffer.
4217  // Clamped with [20, 512] range.
4218  "max_columns": 128,
4219  // Maximum number of lines to keep in REPL's scrollback buffer.
4220  // Clamped with [4, 256] range.
4221  "max_lines": 32
4222},
4223```
4224
4225## Theme
4226
4227- 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.
4228- Setting: `theme`
4229- Default: `One Dark`
4230
4231### Theme Object
4232
4233- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
4234- Setting: `theme`
4235- Default:
4236
4237```json [settings]
4238"theme": {
4239  "mode": "system",
4240  "dark": "One Dark",
4241  "light": "One Light"
4242},
4243```
4244
4245### Mode
4246
4247- Description: Specify theme mode.
4248- Setting: `mode`
4249- Default: `system`
4250
4251**Options**
4252
42531. Set the theme to dark mode
4254
4255```json [settings]
4256{
4257  "mode": "dark"
4258}
4259```
4260
42612. Set the theme to light mode
4262
4263```json [settings]
4264{
4265  "mode": "light"
4266}
4267```
4268
42693. Set the theme to system mode
4270
4271```json [settings]
4272{
4273  "mode": "system"
4274}
4275```
4276
4277### Dark
4278
4279- Description: The name of the dark Zed theme to use for the UI.
4280- Setting: `dark`
4281- Default: `One Dark`
4282
4283**Options**
4284
4285Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
4286
4287### Light
4288
4289- Description: The name of the light Zed theme to use for the UI.
4290- Setting: `light`
4291- Default: `One Light`
4292
4293**Options**
4294
4295Run the {#action theme_selector::Toggle} action in the command palette to see a current list of valid themes names.
4296
4297## Title Bar
4298
4299- Description: Whether or not to show various elements in the title bar
4300- Setting: `title_bar`
4301- Default:
4302
4303```json [settings]
4304"title_bar": {
4305  "show_branch_icon": false,
4306  "show_branch_name": true,
4307  "show_project_items": true,
4308  "show_onboarding_banner": true,
4309  "show_user_picture": true,
4310  "show_user_menu": true,
4311  "show_sign_in": true,
4312  "show_menus": false
4313}
4314```
4315
4316**Options**
4317
4318- `show_branch_icon`: Whether to show the branch icon beside branch switcher in the titlebar
4319- `show_branch_name`: Whether to show the branch name button in the titlebar
4320- `show_project_items`: Whether to show the project host and name in the titlebar
4321- `show_onboarding_banner`: Whether to show onboarding banners in the titlebar
4322- `show_user_picture`: Whether to show user picture in the titlebar
4323- `show_user_menu`: Whether to show the user menu button in the titlebar (the one that displays your avatar by default and contains options like Settings, Keymap, Themes, etc.)
4324- `show_sign_in`: Whether to show the sign in button in the titlebar
4325- `show_menus`: Whether to show the menus in the titlebar
4326
4327## Vim
4328
4329- Description: Whether or not to enable vim mode.
4330- Setting: `vim_mode`
4331- Default: `false`
4332
4333## When Closing With No Tabs
4334
4335- Description: Whether the window should be closed when using 'close active item' on a window with no tabs
4336- Setting: `when_closing_with_no_tabs`
4337- Default: `"platform_default"`
4338
4339**Options**
4340
43411. Use platform default behavior:
4342
4343```json [settings]
4344{
4345  "when_closing_with_no_tabs": "platform_default"
4346}
4347```
4348
43492. Always close the window:
4350
4351```json [settings]
4352{
4353  "when_closing_with_no_tabs": "close_window"
4354}
4355```
4356
43573. Never close the window:
4358
4359```json [settings]
4360{
4361  "when_closing_with_no_tabs": "keep_window_open"
4362}
4363```
4364
4365## Project Panel
4366
4367- Description: Customize project panel
4368- Setting: `project_panel`
4369- Default:
4370
4371```json [settings]
4372{
4373  "project_panel": {
4374    "button": true,
4375    "default_width": 240,
4376    "dock": "left",
4377    "entry_spacing": "comfortable",
4378    "file_icons": true,
4379    "folder_icons": true,
4380    "git_status": true,
4381    "indent_size": 20,
4382    "auto_reveal_entries": true,
4383    "auto_fold_dirs": true,
4384    "drag_and_drop": true,
4385    "scrollbar": {
4386      "show": null
4387    },
4388    "sticky_scroll": true,
4389    "show_diagnostics": "all",
4390    "indent_guides": {
4391      "show": "always"
4392    },
4393    "sort_mode": "directories_first",
4394    "hide_root": false,
4395    "hide_hidden": false,
4396    "starts_open": true,
4397    "auto_open": {
4398      "on_create": true,
4399      "on_paste": true,
4400      "on_drop": true
4401    }
4402  }
4403}
4404```
4405
4406### Dock
4407
4408- Description: Control the position of the dock
4409- Setting: `dock`
4410- Default: `left`
4411
4412**Options**
4413
44141. Default dock position to left
4415
4416```json [settings]
4417{
4418  "dock": "left"
4419}
4420```
4421
44222. Default dock position to right
4423
4424```json [settings]
4425{
4426  "dock": "right"
4427}
4428```
4429
4430### Entry Spacing
4431
4432- Description: Spacing between worktree entries
4433- Setting: `entry_spacing`
4434- Default: `comfortable`
4435
4436**Options**
4437
44381. Comfortable entry spacing
4439
4440```json [settings]
4441{
4442  "entry_spacing": "comfortable"
4443}
4444```
4445
44462. Standard entry spacing
4447
4448```json [settings]
4449{
4450  "entry_spacing": "standard"
4451}
4452```
4453
4454### Git Status
4455
4456- Description: Indicates newly created and updated files
4457- Setting: `git_status`
4458- Default: `true`
4459
4460**Options**
4461
44621. Default enable git status
4463
4464```json [settings]
4465{
4466  "git_status": true
4467}
4468```
4469
44702. Default disable git status
4471
4472```json [settings]
4473{
4474  "git_status": false
4475}
4476```
4477
4478### Default Width
4479
4480- Description: Customize default width taken by project panel
4481- Setting: `default_width`
4482- Default: `240`
4483
4484**Options**
4485
4486`float` values
4487
4488### Auto Reveal Entries
4489
4490- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
4491- Setting: `auto_reveal_entries`
4492- Default: `true`
4493
4494**Options**
4495
44961. Enable auto reveal entries
4497
4498```json [settings]
4499{
4500  "auto_reveal_entries": true
4501}
4502```
4503
45042. Disable auto reveal entries
4505
4506```json [settings]
4507{
4508  "auto_reveal_entries": false
4509}
4510```
4511
4512### Auto Fold Dirs
4513
4514- Description: Whether to fold directories automatically when directory has only one directory inside.
4515- Setting: `auto_fold_dirs`
4516- Default: `true`
4517
4518**Options**
4519
45201. Enable auto fold dirs
4521
4522```json [settings]
4523{
4524  "auto_fold_dirs": true
4525}
4526```
4527
45282. Disable auto fold dirs
4529
4530```json [settings]
4531{
4532  "auto_fold_dirs": false
4533}
4534```
4535
4536### Indent Size
4537
4538- Description: Amount of indentation (in pixels) for nested items.
4539- Setting: `indent_size`
4540- Default: `20`
4541
4542### Indent Guides: Show
4543
4544- Description: Whether to show indent guides in the project panel.
4545- Setting: `indent_guides`
4546- Default:
4547
4548```json [settings]
4549"indent_guides": {
4550  "show": "always"
4551}
4552```
4553
4554**Options**
4555
45561. Show indent guides in the project panel
4557
4558```json [settings]
4559{
4560  "indent_guides": {
4561    "show": "always"
4562  }
4563}
4564```
4565
45662. Hide indent guides in the project panel
4567
4568```json [settings]
4569{
4570  "indent_guides": {
4571    "show": "never"
4572  }
4573}
4574```
4575
4576### Scrollbar: Show
4577
4578- 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.
4579- Setting: `scrollbar`
4580- Default:
4581
4582```json [settings]
4583"scrollbar": {
4584  "show": null
4585}
4586```
4587
4588**Options**
4589
45901. Show scrollbar in the project panel
4591
4592```json [settings]
4593{
4594  "scrollbar": {
4595    "show": "always"
4596  }
4597}
4598```
4599
46002. Hide scrollbar in the project panel
4601
4602```json [settings]
4603{
4604  "scrollbar": {
4605    "show": "never"
4606  }
4607}
4608```
4609
4610### Sort Mode
4611
4612- Description: Sort order for entries in the project panel
4613- Setting: `sort_mode`
4614- Default: `directories_first`
4615
4616**Options**
4617
46181. Show directories first, then files
4619
4620```json [settings]
4621{
4622  "sort_mode": "directories_first"
4623}
4624```
4625
46262. Mix directories and files together
4627
4628```json [settings]
4629{
4630  "sort_mode": "mixed"
4631}
4632```
4633
46343. Show files first, then directories
4635
4636```json [settings]
4637{
4638  "sort_mode": "files_first"
4639}
4640```
4641
4642### Auto Open
4643
4644- Description: Control whether files are opened automatically after different creation flows in the project panel.
4645- Setting: `auto_open`
4646- Default:
4647
4648```json [settings]
4649"auto_open": {
4650  "on_create": true,
4651  "on_paste": true,
4652  "on_drop": true
4653}
4654```
4655
4656**Options**
4657
4658- `on_create`: Whether to automatically open newly created files in the editor.
4659- `on_paste`: Whether to automatically open files after pasting or duplicating them.
4660- `on_drop`: Whether to automatically open files dropped from external sources.
4661
4662## Agent
4663
4664Visit [the Configuration page](../ai/configuration.md) under the AI section to learn more about all the agent-related settings.
4665
4666## Collaboration Panel
4667
4668- Description: Customizations for the collaboration panel.
4669- Setting: `collaboration_panel`
4670- Default:
4671
4672```json [settings]
4673{
4674  "collaboration_panel": {
4675    "button": true,
4676    "dock": "left",
4677    "default_width": 240
4678  }
4679}
4680```
4681
4682**Options**
4683
4684- `button`: Whether to show the collaboration panel button in the status bar
4685- `dock`: Where to dock the collaboration panel. Can be `left` or `right`
4686- `default_width`: Default width of the collaboration panel
4687
4688## Debugger
4689
4690- Description: Configuration for debugger panel and settings
4691- Setting: `debugger`
4692- Default:
4693
4694```json [settings]
4695{
4696  "debugger": {
4697    "stepping_granularity": "line",
4698    "save_breakpoints": true,
4699    "dock": "bottom",
4700    "button": true
4701  }
4702}
4703```
4704
4705See the [debugger page](../debugger.md) for more information about debugging support within Zed.
4706
4707## Git Panel
4708
4709- Description: Setting to customize the behavior of the git panel.
4710- Setting: `git_panel`
4711- Default:
4712
4713```json [settings]
4714{
4715  "git_panel": {
4716    "button": true,
4717    "dock": "left",
4718    "default_width": 360,
4719    "status_style": "icon",
4720    "fallback_branch_name": "main",
4721    "sort_by_path": false,
4722    "collapse_untracked_diff": false,
4723    "scrollbar": {
4724      "show": null
4725    }
4726  }
4727}
4728```
4729
4730**Options**
4731
4732- `button`: Whether to show the git panel button in the status bar
4733- `dock`: Where to dock the git panel. Can be `left` or `right`
4734- `default_width`: Default width of the git panel
4735- `status_style`: How to display git status. Can be `label_color` or `icon`
4736- `fallback_branch_name`: What branch name to use if `init.defaultBranch` is not set
4737- `sort_by_path`: Whether to sort entries in the panel by path or by status (the default)
4738- `collapse_untracked_diff`: Whether to collapse untracked files in the diff panel
4739- `scrollbar`: When to show the scrollbar in the git panel
4740
4741## Git Hosting Providers
4742
4743- Description: Register self-hosted GitHub, GitLab, or Bitbucket instances so commit hashes, issue references, and permalinks resolve to the right host.
4744- Setting: `git_hosting_providers`
4745- Default: `[]`
4746
4747**Options**
4748
4749Each entry accepts:
4750
4751- `provider`: One of `github`, `gitlab`, or `bitbucket`
4752- `name`: Display name for the instance
4753- `base_url`: Base URL, e.g. `https://git.example.corp`
4754
4755You can define these in user or project settings; project settings are merged on top of user settings.
4756
4757```json [settings]
4758{
4759  "git_hosting_providers": [
4760    {
4761      "provider": "github",
4762      "name": "BigCorp GitHub",
4763      "base_url": "https://git.example.corp"
4764    }
4765  ]
4766}
4767```
4768
4769## Outline Panel
4770
4771- Description: Customize outline Panel
4772- Setting: `outline_panel`
4773- Default:
4774
4775```json [settings]
4776"outline_panel": {
4777  "button": true,
4778  "default_width": 300,
4779  "dock": "left",
4780  "file_icons": true,
4781  "folder_icons": true,
4782  "git_status": true,
4783  "indent_size": 20,
4784  "auto_reveal_entries": true,
4785  "auto_fold_dirs": true,
4786  "indent_guides": {
4787    "show": "always"
4788  },
4789  "scrollbar": {
4790    "show": null
4791  }
4792}
4793```
4794
4795## Calls
4796
4797- Description: Customize behavior when participating in a call
4798- Setting: `calls`
4799- Default:
4800
4801```json [settings]
4802"calls": {
4803  // Join calls with the microphone live by default
4804  "mute_on_join": false,
4805  // Share your project when you are the first to join a channel
4806  "share_on_join": false
4807},
4808```
4809
4810## Colorize Brackets
4811
4812- Description: Whether to use tree-sitter bracket queries to detect and colorize the brackets in the editor (also known as "rainbow brackets").
4813- Setting: `colorize_brackets`
4814- Default: `false`
4815
4816**Options**
4817
4818`boolean` values
4819
4820The colors that are used for different indentation levels are defined in the theme (theme key: `accents`). They can be customized by using theme overrides.
4821
4822## Unnecessary Code Fade
4823
4824- Description: How much to fade out unused code.
4825- Setting: `unnecessary_code_fade`
4826- Default: `0.3`
4827
4828**Options**
4829
4830Float values between `0.0` and `0.9`, where:
4831
4832- `0.0` means no fading (unused code looks the same as used code)
4833- `0.9` means maximum fading (unused code is very faint but still visible)
4834
4835**Example**
4836
4837```json [settings]
4838{
4839  "unnecessary_code_fade": 0.5
4840}
4841```
4842
4843## UI Font Family
4844
4845- Description: The name of the font to use for text in the UI.
4846- Setting: `ui_font_family`
4847- Default: `.ZedSans`. This currently aliases to [IBM Plex](https://www.ibm.com/plex/).
4848
4849**Options**
4850
4851The 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).
4852
4853## UI Font Features
4854
4855- Description: The OpenType features to enable for text in the UI.
4856- Setting: `ui_font_features`
4857- Default:
4858
4859```json [settings]
4860"ui_font_features": {
4861  "calt": false
4862}
4863```
4864
4865- Platform: macOS and Windows.
4866
4867**Options**
4868
4869Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
4870
4871For example, to disable font ligatures, add the following to your settings:
4872
4873```json [settings]
4874{
4875  "ui_font_features": {
4876    "calt": false
4877  }
4878}
4879```
4880
4881You can also set other OpenType features, like setting `cv01` to `7`:
4882
4883```json [settings]
4884{
4885  "ui_font_features": {
4886    "cv01": 7
4887  }
4888}
4889```
4890
4891## UI Font Fallbacks
4892
4893- Description: The font fallbacks to use for text in the UI.
4894- Setting: `ui_font_fallbacks`
4895- Default: `null`
4896- Platform: macOS and Windows.
4897
4898**Options**
4899
4900For example, to use `Nerd Font` as a fallback, add the following to your settings:
4901
4902```json [settings]
4903{
4904  "ui_font_fallbacks": ["Nerd Font"]
4905}
4906```
4907
4908## UI Font Size
4909
4910- Description: The default font size for text in the UI.
4911- Setting: `ui_font_size`
4912- Default: `16`
4913
4914**Options**
4915
4916`integer` values from `6` to `100` pixels (inclusive)
4917
4918## UI Font Weight
4919
4920- Description: The default font weight for text in the UI.
4921- Setting: `ui_font_weight`
4922- Default: `400`
4923
4924**Options**
4925
4926`integer` values between `100` and `900`
4927
4928## Settings Profiles
4929
4930- Description: Configure any number of settings profiles that are temporarily applied on top of your existing user settings when selected from `settings profile selector: toggle`.
4931- Setting: `profiles`
4932- Default: `{}`
4933
4934In your `settings.json` file, add the `profiles` object.
4935Each key within this object is the name of a settings profile, and each value is an object that can include any of Zed's settings.
4936
4937Example:
4938
4939```json [settings]
4940"profiles": {
4941  "Presenting (Dark)": {
4942    "agent_buffer_font_size": 18.0,
4943    "buffer_font_size": 18.0,
4944    "theme": "One Dark",
4945    "ui_font_size": 18.0
4946  },
4947  "Presenting (Light)": {
4948    "agent_buffer_font_size": 18.0,
4949    "buffer_font_size": 18.0,
4950    "theme": "One Light",
4951    "ui_font_size": 18.0
4952  },
4953  "Writing": {
4954    "agent_buffer_font_size": 15.0,
4955    "buffer_font_size": 15.0,
4956    "theme": "Catppuccin Frappé - No Italics",
4957    "ui_font_size": 15.0,
4958    "tab_bar": { "show": false },
4959    "toolbar": { "breadcrumbs": false }
4960  }
4961}
4962```
4963
4964To preview and enable a settings profile, open the command palette via {#kb command_palette::Toggle} and search for `settings profile selector: toggle`.
4965
4966## An example configuration:
4967
4968```json [settings]
4969// ~/.config/zed/settings.json
4970{
4971  "theme": "cave-light",
4972  "tab_size": 2,
4973  "preferred_line_length": 80,
4974  "soft_wrap": "none",
4975
4976  "buffer_font_size": 18,
4977  "buffer_font_family": ".ZedMono",
4978
4979  "autosave": "on_focus_change",
4980  "format_on_save": "off",
4981  "vim_mode": false,
4982  "projects_online_by_default": true,
4983  "terminal": {
4984    "font_family": "FiraCode Nerd Font Mono",
4985    "blinking": "off"
4986  },
4987  "languages": {
4988    "C": {
4989      "format_on_save": "on",
4990      "formatter": "language_server",
4991      "preferred_line_length": 64,
4992      "soft_wrap": "preferred_line_length"
4993    }
4994  }
4995}
4996```