configuring-zed.md

   1# Configuring Zed
   2
   3Zed is designed to be configured: we want to fit your workflow and preferences exactly. We provide default settings that are designed to be a comfortable starting point for as many people as possible, but we hope you will enjoy tweaking it to make it feel incredible.
   4
   5In addition to the settings described here, you may also want to change your [theme](./themes.md), configure your [key bindings](./key-bindings.md), set up [tasks](./tasks.md) or install [extensions](https://github.com/zed-industries/extensions).
   6
   7## Settings files
   8
   9<!--
  10TBD: Settings files. Rewrite with "remote settings" in mind (e.g. `local settings` on the remote host).
  11Consider renaming `zed: Open Local Settings` to `zed: Open Project Settings`.
  12
  13TBD: Add settings documentation about how settings are merged as overlays. E.g. project>local>default. Note how settings that are maps are merged, but settings that are arrays are replaced and must include the defaults.
  14-->
  15
  16Your settings file can be opened with {#kb zed::OpenSettings}. By default it is located at `~/.config/zed/settings.json`, though if you have XDG_CONFIG_HOME in your environment on Linux it will be at `$XDG_CONFIG_HOME/zed/settings.json` instead.
  17
  18This configuration is merged with any local configuration inside your projects. You can open the project settings by running {#action zed::OpenProjectSettings} from the command palette. This will create a `.zed` directory containing`.zed/settings.json`.
  19
  20Although most projects will only need one settings file at the root, you can add more local settings files for subdirectories as needed. Not all settings can be set in local files, just those that impact the behavior of the editor and language tooling. For example you can set `tab_size`, `formatter` etc. but not `theme`, `vim_mode` and similar.
  21
  22The syntax for configuration files is a super-set of JSON that allows `//` comments.
  23
  24## Default settings
  25
  26You can find the default settings for your current Zed by running {#action zed::OpenDefaultSettings} from the command palette.
  27
  28Extensions that provide language servers may also provide default settings for those language servers.
  29
  30# Settings
  31
  32## Active Pane Modifiers
  33
  34- Description: Styling settings applied to the active pane.
  35- Setting: `active_pane_modifiers`
  36- Default:
  37
  38```json
  39{
  40  "active_pane_modifiers": {
  41    "border_size": 0.0,
  42    "inactive_opacity": 1.0
  43  }
  44}
  45```
  46
  47### Border size
  48
  49- Description: Size of the border surrounding the active pane. When set to 0, the active pane doesn't have any border. The border is drawn inset.
  50- Setting: `border_size`
  51- Default: `0.0`
  52
  53**Options**
  54
  55Non-negative `float` values
  56
  57### Inactive Opacity
  58
  59- Description: Opacity of inactive panels. When set to 1.0, the inactive panes have the same opacity as the active one. If set to 0, the inactive panes content will not be visible at all. Values are clamped to the [0.0, 1.0] range.
  60- Setting: `inactive_opacity`
  61- Default: `1.0`
  62
  63**Options**
  64
  65`float` values
  66
  67## Bottom Dock Layout
  68
  69- Description: Control the layout of the bottom dock, relative to the left and right docks
  70- Setting: `bottom_dock_layout`
  71- Default: `"contained"`
  72
  73**Options**
  74
  751. Contain the bottom dock, giving the full height of the window to the left and right docks
  76
  77```json
  78{
  79  "bottom_dock_layout": "contained"
  80}
  81```
  82
  832. Give the bottom dock the full width of the window, truncating the left and right docks
  84
  85```json
  86{
  87  "bottom_dock_layout": "full"
  88}
  89```
  90
  913. Left align the bottom dock, truncating the left dock and giving the right dock the full height of the window
  92
  93```json
  94{
  95  "bottom_dock_layout": "left_aligned"
  96}
  97```
  98
  993. Right align the bottom dock, giving the left dock the full height of the window and truncating the right dock.
 100
 101```json
 102{
 103  "bottom_dock_layout": "right_aligned"
 104}
 105```
 106
 107## Auto Install extensions
 108
 109- Description: Define extensions to be autoinstalled or never be installed.
 110- Setting: `auto_install_extension`
 111- Default: `{ "html": true }`
 112
 113**Options**
 114
 115You can find the names of your currently installed extensions by listing the subfolders under the [extension installation location](./extensions/installing-extensions.md#installation-location):
 116
 117On MacOS:
 118
 119```sh
 120ls ~/Library/Application\ Support/Zed/extensions/installed/
 121```
 122
 123On Linux:
 124
 125```sh
 126ls ~/.local/share/zed/extensions/installed
 127```
 128
 129Define extensions which should be installed (`true`) or never installed (`false`).
 130
 131```json
 132{
 133  "auto_install_extensions": {
 134    "html": true,
 135    "dockerfile": true,
 136    "docker-compose": false
 137  }
 138}
 139```
 140
 141## Autosave
 142
 143- Description: When to automatically save edited buffers.
 144- Setting: `autosave`
 145- Default: `off`
 146
 147**Options**
 148
 1491. To disable autosave, set it to `off`:
 150
 151```json
 152{
 153  "autosave": "off"
 154}
 155```
 156
 1572. To autosave when focus changes, use `on_focus_change`:
 158
 159```json
 160{
 161  "autosave": "on_focus_change"
 162}
 163```
 164
 1653. To autosave when the active window changes, use `on_window_change`:
 166
 167```json
 168{
 169  "autosave": "on_window_change"
 170}
 171```
 172
 1734. To autosave after an inactivity period, use `after_delay`:
 174
 175```json
 176{
 177  "autosave": {
 178    "after_delay": {
 179      "milliseconds": 1000
 180    }
 181  }
 182}
 183```
 184
 185## Restore on Startup
 186
 187- Description: Controls session restoration on startup.
 188- Setting: `restore_on_startup`
 189- Default: `last_session`
 190
 191**Options**
 192
 1931. Restore all workspaces that were open when quitting Zed:
 194
 195```json
 196{
 197  "restore_on_startup": "last_session"
 198}
 199```
 200
 2012. Restore the workspace that was closed last:
 202
 203```json
 204{
 205  "restore_on_startup": "last_workspace"
 206}
 207```
 208
 2093. Always start with an empty editor:
 210
 211```json
 212{
 213  "restore_on_startup": "none"
 214}
 215```
 216
 217## Autoscroll on Clicks
 218
 219- Description: Whether to scroll when clicking near the edge of the visible text area.
 220- Setting: `autoscroll_on_clicks`
 221- Default: `false`
 222
 223**Options**
 224
 225`boolean` values
 226
 227## Auto Update
 228
 229- Description: Whether or not to automatically check for updates.
 230- Setting: `auto_update`
 231- Default: `true`
 232
 233**Options**
 234
 235`boolean` values
 236
 237## Base Keymap
 238
 239- Description: Base key bindings scheme. Base keymaps can be overridden with user keymaps.
 240- Setting: `base_keymap`
 241- Default: `VSCode`
 242
 243**Options**
 244
 2451. VSCode
 246
 247```json
 248{
 249  "base_keymap": "VSCode"
 250}
 251```
 252
 2532. Atom
 254
 255```json
 256{
 257  "base_keymap": "Atom"
 258}
 259```
 260
 2613. JetBrains
 262
 263```json
 264{
 265  "base_keymap": "JetBrains"
 266}
 267```
 268
 2694. None
 270
 271```json
 272{
 273  "base_keymap": "None"
 274}
 275```
 276
 2775. SublimeText
 278
 279```json
 280{
 281  "base_keymap": "SublimeText"
 282}
 283```
 284
 2856. TextMate
 286
 287```json
 288{
 289  "base_keymap": "TextMate"
 290}
 291```
 292
 293## Buffer Font Family
 294
 295- Description: The name of a font to use for rendering text in the editor.
 296- Setting: `buffer_font_family`
 297- Default: `Zed Plex Mono`
 298
 299**Options**
 300
 301The name of any font family installed on the user's system
 302
 303## Buffer Font Features
 304
 305- Description: The OpenType features to enable for text in the editor.
 306- Setting: `buffer_font_features`
 307- Default: `null`
 308- Platform: macOS and Windows.
 309
 310**Options**
 311
 312Zed 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.
 313
 314For example, to disable font ligatures, add the following to your settings:
 315
 316```json
 317{
 318  "buffer_font_features": {
 319    "calt": false
 320  }
 321}
 322```
 323
 324You can also set other OpenType features, like setting `cv01` to `7`:
 325
 326```json
 327{
 328  "buffer_font_features": {
 329    "cv01": 7
 330  }
 331}
 332```
 333
 334## Buffer Font Fallbacks
 335
 336- Description: Set the buffer text's font fallbacks, this will be merged with the platform's default fallbacks.
 337- Setting: `buffer_font_fallbacks`
 338- Default: `null`
 339- Platform: macOS and Windows.
 340
 341**Options**
 342
 343For example, to use `Nerd Font` as a fallback, add the following to your settings:
 344
 345```json
 346{
 347  "buffer_font_fallbacks": ["Nerd Font"]
 348}
 349```
 350
 351## Buffer Font Size
 352
 353- Description: The default font size for text in the editor.
 354- Setting: `buffer_font_size`
 355- Default: `15`
 356
 357**Options**
 358
 359`integer` values from `6` to `100` pixels (inclusive)
 360
 361## Buffer Font Weight
 362
 363- Description: The default font weight for text in the editor.
 364- Setting: `buffer_font_weight`
 365- Default: `400`
 366
 367**Options**
 368
 369`integer` values between `100` and `900`
 370
 371## Buffer Line Height
 372
 373- Description: The default line height for text in the editor.
 374- Setting: `buffer_line_height`
 375- Default: `"comfortable"`
 376
 377**Options**
 378
 379`"standard"`, `"comfortable"` or `{ "custom": float }` (`1` is compact, `2` is loose)
 380
 381## Close on File Delete
 382
 383- Description: Whether to automatically close editor tabs when their corresponding files are deleted from disk.
 384- Setting: `close_on_file_delete`
 385- Default: `false`
 386
 387**Options**
 388
 389`boolean` values
 390
 391When 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.
 392
 393Note: Dirty files (files with unsaved changes) will not be automatically closed even when this setting is enabled, ensuring you don't lose unsaved work.
 394
 395## Confirm Quit
 396
 397- Description: Whether or not to prompt the user to confirm before closing the application.
 398- Setting: `confirm_quit`
 399- Default: `false`
 400
 401**Options**
 402
 403`boolean` values
 404
 405## Centered Layout
 406
 407- Description: Configuration for the centered layout mode.
 408- Setting: `centered_layout`
 409- Default:
 410
 411```json
 412"centered_layout": {
 413  "left_padding": 0.2,
 414  "right_padding": 0.2,
 415}
 416```
 417
 418**Options**
 419
 420The `left_padding` and `right_padding` options define the relative width of the
 421left 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`.
 422
 423## Direnv Integration
 424
 425- Description: Settings for [direnv](https://direnv.net/) integration. Requires `direnv` to be installed.
 426  `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.
 427  It also allows for those environment variables to be used in tasks.
 428- Setting: `load_direnv`
 429- Default: `"direct"`
 430
 431**Options**
 432
 433There are two options to choose from:
 434
 4351. `shell_hook`: Use the shell hook to load direnv. This relies on direnv to activate upon entering the directory. Supports POSIX shells and fish.
 4362. `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.
 437
 438## Edit Predictions
 439
 440- Description: Settings for edit predictions.
 441- Setting: `edit_predictions`
 442- Default:
 443
 444```json
 445  "edit_predictions": {
 446    "disabled_globs": [
 447      "**/.env*",
 448      "**/*.pem",
 449      "**/*.key",
 450      "**/*.cert",
 451      "**/*.crt",
 452      "**/.dev.vars",
 453      "**/secrets.yml"
 454    ]
 455  }
 456```
 457
 458**Options**
 459
 460### Disabled Globs
 461
 462- 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.
 463- Setting: `disabled_globs`
 464- Default: `["**/.env*", "**/*.pem", "**/*.key", "**/*.cert", "**/*.crt", "**/.dev.vars", "**/secrets.yml"]`
 465
 466**Options**
 467
 468List of `string` values.
 469
 470## Edit Predictions Disabled in
 471
 472- Description: A list of language scopes in which edit predictions should be disabled.
 473- Setting: `edit_predictions_disabled_in`
 474- Default: `[]`
 475
 476**Options**
 477
 478List of `string` values
 479
 4801. Don't show edit predictions in comments:
 481
 482```json
 483"disabled_in": ["comment"]
 484```
 485
 4862. Don't show edit predictions in strings and comments:
 487
 488```json
 489"disabled_in": ["comment", "string"]
 490```
 491
 4923. Only in Go, don't show edit predictions in strings and comments:
 493
 494```json
 495{
 496  "languages": {
 497    "Go": {
 498      "edit_predictions_disabled_in": ["comment", "string"]
 499    }
 500  }
 501}
 502```
 503
 504## Current Line Highlight
 505
 506- Description: How to highlight the current line in the editor.
 507- Setting: `current_line_highlight`
 508- Default: `all`
 509
 510**Options**
 511
 5121. Don't highlight the current line:
 513
 514```json
 515"current_line_highlight": "none"
 516```
 517
 5182. Highlight the gutter area:
 519
 520```json
 521"current_line_highlight": "gutter"
 522```
 523
 5243. Highlight the editor area:
 525
 526```json
 527"current_line_highlight": "line"
 528```
 529
 5304. Highlight the full line:
 531
 532```json
 533"current_line_highlight": "all"
 534```
 535
 536## Selection Highlight
 537
 538- Description: Whether to highlight all occurrences of the selected text in an editor.
 539- Setting: `selection_highlight`
 540- Default: `true`
 541
 542## LSP Highlight Debounce
 543
 544- Description: The debounce delay before querying highlights from the language server based on the current cursor location.
 545- Setting: `lsp_highlight_debounce`
 546- Default: `75`
 547
 548## Cursor Blink
 549
 550- Description: Whether or not the cursor blinks.
 551- Setting: `cursor_blink`
 552- Default: `true`
 553
 554**Options**
 555
 556`boolean` values
 557
 558## Cursor Shape
 559
 560- Description: Cursor shape for the default editor.
 561- Setting: `cursor_shape`
 562- Default: `bar`
 563
 564**Options**
 565
 5661. A vertical bar:
 567
 568```json
 569"cursor_shape": "bar"
 570```
 571
 5722. A block that surrounds the following character:
 573
 574```json
 575"cursor_shape": "block"
 576```
 577
 5783. An underline / underscore that runs along the following character:
 579
 580```json
 581"cursor_shape": "underline"
 582```
 583
 5844. An box drawn around the following character:
 585
 586```json
 587"cursor_shape": "hollow"
 588```
 589
 590## Hide Mouse
 591
 592- Description: Determines when the mouse cursor should be hidden in an editor or input box.
 593- Setting: `hide_mouse`
 594- Default: `on_typing_and_movement`
 595
 596**Options**
 597
 5981. Never hide the mouse cursor:
 599
 600```json
 601"hide_mouse": "never"
 602```
 603
 6042. Hide only when typing:
 605
 606```json
 607"hide_mouse": "on_typing"
 608```
 609
 6103. Hide on both typing and cursor movement:
 611
 612```json
 613"hide_mouse": "on_typing_and_movement"
 614```
 615
 616## Snippet Sort Order
 617
 618- Description: Determines how snippets are sorted relative to other completion items.
 619- Setting: `snippet_sort_order`
 620- Default: `inline`
 621
 622**Options**
 623
 6241. Place snippets at the top of the completion list:
 625
 626```json
 627"snippet_sort_order": "top"
 628```
 629
 6302. Place snippets normally without any preference:
 631
 632```json
 633"snippet_sort_order": "inline"
 634```
 635
 6363. Place snippets at the bottom of the completion list:
 637
 638```json
 639"snippet_sort_order": "bottom"
 640```
 641
 642## Editor Scrollbar
 643
 644- Description: Whether or not to show the editor scrollbar and various elements in it.
 645- Setting: `scrollbar`
 646- Default:
 647
 648```json
 649"scrollbar": {
 650  "show": "auto",
 651  "cursors": true,
 652  "git_diff": true,
 653  "search_results": true,
 654  "selected_text": true,
 655  "selected_symbol": true,
 656  "diagnostics": "all",
 657  "axes": {
 658    "horizontal": true,
 659    "vertical": true,
 660  },
 661},
 662```
 663
 664### Show Mode
 665
 666- Description: When to show the editor scrollbar.
 667- Setting: `show`
 668- Default: `auto`
 669
 670**Options**
 671
 6721. Show the scrollbar if there's important information or follow the system's configured behavior:
 673
 674```json
 675"scrollbar": {
 676  "show": "auto"
 677}
 678```
 679
 6802. Match the system's configured behavior:
 681
 682```json
 683"scrollbar": {
 684  "show": "system"
 685}
 686```
 687
 6883. Always show the scrollbar:
 689
 690```json
 691"scrollbar": {
 692  "show": "always"
 693}
 694```
 695
 6964. Never show the scrollbar:
 697
 698```json
 699"scrollbar": {
 700  "show": "never"
 701}
 702```
 703
 704### Cursor Indicators
 705
 706- Description: Whether to show cursor positions in the scrollbar.
 707- Setting: `cursors`
 708- Default: `true`
 709
 710**Options**
 711
 712`boolean` values
 713
 714### Git Diff Indicators
 715
 716- Description: Whether to show git diff indicators in the scrollbar.
 717- Setting: `git_diff`
 718- Default: `true`
 719
 720**Options**
 721
 722`boolean` values
 723
 724### Search Results Indicators
 725
 726- Description: Whether to show buffer search results in the scrollbar.
 727- Setting: `search_results`
 728- Default: `true`
 729
 730**Options**
 731
 732`boolean` values
 733
 734### Selected Text Indicators
 735
 736- Description: Whether to show selected text occurrences in the scrollbar.
 737- Setting: `selected_text`
 738- Default: `true`
 739
 740**Options**
 741
 742`boolean` values
 743
 744### Selected Symbols Indicators
 745
 746- Description: Whether to show selected symbol occurrences in the scrollbar.
 747- Setting: `selected_symbol`
 748- Default: `true`
 749
 750**Options**
 751
 752`boolean` values
 753
 754### Diagnostics
 755
 756- Description: Which diagnostic indicators to show in the scrollbar.
 757- Setting: `diagnostics`
 758- Default: `all`
 759
 760**Options**
 761
 7621. Show all diagnostics:
 763
 764```json
 765{
 766  "diagnostics": "all"
 767}
 768```
 769
 7702. Do not show any diagnostics:
 771
 772```json
 773{
 774  "diagnostics": "none"
 775}
 776```
 777
 7783. Show only errors:
 779
 780```json
 781{
 782  "diagnostics": "error"
 783}
 784```
 785
 7864. Show only errors and warnings:
 787
 788```json
 789{
 790  "diagnostics": "warning"
 791}
 792```
 793
 7945. Show only errors, warnings, and information:
 795
 796```json
 797{
 798  "diagnostics": "information"
 799}
 800```
 801
 802### Axes
 803
 804- Description: Forcefully enable or disable the scrollbar for each axis
 805- Setting: `axes`
 806- Default:
 807
 808```json
 809"scrollbar": {
 810  "axes": {
 811    "horizontal": true,
 812    "vertical": true,
 813  },
 814}
 815```
 816
 817#### Horizontal
 818
 819- Description: When false, forcefully disables the horizontal scrollbar. Otherwise, obey other settings.
 820- Setting: `horizontal`
 821- Default: `true`
 822
 823**Options**
 824
 825`boolean` values
 826
 827#### Vertical
 828
 829- Description: When false, forcefully disables the vertical scrollbar. Otherwise, obey other settings.
 830- Setting: `vertical`
 831- Default: `true`
 832
 833**Options**
 834
 835`boolean` values
 836
 837## Minimap
 838
 839- Description: Settings related to the editor's minimap, which provides an overview of your document.
 840- Setting: `minimap`
 841- Default:
 842
 843```json
 844{
 845  "minimap": {
 846    "show": "never",
 847    "thumb": "always",
 848    "thumb_border": "left_open",
 849    "current_line_highlight": null
 850  }
 851}
 852```
 853
 854### Show Mode
 855
 856- Description: When to show the minimap in the editor.
 857- Setting: `show`
 858- Default: `never`
 859
 860**Options**
 861
 8621. Always show the minimap:
 863
 864```json
 865{
 866  "show": "always"
 867}
 868```
 869
 8702. Show the minimap if the editor's scrollbars are visible:
 871
 872```json
 873{
 874  "show": "auto"
 875}
 876```
 877
 8783. Never show the minimap:
 879
 880```json
 881{
 882  "show": "never"
 883}
 884```
 885
 886### Thumb Display
 887
 888- Description: When to show the minimap thumb (the visible editor area) in the minimap.
 889- Setting: `thumb`
 890- Default: `always`
 891
 892**Options**
 893
 8941. Show the minimap thumb when hovering over the minimap:
 895
 896```json
 897{
 898  "thumb": "hover"
 899}
 900```
 901
 9022. Always show the minimap thumb:
 903
 904```json
 905{
 906  "thumb": "always"
 907}
 908```
 909
 910### Thumb Border
 911
 912- Description: How the minimap thumb border should look.
 913- Setting: `thumb_border`
 914- Default: `left_open`
 915
 916**Options**
 917
 9181. Display a border on all sides of the thumb:
 919
 920```json
 921{
 922  "thumb_border": "full"
 923}
 924```
 925
 9262. Display a border on all sides except the left side:
 927
 928```json
 929{
 930  "thumb_border": "left_open"
 931}
 932```
 933
 9343. Display a border on all sides except the right side:
 935
 936```json
 937{
 938  "thumb_border": "right_open"
 939}
 940```
 941
 9424. Display a border only on the left side:
 943
 944```json
 945{
 946  "thumb_border": "left_only"
 947}
 948```
 949
 9505. Display the thumb without any border:
 951
 952```json
 953{
 954  "thumb_border": "none"
 955}
 956```
 957
 958### Current Line Highlight
 959
 960- Description: How to highlight the current line in the minimap.
 961- Setting: `current_line_highlight`
 962- Default: `null`
 963
 964**Options**
 965
 9661. Inherit the editor's current line highlight setting:
 967
 968```json
 969{
 970  "minimap": {
 971    "current_line_highlight": null
 972  }
 973}
 974```
 975
 9762. Highlight the current line in the minimap:
 977
 978```json
 979{
 980  "minimap": {
 981    "current_line_highlight": "line"
 982  }
 983}
 984```
 985
 986or
 987
 988```json
 989{
 990  "minimap": {
 991    "current_line_highlight": "all"
 992  }
 993}
 994```
 995
 9963. Do not highlight the current line in the minimap:
 997
 998```json
 999{
1000  "minimap": {
1001    "current_line_highlight": "gutter"
1002  }
1003}
1004```
1005
1006or
1007
1008```json
1009{
1010  "minimap": {
1011    "current_line_highlight": "none"
1012  }
1013}
1014```
1015
1016## Editor Tab Bar
1017
1018- Description: Settings related to the editor's tab bar.
1019- Settings: `tab_bar`
1020- Default:
1021
1022```json
1023"tab_bar": {
1024  "show": true,
1025  "show_nav_history_buttons": true,
1026  "show_tab_bar_buttons": true
1027}
1028```
1029
1030### Show
1031
1032- Description: Whether or not to show the tab bar in the editor.
1033- Setting: `show`
1034- Default: `true`
1035
1036**Options**
1037
1038`boolean` values
1039
1040### Navigation History Buttons
1041
1042- Description: Whether or not to show the navigation history buttons.
1043- Setting: `show_nav_history_buttons`
1044- Default: `true`
1045
1046**Options**
1047
1048`boolean` values
1049
1050### Tab Bar Buttons
1051
1052- Description: Whether or not to show the tab bar buttons.
1053- Setting: `show_tab_bar_buttons`
1054- Default: `true`
1055
1056**Options**
1057
1058`boolean` values
1059
1060## Editor Tabs
1061
1062- Description: Configuration for the editor tabs.
1063- Setting: `tabs`
1064- Default:
1065
1066```json
1067"tabs": {
1068  "close_position": "right",
1069  "file_icons": false,
1070  "git_status": false,
1071  "activate_on_close": "history",
1072  "show_close_button": "hover",
1073  "show_diagnostics": "off"
1074},
1075```
1076
1077### Close Position
1078
1079- Description: Where to display close button within a tab.
1080- Setting: `close_position`
1081- Default: `right`
1082
1083**Options**
1084
10851. Display the close button on the right:
1086
1087```json
1088{
1089  "close_position": "right"
1090}
1091```
1092
10932. Display the close button on the left:
1094
1095```json
1096{
1097  "close_position": "left"
1098}
1099```
1100
1101### File Icons
1102
1103- Description: Whether to show the file icon for a tab.
1104- Setting: `file_icons`
1105- Default: `false`
1106
1107### Git Status
1108
1109- Description: Whether or not to show Git file status in tab.
1110- Setting: `git_status`
1111- Default: `false`
1112
1113### Activate on close
1114
1115- Description: What to do after closing the current tab.
1116- Setting: `activate_on_close`
1117- Default: `history`
1118
1119**Options**
1120
11211.  Activate the tab that was open previously:
1122
1123```json
1124{
1125  "activate_on_close": "history"
1126}
1127```
1128
11292. Activate the right neighbour tab if present:
1130
1131```json
1132{
1133  "activate_on_close": "neighbour"
1134}
1135```
1136
11373. Activate the left neighbour tab if present:
1138
1139```json
1140{
1141  "activate_on_close": "left_neighbour"
1142}
1143```
1144
1145### Show close button
1146
1147- Description: Controls the appearance behavior of the tab's close button.
1148- Setting: `show_close_button`
1149- Default: `hover`
1150
1151**Options**
1152
11531.  Show it just upon hovering the tab:
1154
1155```json
1156{
1157  "show_close_button": "hover"
1158}
1159```
1160
11612. Show it persistently:
1162
1163```json
1164{
1165  "show_close_button": "always"
1166}
1167```
1168
11693. Never show it, even if hovering it:
1170
1171```json
1172{
1173  "show_close_button": "hidden"
1174}
1175```
1176
1177### Show Diagnostics
1178
1179- 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.
1180- Setting: `show_diagnostics`
1181- Default: `off`
1182
1183**Options**
1184
11851. Do not mark any files:
1186
1187```json
1188{
1189  "show_diagnostics": "off"
1190}
1191```
1192
11932. Only mark files with errors:
1194
1195```json
1196{
1197  "show_diagnostics": "errors"
1198}
1199```
1200
12013. Mark files with errors and warnings:
1202
1203```json
1204{
1205  "show_diagnostics": "all"
1206}
1207```
1208
1209### Show Inline Code Actions
1210
1211- Description: Whether to show code action button at start of buffer line.
1212- Setting: `inline_code_actions`
1213- Default: `true`
1214
1215**Options**
1216
1217`boolean` values
1218
1219### Drag And Drop Selection
1220
1221- Description: Whether to allow drag and drop text selection in buffer.
1222- Setting: `drag_and_drop_selection`
1223- Default: `true`
1224
1225**Options**
1226
1227`boolean` values
1228
1229## Editor Toolbar
1230
1231- Description: Whether or not to show various elements in the editor toolbar.
1232- Setting: `toolbar`
1233- Default:
1234
1235```json
1236"toolbar": {
1237  "breadcrumbs": true,
1238  "quick_actions": true,
1239  "selections_menu": true,
1240  "agent_review": true,
1241  "code_actions": false
1242},
1243```
1244
1245**Options**
1246
1247Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
1248
1249## Enable Language Server
1250
1251- Description: Whether or not to use language servers to provide code intelligence.
1252- Setting: `enable_language_server`
1253- Default: `true`
1254
1255**Options**
1256
1257`boolean` values
1258
1259## Ensure Final Newline On Save
1260
1261- Description: Removes any lines containing only whitespace at the end of the file and ensures just one newline at the end.
1262- Setting: `ensure_final_newline_on_save`
1263- Default: `true`
1264
1265**Options**
1266
1267`boolean` values
1268
1269## LSP
1270
1271- Description: Configuration for language servers.
1272- Setting: `lsp`
1273- Default: `null`
1274
1275**Options**
1276
1277The following settings can be overridden for specific language servers:
1278
1279- `initialization_options`
1280- `settings`
1281
1282To override configuration for a language server, add an entry for that language server's name to the `lsp` value.
1283
1284Some 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.
1285
1286For example to pass the `check` option to `rust-analyzer`, use the following configuration:
1287
1288```json
1289"lsp": {
1290  "rust-analyzer": {
1291    "initialization_options": {
1292      "check": {
1293        "command": "clippy" // rust-analyzer.check.command (default: "check")
1294      }
1295    }
1296  }
1297}
1298```
1299
1300While other options may be changed at a runtime and should be placed under `settings`:
1301
1302```json
1303"lsp": {
1304  "yaml-language-server": {
1305    "settings": {
1306      "yaml": {
1307        "keyOrdering": true // Enforces alphabetical ordering of keys in maps
1308      }
1309    }
1310  }
1311}
1312```
1313
1314## LSP Highlight Debounce
1315
1316- Description: The debounce delay in milliseconds before querying highlights from the language server based on the current cursor location.
1317- Setting: `lsp_highlight_debounce`
1318- Default: `75`
1319
1320**Options**
1321
1322`integer` values representing milliseconds
1323
1324## Format On Save
1325
1326- Description: Whether or not to perform a buffer format before saving.
1327- Setting: `format_on_save`
1328- Default: `on`
1329
1330**Options**
1331
13321. `on`, enables format on save obeying `formatter` setting:
1333
1334```json
1335{
1336  "format_on_save": "on"
1337}
1338```
1339
13402. `off`, disables format on save:
1341
1342```json
1343{
1344  "format_on_save": "off"
1345}
1346```
1347
1348## Formatter
1349
1350- Description: How to perform a buffer format.
1351- Setting: `formatter`
1352- Default: `auto`
1353
1354**Options**
1355
13561. To use the current language server, use `"language_server"`:
1357
1358```json
1359{
1360  "formatter": "language_server"
1361}
1362```
1363
13642. 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):
1365
1366```json
1367{
1368  "formatter": {
1369    "external": {
1370      "command": "sed",
1371      "arguments": ["-e", "s/ *$//"]
1372    }
1373  }
1374}
1375```
1376
13773. 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.
1378
1379WARNING: `{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.
1380
1381```json
1382  "formatter": {
1383    "external": {
1384      "command": "prettier",
1385      "arguments": ["--stdin-filepath", "{buffer_path}"]
1386    }
1387  }
1388```
1389
13904. Or to use code actions provided by the connected language servers, use `"code_actions"`:
1391
1392```json
1393{
1394  "formatter": {
1395    "code_actions": {
1396      // Use ESLint's --fix:
1397      "source.fixAll.eslint": true,
1398      // Organize imports on save:
1399      "source.organizeImports": true
1400    }
1401  }
1402}
1403```
1404
14055. Or to use multiple formatters consecutively, use an array of formatters:
1406
1407```json
1408{
1409  "formatter": [
1410    { "language_server": { "name": "rust-analyzer" } },
1411    {
1412      "external": {
1413        "command": "sed",
1414        "arguments": ["-e", "s/ *$//"]
1415      }
1416    }
1417  ]
1418}
1419```
1420
1421Here `rust-analyzer` will be used first to format the code, followed by a call of sed.
1422If any of the formatters fails, the subsequent ones will still be executed.
1423
1424## Code Actions On Format
1425
1426- Description: The code actions to perform with the primary language server when formatting the buffer.
1427- Setting: `code_actions_on_format`
1428- Default: `{}`, except for Go it's `{ "source.organizeImports": true }`
1429
1430**Examples**
1431
1432<!--
1433TBD: Add Python Ruff source.organizeImports example
1434-->
1435
14361. Organize imports on format in TypeScript and TSX buffers:
1437
1438```json
1439{
1440  "languages": {
1441    "TypeScript": {
1442      "code_actions_on_format": {
1443        "source.organizeImports": true
1444      }
1445    },
1446    "TSX": {
1447      "code_actions_on_format": {
1448        "source.organizeImports": true
1449      }
1450    }
1451  }
1452}
1453```
1454
14552. Run ESLint `fixAll` code action when formatting:
1456
1457```json
1458{
1459  "languages": {
1460    "JavaScript": {
1461      "code_actions_on_format": {
1462        "source.fixAll.eslint": true
1463      }
1464    }
1465  }
1466}
1467```
1468
14693. Run only a single ESLint rule when using `fixAll`:
1470
1471```json
1472{
1473  "languages": {
1474    "JavaScript": {
1475      "code_actions_on_format": {
1476        "source.fixAll.eslint": true
1477      }
1478    }
1479  },
1480  "lsp": {
1481    "eslint": {
1482      "settings": {
1483        "codeActionOnSave": {
1484          "rules": ["import/order"]
1485        }
1486      }
1487    }
1488  }
1489}
1490```
1491
1492## Auto close
1493
1494- Description: Whether to automatically add matching closing characters when typing opening parenthesis, bracket, brace, single or double quote characters.
1495- Setting: `use_autoclose`
1496- Default: `true`
1497
1498**Options**
1499
1500`boolean` values
1501
1502## Always Treat Brackets As Autoclosed
1503
1504- Description: Controls how the editor handles the autoclosed characters.
1505- Setting: `always_treat_brackets_as_autoclosed`
1506- Default: `false`
1507
1508**Options**
1509
1510`boolean` values
1511
1512**Example**
1513
1514If the setting is set to `true`:
1515
15161. Enter in the editor: `)))`
15172. Move the cursor to the start: `^)))`
15183. Enter again: `)))`
1519
1520The result is still `)))` and not `))))))`, which is what it would be by default.
1521
1522## File Scan Exclusions
1523
1524- Setting: `file_scan_exclusions`
1525- 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`.
1526- Default:
1527
1528```json
1529"file_scan_exclusions": [
1530  "**/.git",
1531  "**/.svn",
1532  "**/.hg",
1533  "**/.jj",
1534  "**/CVS",
1535  "**/.DS_Store",
1536  "**/Thumbs.db",
1537  "**/.classpath",
1538  "**/.settings"
1539],
1540```
1541
1542Note, 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.
1543
1544## File Scan Inclusions
1545
1546- Setting: `file_scan_inclusions`
1547- 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.
1548- Default:
1549
1550```json
1551"file_scan_inclusions": [".env*"],
1552```
1553
1554## File Types
1555
1556- Setting: `file_types`
1557- Description: Configure how Zed selects a language for a file based on its filename or extension. Supports glob entries.
1558- Default:
1559
1560```json
1561"file_types": {
1562  "JSONC": ["**/.zed/**/*.json", "**/zed/**/*.json", "**/Zed/**/*.json", "**/.vscode/**/*.json"],
1563  "Shell Script": [".env.*"]
1564}
1565```
1566
1567**Examples**
1568
1569To interpret all `.c` files as C++, files called `MyLockFile` as TOML and files starting with `Dockerfile` as Dockerfile:
1570
1571```json
1572{
1573  "file_types": {
1574    "C++": ["c"],
1575    "TOML": ["MyLockFile"],
1576    "Dockerfile": ["Dockerfile*"]
1577  }
1578}
1579```
1580
1581## Diagnostics
1582
1583- Description: Configuration for diagnostics-related features.
1584- Setting: `diagnostics`
1585- Default:
1586
1587```json
1588{
1589  "diagnostics": {
1590    "include_warnings": true,
1591    "inline": {
1592      "enabled": false
1593    },
1594    "update_with_cursor": false,
1595    "primary_only": false,
1596    "use_rendered": false
1597  }
1598}
1599```
1600
1601### Inline Diagnostics
1602
1603- Description: Whether or not to show diagnostics information inline.
1604- Setting: `inline`
1605- Default:
1606
1607```json
1608{
1609  "diagnostics": {
1610    "inline": {
1611      "enabled": false,
1612      "update_debounce_ms": 150,
1613      "padding": 4,
1614      "min_column": 0,
1615      "max_severity": null
1616    }
1617  }
1618}
1619```
1620
1621**Options**
1622
16231. Enable inline diagnostics.
1624
1625```json
1626{
1627  "diagnostics": {
1628    "inline": {
1629      "enabled": true
1630    }
1631  }
1632}
1633```
1634
16352. Delay diagnostic updates until some time after the last diagnostic update.
1636
1637```json
1638{
1639  "diagnostics": {
1640    "inline": {
1641      "enabled": true,
1642      "update_debounce_ms": 150
1643    }
1644  }
1645}
1646```
1647
16483. Set padding between the end of the source line and the start of the diagnostic.
1649
1650```json
1651{
1652  "diagnostics": {
1653    "inline": {
1654      "enabled": true,
1655      "padding": 4
1656    }
1657  }
1658}
1659```
1660
16614. Horizontally align inline diagnostics at the given column.
1662
1663```json
1664{
1665  "diagnostics": {
1666    "inline": {
1667      "enabled": true,
1668      "min_column": 80
1669    }
1670  }
1671}
1672```
1673
16745. Show only warning and error diagnostics.
1675
1676```json
1677{
1678  "diagnostics": {
1679    "inline": {
1680      "enabled": true,
1681      "max_severity": "warning"
1682    }
1683  }
1684}
1685```
1686
1687## Git
1688
1689- Description: Configuration for git-related features.
1690- Setting: `git`
1691- Default:
1692
1693```json
1694{
1695  "git": {
1696    "git_gutter": "tracked_files",
1697    "inline_blame": {
1698      "enabled": true
1699    },
1700    "hunk_style": "staged_hollow"
1701  }
1702}
1703```
1704
1705### Git Gutter
1706
1707- Description: Whether or not to show the git gutter.
1708- Setting: `git_gutter`
1709- Default: `tracked_files`
1710
1711**Options**
1712
17131. Show git gutter in tracked files
1714
1715```json
1716{
1717  "git": {
1718    "git_gutter": "tracked_files"
1719  }
1720}
1721```
1722
17232. Hide git gutter
1724
1725```json
1726{
1727  "git": {
1728    "git_gutter": "hide"
1729  }
1730}
1731```
1732
1733### Gutter Debounce
1734
1735- Description: Sets the debounce threshold (in milliseconds) after which changes are reflected in the git gutter.
1736- Setting: `gutter_debounce`
1737- Default: `null`
1738
1739**Options**
1740
1741`integer` values representing milliseconds
1742
1743Example:
1744
1745```json
1746{
1747  "git": {
1748    "gutter_debounce": 100
1749  }
1750}
1751```
1752
1753### Inline Git Blame
1754
1755- Description: Whether or not to show git blame information inline, on the currently focused line.
1756- Setting: `inline_blame`
1757- Default:
1758
1759```json
1760{
1761  "git": {
1762    "inline_blame": {
1763      "enabled": true
1764    }
1765  }
1766}
1767```
1768
1769**Options**
1770
17711. Disable inline git blame:
1772
1773```json
1774{
1775  "git": {
1776    "inline_blame": {
1777      "enabled": false
1778    }
1779  }
1780}
1781```
1782
17832. Only show inline git blame after a delay (that starts after cursor stops moving):
1784
1785```json
1786{
1787  "git": {
1788    "inline_blame": {
1789      "enabled": true,
1790      "delay_ms": 500
1791    }
1792  }
1793}
1794```
1795
17963. Show a commit summary next to the commit date and author:
1797
1798```json
1799{
1800  "git": {
1801    "inline_blame": {
1802      "enabled": true,
1803      "show_commit_summary": true
1804    }
1805  }
1806}
1807```
1808
18094. Use this as the minimum column at which to display inline blame information:
1810
1811```json
1812{
1813  "git": {
1814    "inline_blame": {
1815      "enabled": true,
1816      "min_column": 80
1817    }
1818  }
1819}
1820```
1821
1822### Hunk Style
1823
1824- Description: What styling we should use for the diff hunks.
1825- Setting: `hunk_style`
1826- Default:
1827
1828```json
1829{
1830  "git": {
1831    "hunk_style": "staged_hollow"
1832  }
1833}
1834```
1835
1836**Options**
1837
18381. Show the staged hunks faded out and with a border:
1839
1840```json
1841{
1842  "git": {
1843    "hunk_style": "staged_hollow"
1844  }
1845}
1846```
1847
18482. Show unstaged hunks faded out and with a border:
1849
1850```json
1851{
1852  "git": {
1853    "hunk_style": "unstaged_hollow"
1854  }
1855}
1856```
1857
1858## Indent Guides
1859
1860- Description: Configuration related to indent guides. Indent guides can be configured separately for each language.
1861- Setting: `indent_guides`
1862- Default:
1863
1864```json
1865{
1866  "indent_guides": {
1867    "enabled": true,
1868    "line_width": 1,
1869    "active_line_width": 1,
1870    "coloring": "fixed",
1871    "background_coloring": "disabled"
1872  }
1873}
1874```
1875
1876**Options**
1877
18781. Disable indent guides
1879
1880```json
1881{
1882  "indent_guides": {
1883    "enabled": false
1884  }
1885}
1886```
1887
18882. Enable indent guides for a specific language.
1889
1890```json
1891{
1892  "languages": {
1893    "Python": {
1894      "indent_guides": {
1895        "enabled": true
1896      }
1897    }
1898  }
1899}
1900```
1901
19023. Enable indent aware coloring ("rainbow indentation").
1903   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.
1904
1905```json
1906{
1907  "indent_guides": {
1908    "enabled": true,
1909    "coloring": "indent_aware"
1910  }
1911}
1912```
1913
19144. Enable indent aware background coloring ("rainbow indentation").
1915   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.
1916
1917```json
1918{
1919  "indent_guides": {
1920    "enabled": true,
1921    "coloring": "indent_aware",
1922    "background_coloring": "indent_aware"
1923  }
1924}
1925```
1926
1927## Hard Tabs
1928
1929- Description: Whether to indent lines using tab characters or multiple spaces.
1930- Setting: `hard_tabs`
1931- Default: `false`
1932
1933**Options**
1934
1935`boolean` values
1936
1937## Multi Cursor Modifier
1938
1939- 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.
1940- Setting: `multi_cursor_modifier`
1941- Default: `alt`
1942
1943**Options**
1944
19451. Maps to `Alt` on Linux and Windows and to `Option` on MacOS:
1946
1947```json
1948{
1949  "multi_cursor_modifier": "alt"
1950}
1951```
1952
19532. Maps `Control` on Linux and Windows and to `Command` on MacOS:
1954
1955```json
1956{
1957  "multi_cursor_modifier": "cmd_or_ctrl" // alias: "cmd", "ctrl"
1958}
1959```
1960
1961## Hover Popover Enabled
1962
1963- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
1964- Setting: `hover_popover_enabled`
1965- Default: `true`
1966
1967**Options**
1968
1969`boolean` values
1970
1971## Hover Popover Delay
1972
1973- Description: Time to wait in milliseconds before showing the informational hover box.
1974- Setting: `hover_popover_delay`
1975- Default: `300`
1976
1977**Options**
1978
1979`integer` values representing milliseconds
1980
1981## Icon Theme
1982
1983- 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.
1984- Setting: `icon_theme`
1985- Default: `Zed (Default)`
1986
1987### Icon Theme Object
1988
1989- Description: Specify the icon theme using an object that includes the `mode`, `dark`, and `light`.
1990- Setting: `icon_theme`
1991- Default:
1992
1993```json
1994"icon_theme": {
1995  "mode": "system",
1996  "dark": "Zed (Default)",
1997  "light": "Zed (Default)"
1998},
1999```
2000
2001### Mode
2002
2003- Description: Specify the icon theme mode.
2004- Setting: `mode`
2005- Default: `system`
2006
2007**Options**
2008
20091. Set the icon theme to dark mode
2010
2011```json
2012{
2013  "mode": "dark"
2014}
2015```
2016
20172. Set the icon theme to light mode
2018
2019```json
2020{
2021  "mode": "light"
2022}
2023```
2024
20253. Set the icon theme to system mode
2026
2027```json
2028{
2029  "mode": "system"
2030}
2031```
2032
2033### Dark
2034
2035- Description: The name of the dark icon theme.
2036- Setting: `dark`
2037- Default: `Zed (Default)`
2038
2039**Options**
2040
2041Run the `icon theme selector: toggle` action in the command palette to see a current list of valid icon themes names.
2042
2043### Light
2044
2045- Description: The name of the light icon theme.
2046- Setting: `light`
2047- Default: `Zed (Default)`
2048
2049**Options**
2050
2051Run the `icon theme selector: toggle` action in the command palette to see a current list of valid icon themes names.
2052
2053## Inlay hints
2054
2055- Description: Configuration for displaying extra text with hints in the editor.
2056- Setting: `inlay_hints`
2057- Default:
2058
2059```json
2060"inlay_hints": {
2061  "enabled": false,
2062  "show_type_hints": true,
2063  "show_parameter_hints": true,
2064  "show_other_hints": true,
2065  "show_background": false,
2066  "edit_debounce_ms": 700,
2067  "scroll_debounce_ms": 50,
2068  "toggle_on_modifiers_press": null
2069}
2070```
2071
2072**Options**
2073
2074Inlay hints querying consists of two parts: editor (client) and LSP server.
2075With 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.
2076At 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.
2077
2078The following languages have inlay hints preconfigured by Zed:
2079
2080- [Go](https://docs.zed.dev/languages/go)
2081- [Rust](https://docs.zed.dev/languages/rust)
2082- [Svelte](https://docs.zed.dev/languages/svelte)
2083- [Typescript](https://docs.zed.dev/languages/typescript)
2084
2085Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
2086
2087Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
2088Settings-related hint updates are not debounced.
2089
2090All possible config values for `toggle_on_modifiers_press` are:
2091
2092```json
2093"inlay_hints": {
2094  "toggle_on_modifiers_press": {
2095    "control": true,
2096    "shift": true,
2097    "alt": true,
2098    "platform": true,
2099    "function": true
2100  }
2101}
2102```
2103
2104Unspecified values have a `false` value, hints won't be toggled if all the modifiers are `false` or not all the modifiers are pressed.
2105
2106## Journal
2107
2108- Description: Configuration for the journal.
2109- Setting: `journal`
2110- Default:
2111
2112```json
2113"journal": {
2114  "path": "~",
2115  "hour_format": "hour12"
2116}
2117```
2118
2119### Path
2120
2121- Description: The path of the directory where journal entries are stored.
2122- Setting: `path`
2123- Default: `~`
2124
2125**Options**
2126
2127`string` values
2128
2129### Hour Format
2130
2131- Description: The format to use for displaying hours in the journal.
2132- Setting: `hour_format`
2133- Default: `hour12`
2134
2135**Options**
2136
21371. 12-hour format:
2138
2139```json
2140{
2141  "hour_format": "hour12"
2142}
2143```
2144
21452. 24-hour format:
2146
2147```json
2148{
2149  "hour_format": "hour24"
2150}
2151```
2152
2153## Languages
2154
2155- Description: Configuration for specific languages.
2156- Setting: `languages`
2157- Default: `null`
2158
2159**Options**
2160
2161To override settings for a language, add an entry for that languages name to the `languages` value. Example:
2162
2163```json
2164"languages": {
2165  "C": {
2166    "format_on_save": "off",
2167    "preferred_line_length": 64,
2168    "soft_wrap": "preferred_line_length"
2169  },
2170  "JSON": {
2171    "tab_size": 4
2172  }
2173}
2174```
2175
2176The following settings can be overridden for each specific language:
2177
2178- [`enable_language_server`](#enable-language-server)
2179- [`ensure_final_newline_on_save`](#ensure-final-newline-on-save)
2180- [`format_on_save`](#format-on-save)
2181- [`formatter`](#formatter)
2182- [`hard_tabs`](#hard-tabs)
2183- [`preferred_line_length`](#preferred-line-length)
2184- [`remove_trailing_whitespace_on_save`](#remove-trailing-whitespace-on-save)
2185- [`show_edit_predictions`](#show-edit-predictions)
2186- [`show_whitespaces`](#show-whitespaces)
2187- [`soft_wrap`](#soft-wrap)
2188- [`tab_size`](#tab-size)
2189- [`use_autoclose`](#use-autoclose)
2190- [`always_treat_brackets_as_autoclosed`](#always-treat-brackets-as-autoclosed)
2191
2192These values take in the same options as the root-level settings with the same name.
2193
2194## Network Proxy
2195
2196- Description: Configure a network proxy for Zed.
2197- Setting: `proxy`
2198- Default: `null`
2199
2200**Options**
2201
2202The proxy setting must contain a URL to the proxy.
2203
2204The following URI schemes are supported:
2205
2206- `http`
2207- `https`
2208- `socks4` - SOCKS4 proxy with local DNS
2209- `socks4a` - SOCKS4 proxy with remote DNS
2210- `socks5` - SOCKS5 proxy with local DNS
2211- `socks5h` - SOCKS5 proxy with remote DNS
2212
2213`http` will be used when no scheme is specified.
2214
2215By 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`.
2216
2217For example, to set an `http` proxy, add the following to your settings:
2218
2219```json
2220{
2221  "proxy": "http://127.0.0.1:10809"
2222}
2223```
2224
2225Or to set a `socks5` proxy:
2226
2227```json
2228{
2229  "proxy": "socks5h://localhost:10808"
2230}
2231```
2232
2233If 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.
2234
2235## Preview tabs
2236
2237- Description:
2238  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. \
2239   There are several ways to convert a preview tab into a regular tab:
2240
2241  - Double-clicking on the file
2242  - Double-clicking on the tab header
2243  - Using the `project_panel::OpenPermanent` action
2244  - Editing the file
2245  - Dragging the file to a different pane
2246
2247- Setting: `preview_tabs`
2248- Default:
2249
2250```json
2251"preview_tabs": {
2252  "enabled": true,
2253  "enable_preview_from_file_finder": false,
2254  "enable_preview_from_code_navigation": false,
2255}
2256```
2257
2258### Enable preview from file finder
2259
2260- Description: Determines whether to open files in preview mode when selected from the file finder.
2261- Setting: `enable_preview_from_file_finder`
2262- Default: `false`
2263
2264**Options**
2265
2266`boolean` values
2267
2268### Enable preview from code navigation
2269
2270- Description: Determines whether a preview tab gets replaced when code navigation is used to navigate away from the tab.
2271- Setting: `enable_preview_from_code_navigation`
2272- Default: `false`
2273
2274**Options**
2275
2276`boolean` values
2277
2278## File Finder
2279
2280### File Icons
2281
2282- Description: Whether to show file icons in the file finder.
2283- Setting: `file_icons`
2284- Default: `true`
2285
2286### Modal Max Width
2287
2288- Description: Max-width of the file finder modal. It can take one of these values: `small`, `medium`, `large`, `xlarge`, and `full`.
2289- Setting: `modal_max_width`
2290- Default: `small`
2291
2292### Skip Focus For Active In Search
2293
2294- Description: Determines whether the file finder should skip focus for the active file in search results.
2295- Setting: `skip_focus_for_active_in_search`
2296- Default: `true`
2297
2298## Preferred Line Length
2299
2300- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
2301- Setting: `preferred_line_length`
2302- Default: `80`
2303
2304**Options**
2305
2306`integer` values
2307
2308## Projects Online By Default
2309
2310- Description: Whether or not to show the online projects view by default.
2311- Setting: `projects_online_by_default`
2312- Default: `true`
2313
2314**Options**
2315
2316`boolean` values
2317
2318## Remove Trailing Whitespace On Save
2319
2320- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
2321- Setting: `remove_trailing_whitespace_on_save`
2322- Default: `true`
2323
2324**Options**
2325
2326`boolean` values
2327
2328## Search
2329
2330- Description: Search options to enable by default when opening new project and buffer searches.
2331- Setting: `search`
2332- Default:
2333
2334```json
2335"search": {
2336  "whole_word": false,
2337  "case_sensitive": false,
2338  "include_ignored": false,
2339  "regex": false
2340},
2341```
2342
2343## Seed Search Query From Cursor
2344
2345- Description: When to populate a new search's query based on the text under the cursor.
2346- Setting: `seed_search_query_from_cursor`
2347- Default: `always`
2348
2349**Options**
2350
23511. `always` always populate the search query with the word under the cursor
23522. `selection` only populate the search query when there is text selected
23533. `never` never populate the search query
2354
2355## Use Smartcase Search
2356
2357- 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. \
2358  This applies to both in-file searches and project-wide searches.
2359- Setting: `use_smartcase_search`
2360- Default: `false`
2361
2362**Options**
2363
2364`boolean` values
2365
2366Examples:
2367
2368- Searching for "function" would match "function", "Function", "FUNCTION", etc.
2369- Searching for "Function" would only match "Function", not "function" or "FUNCTION"
2370
2371## Show Call Status Icon
2372
2373- Description: Whether or not to show the call status icon in the status bar.
2374- Setting: `show_call_status_icon`
2375- Default: `true`
2376
2377**Options**
2378
2379`boolean` values
2380
2381## Completions
2382
2383- Description: Controls how completions are processed for this language.
2384- Setting: `completions`
2385- Default:
2386
2387```json
2388{
2389  "completions": {
2390    "words": "fallback",
2391    "lsp": true,
2392    "lsp_fetch_timeout_ms": 0,
2393    "lsp_insert_mode": "replace_suffix"
2394  }
2395}
2396```
2397
2398### Words
2399
2400- Description: Controls how words are completed. For large documents, not all words may be fetched for completion.
2401- Setting: `words`
2402- Default: `fallback`
2403
2404**Options**
2405
24061. `enabled` - Always fetch document's words for completions along with LSP completions
24072. `fallback` - Only if LSP response errors or times out, use document's words to show completions
24083. `disabled` - Never fetch or complete document's words for completions (word-based completions can still be queried via a separate action)
2409
2410### LSP
2411
2412- Description: Whether to fetch LSP completions or not.
2413- Setting: `lsp`
2414- Default: `true`
2415
2416**Options**
2417
2418`boolean` values
2419
2420### LSP Fetch Timeout (ms)
2421
2422- Description: When fetching LSP completions, determines how long to wait for a response of a particular server. When set to 0, waits indefinitely.
2423- Setting: `lsp_fetch_timeout_ms`
2424- Default: `0`
2425
2426**Options**
2427
2428`integer` values representing milliseconds
2429
2430### LSP Insert Mode
2431
2432- Description: Controls what range to replace when accepting LSP completions.
2433- Setting: `lsp_insert_mode`
2434- Default: `replace_suffix`
2435
2436**Options**
2437
24381. `insert` - Replaces text before the cursor, using the `insert` range described in the LSP specification
24392. `replace` - Replaces text before and after the cursor, using the `replace` range described in the LSP specification
24403. `replace_subsequence` - Behaves like `"replace"` if the text that would be replaced is a subsequence of the completion text, and like `"insert"` otherwise
24414. `replace_suffix` - Behaves like `"replace"` if the text after the cursor is a suffix of the completion, and like `"insert"` otherwise
2442
2443## Show Completions On Input
2444
2445- Description: Whether or not to show completions as you type.
2446- Setting: `show_completions_on_input`
2447- Default: `true`
2448
2449**Options**
2450
2451`boolean` values
2452
2453## Show Completion Documentation
2454
2455- Description: Whether to display inline and alongside documentation for items in the completions menu.
2456- Setting: `show_completion_documentation`
2457- Default: `true`
2458
2459**Options**
2460
2461`boolean` values
2462
2463## Show Edit Predictions
2464
2465- Description: Whether to show edit predictions as you type or manually by triggering `editor::ShowEditPrediction`.
2466- Setting: `show_edit_predictions`
2467- Default: `true`
2468
2469**Options**
2470
2471`boolean` values
2472
2473## Show Whitespaces
2474
2475- Description: Whether or not to render whitespace characters in the editor.
2476- Setting: `show_whitespaces`
2477- Default: `selection`
2478
2479**Options**
2480
24811. `all`
24822. `selection`
24833. `none`
24844. `boundary`
2485
2486## Soft Wrap
2487
2488- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
2489- Setting: `soft_wrap`
2490- Default: `none`
2491
2492**Options**
2493
24941. `none` to avoid wrapping generally, unless the line is too long
24952. `prefer_line` (deprecated, same as `none`)
24963. `editor_width` to wrap lines that overflow the editor width
24974. `preferred_line_length` to wrap lines that overflow `preferred_line_length` config value
24985. `bounded` to wrap lines at the minimum of `editor_width` and `preferred_line_length`
2499
2500## Wrap Guides (Vertical Rulers)
2501
2502- Description: Where to display vertical rulers as wrap-guides. Disable by setting `show_wrap_guides` to `false`.
2503- Setting: `wrap_guides`
2504- Default: []
2505
2506**Options**
2507
2508List of `integer` column numbers
2509
2510## Tab Size
2511
2512- Description: The number of spaces to use for each tab character.
2513- Setting: `tab_size`
2514- Default: `4`
2515
2516**Options**
2517
2518`integer` values
2519
2520## Telemetry
2521
2522- Description: Control what info is collected by Zed.
2523- Setting: `telemetry`
2524- Default:
2525
2526```json
2527"telemetry": {
2528  "diagnostics": true,
2529  "metrics": true
2530},
2531```
2532
2533**Options**
2534
2535### Diagnostics
2536
2537- Description: Setting for sending debug-related data, such as crash reports.
2538- Setting: `diagnostics`
2539- Default: `true`
2540
2541**Options**
2542
2543`boolean` values
2544
2545### Metrics
2546
2547- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
2548- Setting: `metrics`
2549- Default: `true`
2550
2551**Options**
2552
2553`boolean` values
2554
2555## Terminal
2556
2557- Description: Configuration for the terminal.
2558- Setting: `terminal`
2559- Default:
2560
2561```json
2562{
2563  "terminal": {
2564    "alternate_scroll": "off",
2565    "blinking": "terminal_controlled",
2566    "copy_on_select": false,
2567    "keep_selection_on_copy": false,
2568    "dock": "bottom",
2569    "default_width": 640,
2570    "default_height": 320,
2571    "detect_venv": {
2572      "on": {
2573        "directories": [".env", "env", ".venv", "venv"],
2574        "activate_script": "default"
2575      }
2576    },
2577    "env": {},
2578    "font_family": null,
2579    "font_features": null,
2580    "font_size": null,
2581    "line_height": "comfortable",
2582    "option_as_meta": false,
2583    "button": true,
2584    "shell": "system",
2585    "toolbar": {
2586      "breadcrumbs": true
2587    },
2588    "working_directory": "current_project_directory",
2589    "scrollbar": {
2590      "show": null
2591    }
2592  }
2593}
2594```
2595
2596### Terminal: Dock
2597
2598- Description: Control the position of the dock
2599- Setting: `dock`
2600- Default: `bottom`
2601
2602**Options**
2603
2604`"bottom"`, `"left"` or `"right"`
2605
2606### Terminal: Alternate Scroll
2607
2608- 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.
2609- Setting: `alternate_scroll`
2610- Default: `off`
2611
2612**Options**
2613
26141. Default alternate scroll mode to off
2615
2616```json
2617{
2618  "terminal": {
2619    "alternate_scroll": "off"
2620  }
2621}
2622```
2623
26242. Default alternate scroll mode to on
2625
2626```json
2627{
2628  "terminal": {
2629    "alternate_scroll": "on"
2630  }
2631}
2632```
2633
2634### Terminal: Blinking
2635
2636- Description: Set the cursor blinking behavior in the terminal
2637- Setting: `blinking`
2638- Default: `terminal_controlled`
2639
2640**Options**
2641
26421. Never blink the cursor, ignore the terminal mode
2643
2644```json
2645{
2646  "terminal": {
2647    "blinking": "off"
2648  }
2649}
2650```
2651
26522. Default the cursor blink to off, but allow the terminal to turn blinking on
2653
2654```json
2655{
2656  "terminal": {
2657    "blinking": "terminal_controlled"
2658  }
2659}
2660```
2661
26623. Always blink the cursor, ignore the terminal mode
2663
2664```json
2665{
2666  "terminal": {
2667    "blinking": "on"
2668  }
2669}
2670```
2671
2672### Terminal: Copy On Select
2673
2674- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
2675- Setting: `copy_on_select`
2676- Default: `false`
2677
2678**Options**
2679
2680`boolean` values
2681
2682**Example**
2683
2684```json
2685{
2686  "terminal": {
2687    "copy_on_select": true
2688  }
2689}
2690```
2691
2692### Terminal: Keep Selection On Copy
2693
2694- Description: Whether or not to keep the selection in the terminal after copying text.
2695- Setting: `keep_selection_on_copy`
2696- Default: `false`
2697
2698**Options**
2699
2700`boolean` values
2701
2702**Example**
2703
2704```json
2705{
2706  "terminal": {
2707    "keep_selection_on_copy": true
2708  }
2709}
2710```
2711
2712### Terminal: Env
2713
2714- 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
2715- Setting: `env`
2716- Default: `{}`
2717
2718**Example**
2719
2720```json
2721{
2722  "terminal": {
2723    "env": {
2724      "ZED": "1",
2725      "KEY": "value1:value2"
2726    }
2727  }
2728}
2729```
2730
2731### Terminal: Font Size
2732
2733- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
2734- Setting: `font_size`
2735- Default: `null`
2736
2737**Options**
2738
2739`integer` values
2740
2741```json
2742{
2743  "terminal": {
2744    "font_size": 15
2745  }
2746}
2747```
2748
2749### Terminal: Font Family
2750
2751- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
2752- Setting: `font_family`
2753- Default: `null`
2754
2755**Options**
2756
2757The name of any font family installed on the user's system
2758
2759```json
2760{
2761  "terminal": {
2762    "font_family": "Berkeley Mono"
2763  }
2764}
2765```
2766
2767### Terminal: Font Features
2768
2769- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
2770- Setting: `font_features`
2771- Default: `null`
2772- Platform: macOS and Windows.
2773
2774**Options**
2775
2776See Buffer Font Features
2777
2778```json
2779{
2780  "terminal": {
2781    "font_features": {
2782      "calt": false
2783      // See Buffer Font Features for more features
2784    }
2785  }
2786}
2787```
2788
2789### Terminal: Line Height
2790
2791- Description: Set the terminal's line height.
2792- Setting: `line_height`
2793- Default: `comfortable`
2794
2795**Options**
2796
27971. Use a line height that's `comfortable` for reading, 1.618. (default)
2798
2799```json
2800{
2801  "terminal": {
2802    "line_height": "comfortable"
2803  }
2804}
2805```
2806
28072. Use a `standard` line height, 1.3. This option is useful for TUIs, particularly if they use box characters
2808
2809```json
2810{
2811  "terminal": {
2812    "line_height": "standard"
2813  }
2814}
2815```
2816
28173.  Use a custom line height.
2818
2819```json
2820{
2821  "terminal": {
2822    "line_height": {
2823      "custom": 2
2824    }
2825  }
2826}
2827```
2828
2829### Terminal: Option As Meta
2830
2831- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
2832- Setting: `option_as_meta`
2833- Default: `false`
2834
2835**Options**
2836
2837`boolean` values
2838
2839```json
2840{
2841  "terminal": {
2842    "option_as_meta": true
2843  }
2844}
2845```
2846
2847### Terminal: Shell
2848
2849- Description: What shell to use when launching the terminal.
2850- Setting: `shell`
2851- Default: `system`
2852
2853**Options**
2854
28551. Use the system's default terminal configuration (usually the `/etc/passwd` file).
2856
2857```json
2858{
2859  "terminal": {
2860    "shell": "system"
2861  }
2862}
2863```
2864
28652. A program to launch:
2866
2867```json
2868{
2869  "terminal": {
2870    "shell": {
2871      "program": "sh"
2872    }
2873  }
2874}
2875```
2876
28773. A program with arguments:
2878
2879```json
2880{
2881  "terminal": {
2882    "shell": {
2883      "with_arguments": {
2884        "program": "/bin/bash",
2885        "args": ["--login"]
2886      }
2887    }
2888  }
2889}
2890```
2891
2892## Terminal: Detect Virtual Environments {#terminal-detect_venv}
2893
2894- 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.
2895- Setting: `detect_venv`
2896- Default:
2897
2898```json
2899{
2900  "terminal": {
2901    "detect_venv": {
2902      "on": {
2903        // Default directories to search for virtual environments, relative
2904        // to the current working directory. We recommend overriding this
2905        // in your project's settings, rather than globally.
2906        "directories": [".env", "env", ".venv", "venv"],
2907        // Can also be `csh`, `fish`, and `nushell`
2908        "activate_script": "default"
2909      }
2910    }
2911  }
2912}
2913```
2914
2915Disable with:
2916
2917```json
2918{
2919  "terminal": {
2920    "detect_venv": "off"
2921  }
2922}
2923```
2924
2925## Terminal: Toolbar
2926
2927- Description: Whether or not to show various elements in the terminal toolbar.
2928- Setting: `toolbar`
2929- Default:
2930
2931```json
2932{
2933  "terminal": {
2934    "toolbar": {
2935      "breadcrumbs": true
2936    }
2937  }
2938}
2939```
2940
2941**Options**
2942
2943At the moment, only the `breadcrumbs` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`.
2944
2945If the terminal title is empty, the breadcrumbs won't be shown.
2946
2947The shell running in the terminal needs to be configured to emit the title.
2948
2949Example command to set the title: `echo -e "\e]2;New Title\007";`
2950
2951### Terminal: Button
2952
2953- Description: Control to show or hide the terminal button in the status bar
2954- Setting: `button`
2955- Default: `true`
2956
2957**Options**
2958
2959`boolean` values
2960
2961```json
2962{
2963  "terminal": {
2964    "button": false
2965  }
2966}
2967```
2968
2969### Terminal: Working Directory
2970
2971- Description: What working directory to use when launching the terminal.
2972- Setting: `working_directory`
2973- Default: `"current_project_directory"`
2974
2975**Options**
2976
29771. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
2978
2979```json
2980{
2981  "terminal": {
2982    "working_directory": "current_project_directory"
2983  }
2984}
2985```
2986
29872. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
2988
2989```json
2990{
2991  "terminal": {
2992    "working_directory": "first_project_directory"
2993  }
2994}
2995```
2996
29973. Always use this platform's home directory (if we can find it)
2998
2999```json
3000{
3001  "terminal": {
3002    "working_directory": "always_home"
3003  }
3004}
3005```
3006
30074. 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.
3008
3009```json
3010{
3011  "terminal": {
3012    "working_directory": {
3013      "always": {
3014        "directory": "~/zed/projects/"
3015      }
3016    }
3017  }
3018}
3019```
3020
3021## Theme
3022
3023- 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.
3024- Setting: `theme`
3025- Default: `One Dark`
3026
3027### Theme Object
3028
3029- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
3030- Setting: `theme`
3031- Default:
3032
3033```json
3034"theme": {
3035  "mode": "system",
3036  "dark": "One Dark",
3037  "light": "One Light"
3038},
3039```
3040
3041### Mode
3042
3043- Description: Specify theme mode.
3044- Setting: `mode`
3045- Default: `system`
3046
3047**Options**
3048
30491. Set the theme to dark mode
3050
3051```json
3052{
3053  "mode": "dark"
3054}
3055```
3056
30572. Set the theme to light mode
3058
3059```json
3060{
3061  "mode": "light"
3062}
3063```
3064
30653. Set the theme to system mode
3066
3067```json
3068{
3069  "mode": "system"
3070}
3071```
3072
3073### Dark
3074
3075- Description: The name of the dark Zed theme to use for the UI.
3076- Setting: `dark`
3077- Default: `One Dark`
3078
3079**Options**
3080
3081Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
3082
3083### Light
3084
3085- Description: The name of the light Zed theme to use for the UI.
3086- Setting: `light`
3087- Default: `One Light`
3088
3089**Options**
3090
3091Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
3092
3093## Vim
3094
3095- Description: Whether or not to enable vim mode (work in progress).
3096- Setting: `vim_mode`
3097- Default: `false`
3098
3099## Project Panel
3100
3101- Description: Customize project panel
3102- Setting: `project_panel`
3103- Default:
3104
3105```json
3106{
3107  "project_panel": {
3108    "button": true,
3109    "default_width": 240,
3110    "dock": "left",
3111    "entry_spacing": "comfortable",
3112    "file_icons": true,
3113    "folder_icons": true,
3114    "git_status": true,
3115    "indent_size": 20,
3116    "auto_reveal_entries": true,
3117    "auto_fold_dirs": true,
3118    "scrollbar": {
3119      "show": null
3120    },
3121    "show_diagnostics": "all",
3122    "indent_guides": {
3123      "show": "always"
3124    },
3125    "hide_root": false
3126  }
3127}
3128```
3129
3130### Dock
3131
3132- Description: Control the position of the dock
3133- Setting: `dock`
3134- Default: `left`
3135
3136**Options**
3137
31381. Default dock position to left
3139
3140```json
3141{
3142  "dock": "left"
3143}
3144```
3145
31462. Default dock position to right
3147
3148```json
3149{
3150  "dock": "right"
3151}
3152```
3153
3154### Entry Spacing
3155
3156- Description: Spacing between worktree entries
3157- Setting: `entry_spacing`
3158- Default: `comfortable`
3159
3160**Options**
3161
31621. Comfortable entry spacing
3163
3164```json
3165{
3166  "entry_spacing": "comfortable"
3167}
3168```
3169
31702. Standard entry spacing
3171
3172```json
3173{
3174  "entry_spacing": "standard"
3175}
3176```
3177
3178### Git Status
3179
3180- Description: Indicates newly created and updated files
3181- Setting: `git_status`
3182- Default: `true`
3183
3184**Options**
3185
31861. Default enable git status
3187
3188```json
3189{
3190  "git_status": true
3191}
3192```
3193
31942. Default disable git status
3195
3196```json
3197{
3198  "git_status": false
3199}
3200```
3201
3202### Default Width
3203
3204- Description: Customize default width taken by project panel
3205- Setting: `default_width`
3206- Default: `240`
3207
3208**Options**
3209
3210`float` values
3211
3212### Auto Reveal Entries
3213
3214- Description: Whether to reveal it in the project panel automatically, when a corresponding project entry becomes active. Gitignored entries are never auto revealed.
3215- Setting: `auto_reveal_entries`
3216- Default: `true`
3217
3218**Options**
3219
32201. Enable auto reveal entries
3221
3222```json
3223{
3224  "auto_reveal_entries": true
3225}
3226```
3227
32282. Disable auto reveal entries
3229
3230```json
3231{
3232  "auto_reveal_entries": false
3233}
3234```
3235
3236### Auto Fold Dirs
3237
3238- Description: Whether to fold directories automatically when directory has only one directory inside.
3239- Setting: `auto_fold_dirs`
3240- Default: `true`
3241
3242**Options**
3243
32441. Enable auto fold dirs
3245
3246```json
3247{
3248  "auto_fold_dirs": true
3249}
3250```
3251
32522. Disable auto fold dirs
3253
3254```json
3255{
3256  "auto_fold_dirs": false
3257}
3258```
3259
3260### Indent Size
3261
3262- Description: Amount of indentation (in pixels) for nested items.
3263- Setting: `indent_size`
3264- Default: `20`
3265
3266### Indent Guides: Show
3267
3268- Description: Whether to show indent guides in the project panel.
3269- Setting: `indent_guides`
3270- Default:
3271
3272```json
3273"indent_guides": {
3274  "show": "always"
3275}
3276```
3277
3278**Options**
3279
32801. Show indent guides in the project panel
3281
3282```json
3283{
3284  "indent_guides": {
3285    "show": "always"
3286  }
3287}
3288```
3289
32902. Hide indent guides in the project panel
3291
3292```json
3293{
3294  "indent_guides": {
3295    "show": "never"
3296  }
3297}
3298```
3299
3300### Scrollbar: Show
3301
3302- 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.
3303- Setting: `scrollbar`
3304- Default:
3305
3306```json
3307"scrollbar": {
3308  "show": null
3309}
3310```
3311
3312**Options**
3313
33141. Show scrollbar in the project panel
3315
3316```json
3317{
3318  "scrollbar": {
3319    "show": "always"
3320  }
3321}
3322```
3323
33242. Hide scrollbar in the project panel
3325
3326```json
3327{
3328  "scrollbar": {
3329    "show": "never"
3330  }
3331}
3332```
3333
3334## Agent
3335
3336- Description: Customize agent behavior
3337- Setting: `agent`
3338- Default:
3339
3340```json
3341"agent": {
3342  "version": "2",
3343  "enabled": true,
3344  "button": true,
3345  "dock": "right",
3346  "default_width": 640,
3347  "default_height": 320,
3348  "default_view": "thread",
3349  "default_model": {
3350    "provider": "zed.dev",
3351    "model": "claude-sonnet-4"
3352  },
3353  "single_file_review": true,
3354}
3355```
3356
3357## Outline Panel
3358
3359- Description: Customize outline Panel
3360- Setting: `outline_panel`
3361- Default:
3362
3363```json
3364"outline_panel": {
3365  "button": true,
3366  "default_width": 300,
3367  "dock": "left",
3368  "file_icons": true,
3369  "folder_icons": true,
3370  "git_status": true,
3371  "indent_size": 20,
3372  "auto_reveal_entries": true,
3373  "auto_fold_dirs": true,
3374  "indent_guides": {
3375    "show": "always"
3376  },
3377  "scrollbar": {
3378    "show": null
3379  }
3380}
3381```
3382
3383## Calls
3384
3385- Description: Customize behavior when participating in a call
3386- Setting: `calls`
3387- Default:
3388
3389```json
3390"calls": {
3391  // Join calls with the microphone live by default
3392  "mute_on_join": false,
3393  // Share your project when you are the first to join a channel
3394  "share_on_join": false
3395},
3396```
3397
3398## Unnecessary Code Fade
3399
3400- Description: How much to fade out unused code.
3401- Setting: `unnecessary_code_fade`
3402- Default: `0.3`
3403
3404**Options**
3405
3406Float values between `0.0` and `0.9`, where:
3407
3408- `0.0` means no fading (unused code looks the same as used code)
3409- `0.9` means maximum fading (unused code is very faint but still visible)
3410
3411**Example**
3412
3413```json
3414{
3415  "unnecessary_code_fade": 0.5
3416}
3417```
3418
3419## UI Font Family
3420
3421- Description: The name of the font to use for text in the UI.
3422- Setting: `ui_font_family`
3423- Default: `Zed Plex Sans`
3424
3425**Options**
3426
3427The name of any font family installed on the system.
3428
3429## UI Font Features
3430
3431- Description: The OpenType features to enable for text in the UI.
3432- Setting: `ui_font_features`
3433- Default:
3434
3435```json
3436"ui_font_features": {
3437  "calt": false
3438}
3439```
3440
3441- Platform: macOS and Windows.
3442
3443**Options**
3444
3445Zed supports all OpenType features that can be enabled or disabled for a given UI font, as well as setting values for font features.
3446
3447For example, to disable font ligatures, add the following to your settings:
3448
3449```json
3450{
3451  "ui_font_features": {
3452    "calt": false
3453  }
3454}
3455```
3456
3457You can also set other OpenType features, like setting `cv01` to `7`:
3458
3459```json
3460{
3461  "ui_font_features": {
3462    "cv01": 7
3463  }
3464}
3465```
3466
3467## UI Font Fallbacks
3468
3469- Description: The font fallbacks to use for text in the UI.
3470- Setting: `ui_font_fallbacks`
3471- Default: `null`
3472- Platform: macOS and Windows.
3473
3474**Options**
3475
3476For example, to use `Nerd Font` as a fallback, add the following to your settings:
3477
3478```json
3479{
3480  "ui_font_fallbacks": ["Nerd Font"]
3481}
3482```
3483
3484## UI Font Size
3485
3486- Description: The default font size for text in the UI.
3487- Setting: `ui_font_size`
3488- Default: `16`
3489
3490**Options**
3491
3492`integer` values from `6` to `100` pixels (inclusive)
3493
3494## UI Font Weight
3495
3496- Description: The default font weight for text in the UI.
3497- Setting: `ui_font_weight`
3498- Default: `400`
3499
3500**Options**
3501
3502`integer` values between `100` and `900`
3503
3504## An example configuration:
3505
3506```json
3507// ~/.config/zed/settings.json
3508{
3509  "theme": "cave-light",
3510  "tab_size": 2,
3511  "preferred_line_length": 80,
3512  "soft_wrap": "none",
3513
3514  "buffer_font_size": 18,
3515  "buffer_font_family": "Zed Plex Mono",
3516
3517  "autosave": "on_focus_change",
3518  "format_on_save": "off",
3519  "vim_mode": false,
3520  "projects_online_by_default": true,
3521  "terminal": {
3522    "font_family": "FiraCode Nerd Font Mono",
3523    "blinking": "off"
3524  },
3525  "languages": {
3526    "C": {
3527      "format_on_save": "language_server",
3528      "preferred_line_length": 64,
3529      "soft_wrap": "preferred_line_length"
3530    }
3531  }
3532}
3533```