all-settings.md

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