Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Screenshot

A Neovim configuration made with nvf

Installation

Can either be done as a NixOS or home-manager module.

programs.dashvim = {
    enable = true;
    colorscheme = config.conf.colorscheme;
    # other options
};

Try before Installation

nix run inside the directory, or nix run github:DashieTM/DashVim.

Note: If you wish to try DashVim out, you might want test the minimal configuration first. -> nix run github:DashieTM/DashVim#minimal.

Keys

Could potentially be outdated.

Space as leader

Motion

keyDescpription
jleft
kdown
lup
;right
<A-j>window left
<A-k>window up
<A-l>window down
<A-;>window right
<A-f>open file tree (root
<A-F>open file tree (cwd)

Debugging

keyDescription
<leader>darun with args
<leader>dbtoggle breakpoint
<leader>dBbreakpoint condition
<leader>dCrun to cursoor
<leader>dccontinue
<leader>deeval
<leader>dggo to line
<leader>distep into
<leader>kdown
<leader>lup
<leader>;run last
<leader>dOstep over
<leader>dostep out
<leader>dppause
<leader>drtoggle repl
<leader>dssession
<leader>dtterminate
<leader>duDAP UI
<leader>dwwidgets

neotest

keyDescription
<leader>ttexecute all tests
<leader>tTexecute nearest test

buffer switching

keyDescription
F1next buffer (cycles)
F2previous buffer (cycles)

formatting

keyDescription
F4format this file

telescope

keyDescription
<leader>fffind files
<leader>fglive ripgrep
<leader>fhhelp for functions etc
<leader>fpfind projects
<leader>fbfile browser
<leader>bbuffer browser

telescope git

keyDescription
<leader>gqshow commits
<leader>gwshow commits with diff
<leader>gbshow branches
<leader>grshow git status
<leader>gashow git stash
<leader>gegit file tree

project telescope

normal mode insert mode
keyDescription
ddelete project
rrename project
ccreate project
ssearch files in project
bbrowse files in project
wchange directory to project
Rrecently opened files in project
ffind file within project
keyDescription
<C-d>delete project
<C-v>rename project
<C-a>create project
<C-s>search files in project
<C-b>browse files in project
<C-l>change directory to project
<C-r>recently opened files in project
<C-f>find file within project

toggletrouble

keyDescription
<leader>tshow errors and warnings

cmp

Note, these require the cmp list view to be open to do anything!

keyDescription
<C-b>scroll docs up
<C-f>scroll docs down
<C-e>cancel cmp
Enterwrite selected suggestion (does nothing if not selected)
Tabscroll down through suggestion list
Shift + Tabscroll up through suggestion list

LSP

keyDescription
<leader>cago to definition
<leader>cago to declaration
<leader>csfind references
<leader>cdgo to type definition
<leader>cfgo to implementation
<leader>cqfix code action
<leader>cQrefactor code action
<leader>cwsignature help
<leader>cehover
<leader>crrename

snippets

These require you to be inside a snippet!

keyDescription
<C-j>jump to next entry
<C-k>jump to previous entry

Leap

keyDescription
sfollowed by 2 other characters and the marker to jump

Dashboard

only available on dashboard

keyDescription
ffile
enew file
pfind project
rrecently used files
tfind text
copen config
qquit

Treesitter specials

used to interact with treesitter defined objects.

keyDescription
difDelete the content of a function
dafDelete the entire function
dicDelete the content of a class/struct
dacDelete the entire class/struct

Thanks to:

  • raf and friends for nvf :)
  • Nix-Artwork for the Nix/NixOS logo (Tim Cuthbertson (@timbertson))

DashVim configuration

programs.dashvim.enableNvfDefaultKeybinds

Nvf has a ton of default keybinds, this options re-enables them.

Type: boolean

Default: false

Example: true

programs.dashvim.additionalConfig

Nvf configuration to be added to DashVim.

Type: attribute set of anything

Default: { }

programs.dashvim.additionalLuaConfigFiles

A list of lua files to be added to DashVim

Type: list of absolute path

Default: [ ]

programs.dashvim.agent.enable

Enables codecompanion

Type: boolean

Default: false

Example: true

programs.dashvim.agent.config

Config for codecompanion

Type: attribute set of anything

Default: { }

Example: { }

programs.dashvim.agent.key

Key for your agent. Please don’t use a plain text key, try sops-nix or agenix instead.

Type: null or anything

Default: null

Example: null

programs.dashvim.agent.variant

The agent type, see codecompanion for details.

Type: string

Default: "copilot"

Example: "openai"

programs.dashvim.colorscheme

