configuring_zed.md

   1# Configuring Zed
   2
   3## Folder-specific settings
   4
   5Folder-specific settings are used to override Zed's global settings for files within a specific directory in the project panel. To get started, create a `.zed` subdirectory and add a `settings.json` within it. It should be noted that folder-specific settings don't need to live only a project's root, but can be defined at multiple levels in the project hierarchy. In setups like this, Zed will find the configuration nearest to the file you are working in and apply those settings to it. In most cases, this level of flexibility won't be needed and a single configuration for all files in a project is all that is required; the `Zed > Settings > Open Local Settings` menu action is built for this case. Running this action will look for a `.zed/settings.json` file at the root of the first top-level directory in your project panel. If it does not exist, it will create it.
   6
   7The following global settings can be overridden with a folder-specific configuration:
   8
   9- `copilot`
  10- `enable_language_server`
  11- `ensure_final_newline_on_save`
  12- `format_on_save`
  13- `formatter`
  14- `hard_tabs`
  15- `language_overrides`
  16- `preferred_line_length`
  17- `remove_trailing_whitespace_on_save`
  18- `soft_wrap`
  19- `tab_size`
  20- `show_copilot_suggestions`
  21- `show_whitespaces`
  22
  23_See the Global settings section for details about these settings_
  24
  25## Global settings
  26
  27To get started with editing Zed's global settings, open `~/.config/zed/settings.json` via `⌘` + `,`, the command palette (`zed: open settings`), or the `Zed > Settings > Open Settings` application menu item.
  28
  29Here are all the currently available settings.
  30
  31## Active Pane Magnification
  32
  33- Description: Scale by which to zoom the active pane. When set to `1.0`, the active pane has the same size as others, but when set to a larger value, the active pane takes up more space.
  34- Setting: `active_pane_magnification`
  35- Default: `1.0`
  36
  37**Options**
  38
  39`float` values
  40
  41## Autosave
  42
  43- Description: When to automatically save edited buffers.
  44- Setting: `autosave`
  45- Default: `off`
  46
  47**Options**
  48
  491. To disable autosave, set it to `off`
  50
  51```json
  52{
  53  "autosave": "off"
  54}
  55```
  56
  572. To autosave when focus changes, use `on_focus_change`:
  58
  59```json
  60{
  61  "autosave": "on_focus_change"
  62}
  63```
  64
  653. To autosave when the active window changes, use `on_window_change`:
  66
  67```json
  68{
  69  "autosave": "on_window_change"
  70}
  71```
  72
  734. To autosave after an inactivity period, use `after_delay`:
  74
  75```json
  76{
  77  "autosave": {
  78    "after_delay": {
  79      "milliseconds": 1000
  80    }
  81  }
  82}
  83```
  84
  85## Auto Update
  86
  87- Description: Whether or not to automatically check for updates.
  88- Setting: `auto_update`
  89- Default: `true`
  90
  91**Options**
  92
  93`boolean` values
  94
  95## Buffer Font Family
  96
  97- Description: The name of a font to use for rendering text in the editor.
  98- Setting: `buffer_font_family`
  99- Default: `Zed Mono`
 100
 101**Options**
 102
 103The name of any font family installed on the user's system
 104
 105## Buffer Font Features
 106
 107- Description: The OpenType features to enable for text in the editor.
 108- Setting: `buffer_font_features`
 109- Default: `null`
 110
 111**Options**
 112
 113Zed supports a subset of OpenType features that can be enabled or disabled for a given buffer or terminal font. The following [OpenType features](https://en.wikipedia.org/wiki/List_of_typographic_features) can be enabled or disabled too: `calt`, `case`, `cpsp`, `frac`, `liga`, `onum`, `ordn`, `pnum`, `ss01`, `ss02`, `ss03`, `ss04`, `ss05`, `ss06`, `ss07`, `ss08`, `ss09`, `ss10`, `ss11`, `ss12`, `ss13`, `ss14`, `ss15`, `ss16`, `ss17`, `ss18`, `ss19`, `ss20`, `subs`, `sups`, `swsh`, `titl`, `tnum`, `zero`.
 114
 115For example, to disable ligatures for a given font you can add the following to your settings:
 116
 117```json
 118{
 119  "buffer_font_features": {
 120    "calt": false
 121  }
 122}
 123```
 124
 125## Buffer Font Size
 126
 127- Description: The default font size for text in the editor.
 128- Setting: `buffer_font_size`
 129- Default: `15`
 130
 131**Options**
 132
 133`integer` values
 134
 135## Confirm Quit
 136
 137- Description: Whether or not to prompt the user to confirm before closing the application.
 138- Setting: `confirm_quit`
 139- Default: `false`
 140
 141**Options**
 142
 143`boolean` values
 144
 145## Copilot
 146
 147- Description: Copilot-specific settings.
 148- Setting: `copilot`
 149- Default:
 150
 151```json
 152"copilot": {
 153  "disabled_globs": [
 154    ".env"
 155  ]
 156}
 157```
 158
 159**Options**
 160
 161### Disabled Globs
 162
 163- Description: The set of glob patterns for which Copilot should be disabled in any matching file.
 164- Setting: `disabled_globs`
 165- Default: [".env"]
 166
 167**Options**
 168
 169List of `string` values
 170
 171## Cursor Blink
 172
 173- Description: Whether or not the cursor blinks.
 174- Setting: `cursor_blink`
 175- Default: `true`
 176
 177**Options**
 178
 179`boolean` values
 180
 181## Default Dock Anchor
 182
 183- Description: The default anchor for new docks.
 184- Setting: `default_dock_anchor`
 185- Default: `bottom`
 186
 187**Options**
 188
 1891. Position the dock attached to the bottom of the workspace: `bottom`
 1902. Position the dock to the right of the workspace like a side panel: `right`
 1913. Position the dock full screen over the entire workspace: `expanded`
 192
 193## Editor Toolbar
 194
 195- Description: Whether or not to show various elements in the editor toolbar.
 196- Setting: `toolbar`
 197- Default:
 198
 199```json
 200"toolbar": {
 201  "breadcrumbs": true,
 202  "quick_actions": true
 203},
 204```
 205
 206**Options**
 207
 208Each option controls displaying of a particular toolbar element. If all elements are hidden, the editor toolbar is not displayed.
 209
 210## Enable Language Server
 211
 212- Description: Whether or not to use language servers to provide code intelligence.
 213- Setting: `enable_language_server`
 214- Default: `true`
 215
 216**Options**
 217
 218`boolean` values
 219
 220## Ensure Final Newline On Save
 221
 222- Description: Whether or not to ensure there's a single newline at the end of a buffer when saving it.
 223- Setting: `ensure_final_newline_on_save`
 224- Default: `true`
 225
 226**Options**
 227
 228`boolean` values
 229
 230## LSP
 231
 232- Description: Configuration for language servers.
 233- Setting: `lsp`
 234- Default: `null`
 235
 236**Options**
 237
 238The following settings can be overridden for specific language servers:
 239
 240- `initialization_options`
 241
 242To override settings for a language, add an entry for that language server's name to the `lsp` value. Example:
 243
 244```json
 245"lsp": {
 246  "rust-analyzer": {
 247    "initialization_options": {
 248      "check": {
 249        "command": "clippy" // rust-analyzer.check.command (default: "check")
 250      }
 251    }
 252  }
 253}
 254```
 255
 256## Format On Save
 257
 258- Description: Whether or not to perform a buffer format before saving.
 259- Setting: `format_on_save`
 260- Default: `on`
 261
 262**Options**
 263
 2641. `on`, enables format on save obeying `formatter` setting:
 265
 266```json
 267{
 268  "format_on_save": "on"
 269}
 270```
 271
 2722. `off`, disables format on save:
 273
 274```json
 275{
 276  "format_on_save": "off"
 277}
 278```
 279
 280## Formatter
 281
 282- Description: How to perform a buffer format.
 283- Setting: `formatter`
 284- Default: `language_server`
 285
 286**Options**
 287
 2881. To use the current language server, use `"language_server"`:
 289
 290```json
 291{
 292  "formatter": "language_server"
 293}
 294```
 295
 2962. 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):
 297
 298```json
 299{
 300  "formatter": {
 301    "external": {
 302      "command": "sed",
 303      "arguments": ["-e", "s/ *$//"]
 304    }
 305  }
 306}
 307```
 308
 309## Code Actions On Format
 310
 311- Description: The code actions to perform with the primary language server when formatting the buffer.
 312- Setting: `code_actions_on_format`
 313- Default: `{}`, except for Go it's `{ "source.organizeImports": true }`
 314
 315**Examples**
 316
 3171. Organize imports on format in TypeScript and TSX buffers:
 318
 319```json
 320{
 321  "languages": {
 322    "TypeScript": {
 323      "code_actions_on_format": {
 324        "source.organizeImports": true
 325      }
 326    },
 327    "TSX": {
 328      "code_actions_on_format": {
 329        "source.organizeImports": true
 330      }
 331    }
 332  }
 333}
 334```
 335
 3362. Run ESLint `fixAll` code action when formatting (requires Zed `0.125.0`):
 337
 338```json
 339{
 340  "languages": {
 341    "JavaScript": {
 342      "code_actions_on_format": {
 343        "source.fixAll.eslint": true
 344      }
 345    }
 346  }
 347}
 348```
 349
 3503. Run only a single ESLint rule when using `fixAll` (requires Zed `0.125.0`):
 351
 352```json
 353{
 354  "languages": {
 355    "JavaScript": {
 356      "code_actions_on_format": {
 357        "source.fixAll.eslint": true
 358      }
 359    }
 360  },
 361  "lsp": {
 362    "eslint": {
 363      "settings": {
 364        "codeActionOnSave": {
 365          "rules": ["import/order"]
 366        }
 367      }
 368    }
 369  }
 370}
 371```
 372
 373## Auto close
 374
 375- Description: Whether or not to automatically type closing characters for you.
 376- Setting: `use_autoclose`
 377- Default: `true`
 378
 379**Options**
 380
 381`boolean` values
 382
 383## File Types
 384
 385- Setting: `file_types`
 386- Description: Configure how Zed selects a language for a file based on its filename or extension.
 387- Default: `{}`
 388
 389**Examples**
 390
 391To interpret all `.c` files as C++, and files called `MyLockFile` as TOML:
 392
 393```json
 394{
 395  "file_types": {
 396    "C++": ["c"],
 397    "TOML": ["MyLockFile"]
 398  }
 399}
 400```
 401
 402## Git
 403
 404- Description: Configuration for git-related features.
 405- Setting: `git`
 406- Default:
 407
 408```json
 409"git": {
 410  "git_gutter": "tracked_files"
 411},
 412```
 413
 414### Git Gutter
 415
 416- Description: Whether or not to show the git gutter.
 417- Setting: `git_gutter`
 418- Default: `tracked_files`
 419
 420**Options**
 421
 4221. Show git gutter in tracked files
 423
 424```json
 425{
 426  "git_gutter": "tracked_files"
 427}
 428```
 429
 4302. Hide git gutter
 431
 432```json
 433{
 434  "git_gutter": "hide"
 435}
 436```
 437
 438## Hard Tabs
 439
 440- Description: Whether to indent lines using tab characters or multiple spaces.
 441- Setting: `hard_tabs`
 442- Default: `false`
 443
 444**Options**
 445
 446`boolean` values
 447
 448## Hover Popover Enabled
 449
 450- Description: Whether or not to show the informational hover box when moving the mouse over symbols in the editor.
 451- Setting: `hover_popover_enabled`
 452- Default: `true`
 453
 454**Options**
 455
 456`boolean` values
 457
 458## Inlay hints
 459
 460- Description: Configuration for displaying extra text with hints in the editor.
 461- Setting: `inlay_hints`
 462- Default:
 463
 464```json
 465"inlay_hints": {
 466  "enabled": false,
 467  "show_type_hints": true,
 468  "show_parameter_hints": true,
 469  "show_other_hints": true,
 470  "edit_debounce_ms": 700,
 471  "scroll_debounce_ms": 50
 472}
 473```
 474
 475**Options**
 476
 477Inlay hints querying consists of two parts: editor (client) and LSP server.
 478With 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.
 479At 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.
 480
 481The following languages have inlay hints preconfigured by Zed:
 482
 483- [Go](https://docs.zed.dev/languages/go)
 484- [Rust](https://docs.zed.dev/languages/rust)
 485- [Svelte](https://docs.zed.dev/languages/svelte)
 486- [Typescript](https://docs.zed.dev/languages/typescript)
 487
 488Use the `lsp` section for the server configuration. Examples are provided in the corresponding language documentation.
 489
 490Hints are not instantly queried in Zed, two kinds of debounces are used, either may be set to 0 to be disabled.
 491Settings-related hint updates are not debounced.
 492
 493## Journal
 494
 495- Description: Configuration for the journal.
 496- Setting: `journal`
 497- Default:
 498
 499```json
 500"journal": {
 501  "path": "~",
 502  "hour_format": "hour12"
 503}
 504```
 505
 506### Path
 507
 508- Description: The path of the directory where journal entries are stored.
 509- Setting: `path`
 510- Default: `~`
 511
 512**Options**
 513
 514`string` values
 515
 516### Hour Format
 517
 518- Description: The format to use for displaying hours in the journal.
 519- Setting: `hour_format`
 520- Default: `hour12`
 521
 522**Options**
 523
 5241. 12-hour format:
 525
 526```json
 527{
 528  "hour_format": "hour12"
 529}
 530```
 531
 5322. 24-hour format:
 533
 534```json
 535{
 536  "hour_format": "hour24"
 537}
 538```
 539
 540## Language Overrides
 541
 542- Description: Configuration overrides for specific languages.
 543- Setting: `language_overrides`
 544- Default: `null`
 545
 546**Options**
 547
 548To override settings for a language, add an entry for that languages name to the `language_overrides` value. Example:
 549
 550```json
 551"language_overrides": {
 552  "C": {
 553    "format_on_save": "off",
 554    "preferred_line_length": 64,
 555    "soft_wrap": "preferred_line_length"
 556  },
 557  "JSON": {
 558    "tab_size": 4
 559  }
 560}
 561```
 562
 563The following settings can be overridden for each specific language:
 564
 565- `enable_language_server`
 566- `ensure_final_newline_on_save`
 567- `format_on_save`
 568- `formatter`
 569- `hard_tabs`
 570- `preferred_line_length`
 571- `remove_trailing_whitespace_on_save`
 572- `show_copilot_suggestions`
 573- `show_whitespaces`
 574- `soft_wrap`
 575- `tab_size`
 576
 577These values take in the same options as the root-level settings with the same name.
 578
 579## Preferred Line Length
 580
 581- Description: The column at which to soft-wrap lines, for buffers where soft-wrap is enabled.
 582- Setting: `preferred_line_length`
 583- Default: `80`
 584
 585**Options**
 586
 587`integer` values
 588
 589## Projects Online By Default
 590
 591- Description: Whether or not to show the online projects view by default.
 592- Setting: `projects_online_by_default`
 593- Default: `true`
 594
 595**Options**
 596
 597`boolean` values
 598
 599## Remove Trailing Whitespace On Save
 600
 601- Description: Whether or not to remove any trailing whitespace from lines of a buffer before saving it.
 602- Setting: `remove_trailing_whitespace_on_save`
 603- Default: `true`
 604
 605**Options**
 606
 607`boolean` values
 608
 609## Show Call Status Icon
 610
 611- Description: Whether or not to show the call status icon in the status bar.
 612- Setting: `show_call_status_icon`
 613- Default: `true`
 614
 615**Options**
 616
 617`boolean` values
 618
 619## Show Completions On Input
 620
 621- Description: Whether or not to show completions as you type.
 622- Setting: `show_completions_on_input`
 623- Default: `true`
 624
 625**Options**
 626
 627`boolean` values
 628
 629## Show Completion Documentation
 630
 631- Description: Whether to display inline and alongside documentation for items in the completions menu.
 632- Setting: `show_completion_documentation`
 633- Default: `true`
 634
 635**Options**
 636
 637`boolean` values
 638
 639## Completion Documentation Debounce Delay
 640
 641- Description: The debounce delay before re-querying the language server for completion documentation when not included in original completion list.
 642- Setting: `completion_documentation_secondary_query_debounce`
 643- Default: `300` ms
 644
 645**Options**
 646
 647`integer` values
 648
 649## Show Copilot Suggestions
 650
 651- Description: Whether or not to show Copilot suggestions as you type or wait for a `copilot::Toggle`.
 652- Setting: `show_copilot_suggestions`
 653- Default: `true`
 654
 655**Options**
 656
 657`boolean` values
 658
 659## Show Whitespaces
 660
 661- Description: Whether or not to show render whitespace characters in the editor.
 662- Setting: `show_whitespaces`
 663- Default: `selection`
 664
 665**Options**
 666
 6671. `all`
 6682. `selection`
 6693. `none`
 670
 671## Soft Wrap
 672
 673- Description: Whether or not to automatically wrap lines of text to fit editor / preferred width.
 674- Setting: `soft_wrap`
 675- Default: `none`
 676
 677**Options**
 678
 6791. `editor_width`
 6802. `preferred_line_length`
 6813. `none`
 682
 683## Tab Size
 684
 685- Description: The number of spaces to use for each tab character.
 686- Setting: `tab_size`
 687- Default: `4`
 688
 689**Options**
 690
 691`integer` values
 692
 693## Telemetry
 694
 695- Description: Control what info is collected by Zed.
 696- Setting: `telemetry`
 697- Default:
 698
 699```json
 700"telemetry": {
 701  "diagnostics": true,
 702  "metrics": true
 703},
 704```
 705
 706**Options**
 707
 708### Diagnostics
 709
 710- Description: Setting for sending debug-related data, such as crash reports.
 711- Setting: `diagnostics`
 712- Default: `true`
 713
 714**Options**
 715
 716`boolean` values
 717
 718### Metrics
 719
 720- Description: Setting for sending anonymized usage data, such what languages you're using Zed with.
 721- Setting: `metrics`
 722- Default: `true`
 723
 724**Options**
 725
 726`boolean` values
 727
 728## Terminal
 729
 730- Description: Configuration for the terminal.
 731- Setting: `terminal`
 732- Default:
 733
 734```json
 735"terminal": {
 736  "alternate_scroll": "off",
 737  "blinking": "terminal_controlled",
 738  "copy_on_select": false,
 739  "env": {},
 740  "font_family": null,
 741  "font_features": null,
 742  "font_size": null,
 743  "option_as_meta": false,
 744  "shell": {},
 745  "toolbar": {
 746    "title": true
 747  },
 748  "working_directory": "current_project_directory"
 749}
 750```
 751
 752### Alternate Scroll
 753
 754- 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.
 755- Setting: `alternate_scroll`
 756- Default: `off`
 757
 758**Options**
 759
 7601. Default alternate scroll mode to on
 761
 762```json
 763{
 764  "alternate_scroll": "on"
 765}
 766```
 767
 7682. Default alternate scroll mode to off
 769
 770```json
 771{
 772  "alternate_scroll": "off"
 773}
 774```
 775
 776### Blinking
 777
 778- Description: Set the cursor blinking behavior in the terminal
 779- Setting: `blinking`
 780- Default: `terminal_controlled`
 781
 782**Options**
 783
 7841. Never blink the cursor, ignore the terminal mode
 785
 786```json
 787{
 788  "blinking": "off"
 789}
 790```
 791
 7922. Default the cursor blink to off, but allow the terminal to turn blinking on
 793
 794```json
 795{
 796  "blinking": "terminal_controlled"
 797}
 798```
 799
 8003. Always blink the cursor, ignore the terminal mode
 801
 802```json
 803"blinking": "on",
 804```
 805
 806### Copy On Select
 807
 808- Description: Whether or not selecting text in the terminal will automatically copy to the system clipboard.
 809- Setting: `copy_on_select`
 810- Default: `false`
 811
 812**Options**
 813
 814`boolean` values
 815
 816### Env
 817
 818- 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
 819- Setting: `env`
 820- Default: `{}`
 821
 822**Example**
 823
 824```json
 825"env": {
 826  "ZED": "1",
 827  "KEY": "value1:value2"
 828}
 829```
 830
 831### Font Size
 832
 833- Description: What font size to use for the terminal. When not set defaults to matching the editor's font size
 834- Setting: `font_size`
 835- Default: `null`
 836
 837**Options**
 838
 839`integer` values
 840
 841### Font Family
 842
 843- Description: What font to use for the terminal. When not set, defaults to matching the editor's font.
 844- Setting: `font_family`
 845- Default: `null`
 846
 847**Options**
 848
 849The name of any font family installed on the user's system
 850
 851### Font Features
 852
 853- Description: What font features to use for the terminal. When not set, defaults to matching the editor's font features.
 854- Setting: `font_features`
 855- Default: `null`
 856
 857**Options**
 858
 859See Buffer Font Features
 860
 861### Option As Meta
 862
 863- Description: Re-interprets the option keys to act like a 'meta' key, like in Emacs.
 864- Setting: `option_as_meta`
 865- Default: `true`
 866
 867**Options**
 868
 869`boolean` values
 870
 871### Shell
 872
 873- Description: What shell to use when launching the terminal.
 874- Setting: `shell`
 875- Default: `system`
 876
 877**Options**
 878
 8791. Use the system's default terminal configuration (usually the `/etc/passwd` file).
 880
 881```json
 882{
 883  "shell": "system"
 884}
 885```
 886
 8872. A program to launch:
 888
 889```json
 890"shell": {
 891    "program": "sh"
 892}
 893```
 894
 8953. A program with arguments:
 896
 897```json
 898"shell": {
 899  "with_arguments": {
 900    "program": "/bin/bash",
 901    "args": ["--login"]
 902  }
 903}
 904```
 905
 906## Terminal Toolbar
 907
 908- Description: Whether or not to show various elements in the terminal toolbar. It only affects terminals placed in the editor pane.
 909- Setting: `toolbar`
 910- Default:
 911
 912```json
 913"toolbar": {
 914  "title": true,
 915},
 916```
 917
 918**Options**
 919
 920At the moment, only the `title` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`. If the title is hidden, the terminal toolbar is not displayed.
 921
 922### Working Directory
 923
 924- Description: What working directory to use when launching the terminal.
 925- Setting: `working_directory`
 926- Default: `"current_project_directory"`
 927
 928**Options**
 929
 9301. Use the current file's project directory. Will Fallback to the first project directory strategy if unsuccessful
 931
 932```json
 933{
 934  "working_directory": "current_project_directory"
 935}
 936```
 937
 9382. Use the first project in this workspace's directory. Will fallback to using this platform's home directory.
 939
 940```json
 941{
 942  "working_directory": "first_project_directory"
 943}
 944```
 945
 9463. Always use this platform's home directory (if we can find it)
 947
 948```json
 949{
 950  "working_directory": "always_home"
 951}
 952```
 953
 9544. 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.
 955
 956```json
 957"working_directory": {
 958  "always": {
 959    "directory": "~/zed/projects/"
 960  }
 961}
 962```
 963
 964## Theme
 965
 966- 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.
 967- Setting: `theme`
 968- Default: `One Dark`
 969
 970### Theme Object
 971
 972- Description: Specify the theme using an object that includes the `mode`, `dark`, and `light` themes.
 973- Setting: `theme`
 974- Default:
 975
 976```json
 977"theme": {
 978  "mode": "dark",
 979  "dark": "One Dark",
 980  "light": "One Light"
 981},
 982```
 983
 984### Mode
 985
 986- Description: Specify theme mode.
 987- Setting: `mode`
 988- Default: `dark`
 989
 990**Options**
 991
 9921. Set the theme to dark mode
 993
 994```json
 995{
 996  "mode": "dark"
 997}
 998```
 999
10002. Set the theme to light mode
1001
1002```json
1003{
1004  "mode": "light"
1005}
1006```
1007
10083. Set the theme to system mode
1009
1010```json
1011{
1012  "mode": "system"
1013}
1014```
1015
1016### Dark
1017
1018- Description: The name of the dark Zed theme to use for the UI.
1019- Setting: `dark`
1020- Default: `One Dark`
1021
1022**Options**
1023
1024Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
1025
1026### Light
1027
1028- Description: The name of the light Zed theme to use for the UI.
1029- Setting: `light`
1030- Default: `One Light`
1031
1032**Options**
1033
1034Run the `theme selector: toggle` action in the command palette to see a current list of valid themes names.
1035
1036## Vim
1037
1038- Description: Whether or not to enable vim mode (work in progress).
1039- Setting: `vim_mode`
1040- Default: `false`
1041
1042## Project Panel
1043
1044- Description: Customise project panel
1045- Setting: `project_panel`
1046- Default:
1047
1048```json
1049"project_panel": {
1050  "dock": "left",
1051  "git_status": true,
1052  "default_width": "N/A - width in pixels"
1053},
1054```
1055
1056### Dock
1057
1058- Description: Control the position of the dock
1059- Setting: `dock`
1060- Default: `left`
1061
1062**Options**
1063
10641. Default dock position to left
1065
1066```json
1067{
1068  "dock": "left"
1069}
1070```
1071
10722. Default dock position to right
1073
1074```json
1075{
1076  "dock": "right"
1077}
1078```
1079
1080### Git Status
1081
1082- Description: Indicates newly created and updated files
1083- Setting: `git_status`
1084- Default: `true`
1085
10861. Default enable git status
1087
1088```json
1089{
1090  "git_status": true
1091}
1092```
1093
10942. Default disable git status
1095
1096```json
1097{
1098  "git_status": false
1099}
1100```
1101
1102### Default Width
1103
1104- Description: Customise default width taken by project panel
1105- Setting: `default_width`
1106- Default: N/A width in pixels (eg: 420)
1107
1108**Options**
1109
1110`boolean` values
1111
1112## An example configuration:
1113
1114```json
1115// ~/.config/zed/settings.json
1116{
1117  "theme": "cave-light",
1118  "tab_size": 2,
1119  "preferred_line_length": 80,
1120  "soft_wrap": "none",
1121
1122  "buffer_font_size": 18,
1123  "buffer_font_family": "Zed Mono",
1124
1125  "autosave": "on_focus_change",
1126  "format_on_save": "off",
1127  "vim_mode": false,
1128  "projects_online_by_default": true,
1129  "terminal": {
1130    "font_family": "FiraCode Nerd Font Mono",
1131    "blinking": "off"
1132  },
1133  "language_overrides": {
1134    "C": {
1135      "format_on_save": "language_server",
1136      "preferred_line_length": 64,
1137      "soft_wrap": "preferred_line_length"
1138    }
1139  }
1140}
1141```