Skip to content

Instantly share code, notes, and snippets.

@luizomf
Last active June 7, 2025 14:17
Show Gist options
  • Save luizomf/e751a60d623fe2b06e0062ccc54cde0e to your computer and use it in GitHub Desktop.
Save luizomf/e751a60d623fe2b06e0062ccc54cde0e to your computer and use it in GitHub Desktop.
Zed Config Backup - settings.json, keymap.json e tema personalizado (Catppuccin Blur editado por @luizomf). Inclui ajustes de fonte, Vim Mode, atalhos customizados, LSP com Pyright e Ruff, e sintaxe Dracula-like. Ideal para restaurar ou replicar em outras máquinas. Obs: este Gist pode ser atualizado a qualquer momento - faça um fork ou copie os …

Zed Editor: Configuração Completa do Luiz Otávio (luizomf)

Este Gist contém um snapshot completo da minha configuração atual do Zed Editor, incluindo:

  • settings.json: fontes, temas, Vim Mode, Tailwind LSP e ajustes de UX
  • keymap.json: atalhos personalizados, principalmente para o Vim Mode
  • catppuccin-blur-edited-by-luizomf.json: tema visual escuro com blur + sintaxe baseada no Dracula

Motivo do backup

Essa config foi afinada ao longo do tempo, então deixo salva aqui pra:

  • Restaurar rapidamente se o Zed quebrar ou for resetado
  • Replicar em outra máquina (Mac/Windows)
  • Compartilhar com quem quiser um setup pronto pro Zed com foco em produtividade e legibilidade

Arquivos incluídos

settings.json

  • Fonte do UI: 16px - Buffer e terminal: 24px com JetBrainsMonoNL Nerd Font Mono
  • Vim Mode ativado
  • LSP com pyright + ruff para Python
  • Desabilita várias distrações: inline blame, edit prediction, tabs preview
  • Regex extra para Tailwind com cva, clsx, cn, twMerge

keymap.json

  • Remapeamentos úteis para o modo normal e insert do Vim
  • Atalhos de navegação de palavras, delete até o fim/início, wrap toggle
  • jj para voltar ao modo normal
  • Desativa cmd-q por segurança

catppuccin-blur-edited-by-luizomf.json

  • Tema visual escuro com blur translúcido no background
  • Sintaxe baseada no Dracula, com tweaks para leitura e contraste
  • Altamente customizado, incluindo cores de painel, editor, terminal e status bar

📦 Como usar

  1. Coloque o tema em:
~/.config/zed/themes/catppuccin-blur-edited-by-luizomf.json
  1. Coloque os atalhos em:
~/.config/zed/keymap.json
  1. Coloque as configs em:
~/.config/zed/settings.json
  1. Reinicie o Zed (ou use zed: Reload Config no Command Palette)

Observação

Esse setup foi testado em macOS com Python 3.11+ (via pyenv e uv), pyright, ruff, e tema escuro. Pode requerer ajustes mínimos em Windows/Linux.


Curtiu? Pode usar como base pro seu próprio tema ou fork.
Se quebrar algo, só clonar de volta e tá novo.

👨‍🚀 — Luiz Otávio (@luizomf)

