{ config, pkgs, lib, ... }: { programs.zed-editor = { enable = true; installRemoteServer = true; userSettings = { base_keymap = "Emacs"; vim_mode = true; tab_size = 2; tab_bar = { show = true; show_nav_history_buttons = false; show_tab_bar_buttons = false; }; toolbar = { breadcrumbs = false; quick_actions = false; selections_menu = false; }; theme = { mode = "system"; light = "One Light"; dark = "One Dark"; }; cursor_blink = false; current_line_highlight = "gutter"; indent_guides.enabled = false; git = { git_gutter = "hide"; inline_blame.enabled = false; }; gutter = { runnables = false; breakpoints = false; folds = false; }; pane_split_direction_vertical = "right"; use_smartcase_search = true; seed_search_query_from_cursor = "always"; inlay_hints = { enabled = true; show_type_hints = true; show_parameter_hints = false; }; file_types = { "Shell Script" = [ "envrc" ]; }; project_panel = { entry_spacing = "standard"; file_icons = false; folder_icons = false; indent_size = 16; }; preview_tabs.enabled = false; collaboration_panel.button = false; vim = { toggle_relative_line_numbers = true; }; }; userKeymaps = [ { context = "VimControl && !menu"; bindings = { "alt-x" = "command_palette::Toggle"; "," = null; ", f f" = "file_finder::Toggle"; ", b b" = "file_finder::Toggle"; ", f s" = "workspace::Save"; ", p" = "projects::OpenRecent"; ", r" = "editor::Rename"; ", w d" = "editor::GoToDefinitionSplit"; ", w g d" = "editor::GoToDefinitionSplit"; ", w shift-d" = "editor::GoToTypeDefinitionSplit"; ", w g shift-d" = "editor::GoToTypeDefinitionSplit"; ", w space" = "editor::OpenExcerptsSplit"; ", w g space" = "editor::OpenExcerptsSplit"; ", b x" = "pane::CloseActiveItem"; ", q" = "pane::CloseActiveItem"; }; } { context = "ProjectPanel || CollabPanel || OutlinePanel || ChatPanel || VimControl || EmptyPane || SharedScreen || MarkdownPreview || KeyContextView"; bindings = { ", w" = null; ", w left" = "workspace::ActivatePaneLeft"; ", w right" = "workspace::ActivatePaneRight"; ", w up" = "workspace::ActivatePaneUp"; ", w down" = "workspace::ActivatePaneDown"; ", w h" = "workspace::ActivatePaneLeft"; ", w l" = "workspace::ActivatePaneRight"; ", w k" = "workspace::ActivatePaneUp"; ", w j" = "workspace::ActivatePaneDown"; ", w ctrl-h" = "workspace::ActivatePaneLeft"; ", w ctrl-l" = "workspace::ActivatePaneRight"; ", w ctrl-k" = "workspace::ActivatePaneUp"; ", w ctrl-j" = "workspace::ActivatePaneDown"; ", w shift-left" = "workspace::SwapPaneLeft"; ", w shift-right" = "workspace::SwapPaneRight"; ", w shift-up" = "workspace::SwapPaneUp"; ", w shift-down" = "workspace::SwapPaneDown"; ", w shift-h" = "workspace::SwapPaneLeft"; ", w shift-l" = "workspace::SwapPaneRight"; ", w shift-k" = "workspace::SwapPaneUp"; ", w shift-j" = "workspace::SwapPaneDown"; ", w 1" = [ "workspace::ActivatePane" 0 ]; ", w 2" = [ "workspace::ActivatePane" 1 ]; ", w 3" = [ "workspace::ActivatePane" 2 ]; ", w 4" = [ "workspace::ActivatePane" 3 ]; ", w 5" = [ "workspace::ActivatePane" 4 ]; ", w 6" = [ "workspace::ActivatePane" 5 ]; ", w 7" = [ "workspace::ActivatePane" 6 ]; ", w 8" = [ "workspace::ActivatePane" 7 ]; ", w 9" = [ "workspace::ActivatePane" 8 ]; ", w >" = "vim::ResizePaneRight"; ", w <" = "vim::ResizePaneLeft"; ", w -" = "vim::ResizePaneDown"; ", w +" = "vim::ResizePaneUp"; ", w _" = "vim::MaximizePane"; ", w =" = "vim::ResetPaneSizes"; ", w g t" = "pane::ActivateNextItem"; ", w ctrl-g t" = "pane::ActivateNextItem"; ", w g shift-t" = "pane::ActivatePreviousItem"; ", w ctrl-g shift-t" = "pane::ActivatePreviousItem"; ", w w" = "workspace::ActivateNextPane"; ", w p" = "workspace::ActivatePreviousPane"; ", w ctrl-p" = "workspace::ActivatePreviousPane"; ", w shift-w" = "workspace::ActivatePreviousPane"; ", w v" = "pane::SplitVertical"; ", w ctrl-v" = "pane::SplitVertical"; ", w s" = "pane::SplitHorizontal"; ", w shift-s" = "pane::SplitHorizontal"; ", w ctrl-s" = "pane::SplitHorizontal"; ", w c" = "pane::CloseAllItems"; ", w ctrl-c" = "pane::CloseAllItems"; ", w q" = "pane::CloseAllItems"; ", w ctrl-q" = "pane::CloseAllItems"; ", w o" = "workspace::CloseInactiveTabsAndPanes"; ", w ctrl-o" = "workspace::CloseInactiveTabsAndPanes"; ", w n" = "workspace::NewFileSplitHorizontal"; ", w ctrl-n" = "workspace::NewFileSplitHorizontal"; }; } ]; }; }