all-settings.md

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