Base16 colorscheme. Can be an attribute set with base00 to base0F, a string that leads to a yaml file in base16-schemes path, or a path to a custom yaml file.

Type: string or (attribute set) or absolute path

Default: "catppuccin-mocha"

Example:

{
  base00 = "1A1B26";
  base01 = "191a25";
  base02 = "2F3549";
  base03 = "444B6A";
  base04 = "787C99";
  base05 = "A9B1D6";
  base06 = "CBCCD1";
  base07 = "D5D6DB";
  base08 = "C0CAF5";
  base09 = "A9B1D7";
  base0A = "0DB9D7";
  base0B = "9ECE6A";
  base0C = "B4F9F8";
  base0D = "366fea";
  base0E = "BB9AF7";
  base0F = "F7768E";
}

programs.dashvim.dashboardAscii

The Ascii picture for dashboard.nvim.

Type: list of string

Default:

[
  " _______       ___           _______. __    __   __   _______ "
  "|       \\     /   \\         /       ||  |  |  | |  | |   ____|"
  "|  .--.  |   /  ^  \\       |   (----`|  |__|  | |  | |  |__   "
  "|  |  |  |  /  /_\\  \\       \\   \\    |   __   | |  | |   __|  "
  "|  '--'  | /  _____  \\  .----)   |   |  |  |  | |  | |  |____ "
  "|_______/ /__/     \\__\\ |_______/    |__|  |__| |__| |_______|"
  "                                                               "
]

Example:

[
  "yourpicture"
]

programs.dashvim.formatters

Config for conform

Type: attribute set of anything

Default:

{
  css = [
    "prettierd"
    "prettier"
  ];
  fsharp = [
    "fantomas"
  ];
  html = [
    "prettierd"
    "prettier"
  ];
  htmlangular = [
    "prettierd"
    "prettier"
  ];
  javascript = [
    "prettierd"
    "prettier"
  ];
  javascriptreact = [
    "prettierd"
    "prettier"
  ];
  json = [
    "prettierd"
    "prettier"
  ];
  lua = [
    "stylua"
  ];
  markdown = [
    "prettierd"
    "prettier"
  ];
  nix = [
    "alejandra"
  ];
  php = [
    "prettierd"
    "prettier"
  ];
  python = [
    "black"
  ];
  scss = [
    "prettierd"
    "prettier"
  ];
  typescript = [
    "prettierd"
    "prettier"
  ];
  typescriptreact = [
    "prettierd"
    "prettier"
  ];
  yaml = [
    "yamllint"
    "yamlfmt"
  ];
}

Example: { }

programs.dashvim.instantUsername

Username for instant.nvim

Type: string

Default: "DashVim"

Example: "yourUserName"

programs.dashvim.lsp.additionalConfig

Nvf lsp configuration to be added to DashVim.

Type: attribute set of anything

Default: { }

programs.dashvim.lsp.lspServers

Nvf LSP config -> vim.languages

Type: attribute set of anything

Default:

{
  assembly = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  bash = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  clang = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  csharp = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  css = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  dart = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  elixir = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  enableDAP = true;
  enableExtraDiagnostics = true;
  enableFormat = true;
  enableTreesitter = true;
  fsharp = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  gleam = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  go = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  haskell = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  html = {
    enable = true;
  };
  java = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  julia = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  kotlin = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  lua = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  markdown = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  nix = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  php = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  python = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  ruby = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  rust = {
    crates = {
      enable = true;
    };
    enable = true;
    lsp = {
      enable = true;
    };
  };
  sql = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  svelte = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  tailwind = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  terraform = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  ts = {
    enable = true;
    lsp = {
      enable = false;
    };
  };
  typst = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  vala = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  wgsl = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  yaml = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
  zig = {
    enable = true;
    lsp = {
      enable = true;
    };
  };
}

Example: { }

programs.dashvim.lsp.special.useAngular

Whether to enable angular ls. Note this disables Html-ls and removes the typescript renaming function.

Type: boolean

Default: false

Example: true

programs.dashvim.lsp.useDefaultSpecialLspServers

These are LSP servers which are installed via plugins. For example rustaceanvim for rust. Disabling this will remove all special servers. You can install specific ones using the additionalConfig.

Type: boolean

Default: true

Example: false

programs.dashvim.useDefaultCmpConfig

Enables default cmp config

Type: boolean

Default: true

Example: false

programs.dashvim.useDefaultKeybinds

Enables the default keybinds for DashVim. Keep in mind that regular keymaps from plugin defaults and Neovim are still active.

Type: boolean

Default: true

Example: false