{
"$schema": "https://zed.dev/schema/themes/v0.2.0.json",
"name": "Catppuccin Blur (Edited by luizomf)",
"author": "Jens Lystad <[email protected]>",
"themes": [
{
"name": "Catppuccin Mocha Blur (Edited by luizomf)",
"appearance": "dark",
"style": {
"accents": [
"#cbb0f766",
"#b9c3fc66",
"#86caee66",
"#aee1b266",
"#f0e0bd66",
"#f1ba9d66",
"#eb9ab766"
],
"background.appearance": "blurred",
"border": "#00000000",
"border.variant": "#00000000",
"border.focused": "#b4befe",
"border.selected": "#cba6f7",
"border.transparent": "#a6e3a1",
"border.disabled": "#6c7086",
"elevated_surface.background": "#181825",
"surface.background": "#1e1e2ed0",
"background": "#13141fe9",
"element.background": "#11111b",
"element.hover": "#45475a4d",
"element.active": "#00000000",
"element.selected": "#3132444d",
"element.disabled": "#6c7086",
"drop_target.background": "#f5e0dc18",
"ghost_element.background": "#11111b",
"ghost_element.hover": "#f5e0dc08",
"ghost_element.active": "#f5e0dc12",
"ghost_element.selected": "#f5e0dc12",
"ghost_element.disabled": "#6c7086",
"text": "#cdd6f4",
"text.muted": "#bac2de",
"text.placeholder": "#585b70",
"text.disabled": "#45475a",
"text.accent": "#cba6f7",
"icon": "#cdd6f4",
"icon.muted": "#7f849c",
"icon.disabled": "#6c7086",
"icon.placeholder": "#585b70",
"icon.accent": "#cba6f7",
"status_bar.background": "#13141fe9",
"title_bar.background": "#13141fe9",
"title_bar.inactive_background": "#11111bd9",
"toolbar.background": "#00000000",
"tab_bar.background": "#00000000",
"tab.inactive_background": "#00000000",
"tab.active_background": "#f5e0dc12",
"search.match_background": "#94e2d533",
"panel.background": "#00000000",
"panel.focused_border": "00000000",
"panel.indent_guide": "#31324499",
"panel.indent_guide_active": "#585b70",
"panel.indent_guide_hover": "#cba6f7",
"pane.focused_border": "#cdd6f4",
"pane_group.border": "#313244",
"scrollbar.thumb.background": "#f5e0dc12",
"scrollbar.thumb.hover_background": "#6c7086",
"scrollbar.thumb.border": "#cba6f7",
"scrollbar.track.background": "#00000000",
"scrollbar.track.border": "#00000000",
"editor.foreground": "#cdd6f4",
"editor.background": "#00000000",
"editor.gutter.background": "#00000000",
"editor.subheader.background": "#181825",
"editor.active_line.background": "#00000000",
"editor.highlighted_line.background": "#f5e0dc12",
"editor.line_number": "#ffffff20",
"editor.active_line_number": "#f5e0dc90",
"editor.invisible": "#9399b266",
"editor.wrap_guide": "#585b70",
"editor.active_wrap_guide": "#585b70",
"editor.document_highlight.bracket_background": "#cba6f717",
"editor.document_highlight.read_background": "#a6adc829",
"editor.document_highlight.write_background": "#a6adc829",
"editor.indent_guide": "#31324499",
"editor.indent_guide_active": "#585b70",
"terminal.background": "#00000000",
"terminal.ansi.background": "#1e1e2e",
"terminal.foreground": "#cdd6f4",
"terminal.dim_foreground": "#7f849c",
"terminal.bright_foreground": "#cdd6f4",
"terminal.ansi.black": "#45475a",
"terminal.ansi.red": "#f38ba8",
"terminal.ansi.green": "#a6e3a1",
"terminal.ansi.yellow": "#f9e2af",
"terminal.ansi.blue": "#89b4fa",
"terminal.ansi.magenta": "#f5c2e7",
"terminal.ansi.cyan": "#94e2d5",
"terminal.ansi.white": "#bac2de",
"terminal.ansi.bright_black": "#585b70",
"terminal.ansi.bright_red": "#f38ba8",
"terminal.ansi.bright_green": "#a6e3a1",
"terminal.ansi.bright_yellow": "#f9e2af",
"terminal.ansi.bright_blue": "#89b4fa",
"terminal.ansi.bright_magenta": "#f5c2e7",
"terminal.ansi.bright_cyan": "#94e2d5",
"terminal.ansi.bright_white": "#a6adc8",
"terminal.ansi.dim_black": "#45475a",
"terminal.ansi.dim_red": "#f38ba8",
"terminal.ansi.dim_green": "#a6e3a1",
"terminal.ansi.dim_yellow": "#f9e2af",
"terminal.ansi.dim_blue": "#89b4fa",
"terminal.ansi.dim_magenta": "#f5c2e7",
"terminal.ansi.dim_cyan": "#94e2d5",
"terminal.ansi.dim_white": "#bac2de",
"link_text.hover": "#89dceb",
"conflict": "#fab387",
"conflict.border": "#fab387",
"conflict.background": "#fab38726",
"created": "#a6e3a1",
"created.border": "#a6e3a1",
"created.background": "#a6e3a126",
"deleted": "#f38ba8",
"deleted.border": "#f38ba8",
"deleted.background": "#f38ba826",
"hidden": "#6c7086",
"hidden.border": "#6c7086",
"hidden.background": "#181825",
"hint": "#7c7f98",
"hint.border": "#585b70",
"hint.background": "#313244c0",
"ignored": "#6c7086",
"ignored.border": "#6c7086",
"ignored.background": "#6c708626",
"modified": "#f9e2af",
"modified.border": "#f9e2af",
"modified.background": "#f9e2af26",
"predictive": "#6c7086",
"predictive.border": "#b4befe",
"predictive.background": "#181825",
"renamed": "#74c7ec",
"renamed.border": "#74c7ec",
"renamed.background": "#74c7ec26",
"info": "#94e2d5",
"info.border": "#94e2d5",
"info.background": "#1c2d33",
"warning": "#f9e2af",
"warning.border": "#f9e2af",
"warning.background": "#342a1e",
"error": "#f38ba8",
"error.border": "#f38ba8",
"error.background": "#3b2022",
"success": "#a6e3a1",
"success.border": "#a6e3a1",
"success.background": "#213023",
"unreachable": "#f38ba8",
"unreachable.border": "#f38ba8",
"unreachable.background": "#f38ba81f",
"players": [
{
"cursor": "#f5e0dc",
"selection": "#585b7080",
"background": "#f5e0dc"
},
{
"cursor": "#cbb0f7",
"selection": "#cbb0f733",
"background": "#cbb0f7"
},
{
"cursor": "#b9c3fc",
"selection": "#b9c3fc33",
"background": "#b9c3fc"
},
{
"cursor": "#86caee",
"selection": "#86caee33",
"background": "#86caee"
},
{
"cursor": "#aee1b2",
"selection": "#aee1b233",
"background": "#aee1b2"
},
{
"cursor": "#f0e0bd",
"selection": "#f0e0bd33",
"background": "#f0e0bd"
},
{
"cursor": "#f1ba9d",
"selection": "#f1ba9d33",
"background": "#f1ba9d"
},
{
"cursor": "#eb9ab7",
"selection": "#eb9ab733",
"background": "#eb9ab7"
}
],
"version_control.added": "#a6e3a1",
"version_control.added_background": "$a6e3a126",
"version_control.deleted": "#f38ba8",
"version_control.deleted_background": "#f38ba826",
"version_control.modified": "#f9e2af",
"version_control.modified_background": "#f9e2af26",
"version_control.renamed": "#74c7ec",
"version_control.conflict": "#fab387",
"version_control.conflict_background": "#fab38726",
"version_control.ignored": "#6c7086",
"syntax": {
"attribute": {
"color": "#ff79c6ff",
"font_style": null,
"font_weight": null
},
"boolean": {
"color": "#ff79c6ff",
"font_style": null,
"font_weight": null
},
"comment": {
"color": "#6272a4ff",
"font_style": null,
"font_weight": null
},
"comment.doc": {
"color": "#ff79c6ff",
"font_style": null,
"font_weight": null
},
"constant": {
"color": "#bd93f9ff",
"font_style": null,
"font_weight": null
},
"constructor": {
"color": "#ff79c6ff",
"font_style": null,
"font_weight": null
},
"embedded": {
"color": "#f8f8f2ff",
"font_style": null,
"font_weight": null
},
"emphasis": {
"color": "#f1fa8cff",
"font_style": "italic",
"font_weight": null
},
"emphasis.strong": {
"color": "#ffb86cff",
"font_style": null,
"font_weight": 700
},
"enum": {
"color": "#bd93f9ff",
"font_style": null,
"font_weight": null
},
"function": {
"color": "#50fa7bff",
"font_style": null,
"font_weight": null
},
"hint": {
"color": "#bd93f9ff",
"font_style": null,
"font_weight": 700
},
"keyword": {
"color": "#ff79c6ff",
"font_style": null,
"font_weight": null
},
"label": {
"color": "#f8f8f2ff",
"font_style": null,
"font_weight": null
},
"link_text": {
"color": "#ff79c6ff",
"font_style": "normal",
"font_weight": null
},
"link_uri": {
"color": "#8be9fdff",
"font_style": null,
"font_weight": null
},
"number": {
"color": "#bd93f9ff",
"font_style": null,
"font_weight": null
},
"operator": {
"color": "#ff79c6ff",
"font_style": null,
"font_weight": null
},
"predictive": {
"color": null,
"font_style": "italic",
"font_weight": null
},
"preproc": {
"color": "#6272a4ff",
"font_style": null,
"font_weight": null
},
"primary": {
"color": null,
"font_style": null,
"font_weight": null
},
"property": {
"color": "#8be9fdff",
"font_style": null,
"font_weight": null
},
"punctuation": {
"color": "#ff79c6ff",
"font_style": null,
"font_weight": null
},
"punctuation.bracket": {
"color": "#f8f8f2ff",
"font_style": null,
"font_weight": null
},
"punctuation.delimiter": {
"color": "#ff79c6ff",
"font_style": null,
"font_weight": null
},
"punctuation.list_marker": {
"color": "#8be9fdff",
"font_style": null,
"font_weight": null
},
"punctuation.special": {
"color": "#ff79c6ff",
"font_style": null,
"font_weight": null
},
"string": {
"color": "#f1fa8cff",
"font_style": null,
"font_weight": null
},
"string.escape": {
"color": "#ff79c6ff",
"font_style": null,
"font_weight": null
},
"string.regex": {
"color": "#ff5555ff",
"font_style": null,
"font_weight": null
},
"string.special": {
"color": "#ff79c6ff",
"font_style": null,
"font_weight": null
},
"string.special.symbol": {
"color": "#bd93f9ff",
"font_style": null,
"font_weight": null
},
"tag": {
"color": "#ff79c6ff",
"font_style": null,
"font_weight": null
},
"text.literal": {
"color": "#50fa7bff",
"font_style": null,
"font_weight": null
},
"title": {
"color": "#bd93f9ff",
"font_style": null,
"font_weight": 600
},
"type": {
"color": "#8be9fdff",
"font_style": null,
"font_weight": null
},
"type.interface": {
"color": "#8be9fdff",
"font_style": "italic",
"font_weight": null
},
"type.super": {
"color": "#8be9fdff",
"font_style": "italic",
"font_weight": null
},
"variable": {
"color": "#f8f8f2ff",
"font_style": null,
"font_weight": null
},
"variable.member": {
"color": "#f8f8f2ff",
"font_style": null,
"font_weight": null
},
"variable.parameter": {
"color": "#ffb86cff",
"font_style": "italic",
"font_weight": null
},
"variable.special": {
"color": "#bd93f9ff",
"font_style": "italic",
"font_weight": null
},
"variant": {
"color": "#bd93f9ff",
"font_style": null,
"font_weight": null
},
"variable.builtin": {
"color": "#f38ba8",
"font_style": null,
"font_weight": null
},
"constant.builtin": {
"color": "#fab387",
"font_style": null,
"font_weight": null
},
"constant.macro": {
"color": "#cba6f7",
"font_style": null,
"font_weight": null
},
"module": {
"color": "#f9e2af",
"font_style": "italic",
"font_weight": null
},
"string.documentation": {
"color": "#94e2d5",
"font_style": null,
"font_weight": null
},
"string.regexp": {
"color": "#fab387",
"font_style": null,
"font_weight": null
},
"string.special.path": {
"color": "#f5c2e7",
"font_style": null,
"font_weight": null
},
"string.special.url": {
"color": "#f5e0dc",
"font_style": "italic",
"font_weight": null
},
"character": {
"color": "#94e2d5",
"font_style": null,
"font_weight": null
},
"character.special": {
"color": "#f5c2e7",
"font_style": null,
"font_weight": null
},
"number.float": {
"color": "#fab387",
"font_style": null,
"font_weight": null
},
"type.builtin": {
"color": "#cba6f7",
"font_style": "italic",
"font_weight": null
},
"type.definition": {
"color": "#f9e2af",
"font_style": null,
"font_weight": null
},
"function.builtin": {
"color": "#fab387",
"font_style": null,
"font_weight": null
},
"function.call": {
"color": "#89b4fa",
"font_style": null,
"font_weight": null
},
"function.macro": {
"color": "#94e2d5",
"font_style": null,
"font_weight": null
},
"function.method": {
"color": "#89b4fa",
"font_style": null,
"font_weight": null
},
"function.method.call": {
"color": "#89b4fa",
"font_style": null,
"font_weight": null
},
"keyword.modifier": {
"color": "#cba6f7",
"font_style": null,
"font_weight": null
},
"keyword.type": {
"color": "#cba6f7",
"font_style": null,
"font_weight": null
},
"keyword.coroutine": {
"color": "#cba6f7",
"font_style": null,
"font_weight": null
},
"keyword.function": {
"color": "#cba6f7",
"font_style": null,
"font_weight": null
},
"keyword.operator": {
"color": "#cba6f7",
"font_style": null,
"font_weight": null
},
"keyword.import": {
"color": "#cba6f7",
"font_style": null,
"font_weight": null
},
"keyword.repeat": {
"color": "#cba6f7",
"font_style": null,
"font_weight": null
},
"keyword.return": {
"color": "#cba6f7",
"font_style": null,
"font_weight": null
},
"keyword.debug": {
"color": "#cba6f7",
"font_style": null,
"font_weight": null
},
"keyword.exception": {
"color": "#cba6f7",
"font_style": null,
"font_weight": null
},
"keyword.conditional": {
"color": "#cba6f7",
"font_style": null,
"font_weight": null
},
"keyword.conditional.ternary": {
"color": "#cba6f7",
"font_style": null,
"font_weight": null
},
"keyword.directive": {
"color": "#f5c2e7",
"font_style": null,
"font_weight": null
},
"keyword.directive.define": {
"color": "#f5c2e7",
"font_style": null,
"font_weight": null
},
"keyword.export": {
"color": "#89dceb",
"font_style": null,
"font_weight": null
},
"punctuation.special.symbol": {
"color": "#f2cdcd",
"font_style": null,
"font_weight": null
},
"comment.documentation": {
"color": "#9399b2",
"font_style": "italic",
"font_weight": null
},
"comment.error": {
"color": "#f38ba8",
"font_style": "italic",
"font_weight": null
},
"comment.warning": {
"color": "#f9e2af",
"font_style": "italic",
"font_weight": null
},
"comment.hint": {
"color": "#89b4fa",
"font_style": "italic",
"font_weight": null
},
"comment.todo": {
"color": "#f2cdcd",
"font_style": "italic",
"font_weight": null
},
"comment.note": {
"color": "#f5e0dc",
"font_style": "italic",
"font_weight": null
},
"diff.plus": {
"color": "#a6e3a1",
"font_style": null,
"font_weight": null
},
"diff.minus": {
"color": "#f38ba8",
"font_style": null,
"font_weight": null
},
"tag.attribute": {
"color": "#f9e2af",
"font_style": "italic",
"font_weight": null
},
"tag.delimiter": {
"color": "#94e2d5",
"font_style": null,
"font_weight": null
},
"parameter": {
"color": "#eba0ac",
"font_style": null,
"font_weight": null
},
"field": {
"color": "#b4befe",
"font_style": null,
"font_weight": null
},
"namespace": {
"color": "#f9e2af",
"font_style": "italic",
"font_weight": null
},
"float": {
"color": "#fab387",
"font_style": null,
"font_weight": null
},
"symbol": {
"color": "#f5c2e7",
"font_style": null,
"font_weight": null
},
"text": {
"color": "#cdd6f4",
"font_style": null,
"font_weight": null
},
"concept": {
"color": "#74c7ec",
"font_style": null,
"font_weight": null
},
"function.decorator": {
"color": "#fab387",
"font_style": null,
"font_weight": null
},
"type.class.definition": {
"color": "#f9e2af",
"font_style": null,
"font_weight": 700
},
"parent": {
"color": "#fab387",
"font_style": null,
"font_weight": null
},
"predoc": {
"color": "#f38ba8",
"font_style": null,
"font_weight": null
},
"tag.doctype": {
"color": "#cba6f7",
"font_style": null,
"font_weight": null
},
"string.doc": {
"color": "#94e2d5",
"font_style": "italic",
"font_weight": null
}
}
}
}
]
}
// Zed keymap
//
// For information on binding keys, see the Zed
// documentation: https://zed.dev/docs/key-bindings
//
// To see the default key bindings run `zed: open default keymap`
// from the command palette.
[
{
"context": "",
"bindings": {
"cmd-q": null
// "cmd-w": null
}
},
{
"context": "Workspace",
"bindings": {
// "shift shift": "file_finder::Toggle"
"cmd-ctrl-b": "project_panel::ToggleFocus",
"alt-z": "editor::ToggleSoftWrap"
}
},
{
"context": "vim_mode == insert",
"bindings": {
"ctrl-l": ["workspace::SendKeystrokes", "delete"],
// "ctrl-j": ["workspace::SendKeystrokes", "escape"],
"ctrl-h": ["workspace::SendKeystrokes", "backspace"]
}
},
{
"context": "Editor",
"bindings": {
"ctrl-alt-f": "editor::MoveToNextWordEnd",
"ctrl-shift-alt-f": "editor::SelectToNextWordEnd",
"ctrl-alt-b": "editor::MoveToPreviousWordStart",
"ctrl-shift-alt-b": "editor::SelectToPreviousWordStart",
"ctrl-shift-a": "editor::SelectToBeginningOfLine",
"ctrl-shift-e": "editor::SelectToEndOfLine",
"ctrl-shift-w": "editor::DeleteToPreviousWordStart",
"ctrl-shift-u": "editor::DeleteToNextWordEnd"
}
},
{
"context": "vim_mode == insert",
"bindings": {
"j j": "vim::NormalBefore"
}
},
{
"context": "ProjectPanel",
"use_key_equivalents": true,
"bindings": {
"ctrl-\\": "project_panel::CollapseAllEntries"
}
}
]
{
"agent": {
"model_parameters": [],
"default_model": {
"provider": "google",
"model": "gemini-2.0-flash"
},
"version": "2"
},
"features": {
"edit_prediction_provider": "none"
},
"ui_font_size": 16,
"buffer_font_size": 24,
"terminal": {
"font_size": 24,
"font_family": "JetBrainsMonoNL Nerd Font Mono",
"cursor_shape": "block"
},
"base_keymap": "VSCode",
"project_panel": {
"auto_fold_dirs": false
},
"git": {
"inline_blame": {
"enabled": false
}
},
"wrap_guides": [80, 120],
"preview_tabs": {
"enabled": false
},
"show_completions_on_input": false,
"show_completion_documentation": true,
"show_edit_predictions": false,
"lsp": {
"tailwindcss-language-server": {
"settings": {
"experimental": {
"classRegex": [
["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"],
["cn\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"],
["clsx\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"],
["twMerge\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"]
]
}
}
}
},
"theme": {
"mode": "dark",
"light": "Catppuccin Latte (Blur)",
"dark": "Catppuccin Mocha Blur (Edited by luizomf)"
},
"experimental.theme_overrides": {},
"languages": {
"Python": {
"language_servers": ["pyright", "ruff"],
"format_on_save": "on",
"formatter": [
{
"code_actions": {
"source.organizeImports.ruff": true,
"source.fixAll.ruff": true
}
},
{
"language_server": {
"name": "ruff"
}
}
]
}
},
"vim_mode": true,
"vim": {
"default_mode": "normal",
"toggle_relative_line_numbers": true,
"use_system_clipboard": "always",
"use_multiline_find": false,
"use_smartcase_find": false,
"highlight_on_yank_duration": 400,
"custom_digraphs": {},
"cursor_shape": {}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment