Skip to content

Latest commit

 

History

History
125 lines (97 loc) · 3.9 KB

File metadata and controls

125 lines (97 loc) · 3.9 KB


Cake Logo

cake-info

cake-dark cake-light

Cake

A Neovim plugin for organizing, managing, and executing shell commands with ease — streamline your command workflows

Features

  • Tabbed Workflow: Organize and run commands per tab.
  • Command Management: Create, edit, and execute reusable command lists.
  • Session Persistence: Save and restore tabs, commands, and working directories.
  • UI Layer: Built on top of nvzone/volt.

Important

I celebrated my birthday by building the first iteration of this plugin! It’s still in its early stages, so I’d love to hear any feedbacks, issues, and contributions if you have any.

Installation

Requirements:

Lazy

{
  "aikhe/cake.nvim",
  dependencies = "nvzone/volt",
  cmd = { "CakeToggle", "CakeFloat", "CakeSplitV", "CakeSplitH", "CakeRun" },
  opts = {},
}

Keymaps (Optional):

vim.keymap.set('n', '<leader>ef', function()
    require('cake').open({ mode = "float" })
end, { desc = 'Cake Float' })

vim.keymap.set('n', '<leader>ev', function()
    require('cake').open({ mode = "splitv" })
end, { desc = 'Cake Split Vertical' })

vim.keymap.set('n', '<leader>eh', function()
    require('cake').open({ mode = "splith" })
end, { desc = 'Cake Split Horizontal' })

vim.keymap.set('n', '<leader>et', function()
    require('cake').toggle()
end, { desc = 'Cake Toggle' })

vim.keymap.set('n', '<leader>er', function()
    require('cake').run()
end, { desc = 'Cake Run' })

Default Config

require("cake").setup({
  terminal = "", -- Terminal defaults to bash & cmd
  title = " cake.nvim", -- Can be empty
  border = false,
  use_file_dir = false, -- Use file path as new tab default path
  mode = "float", -- "float", "splitv" (vertical), "splith" (horizontal)
  size = { h = 60, w = 50 }, -- Default float size
  split = { w = 50, h = 25 }, -- Default split sizes w: horizontal, h: vertical

  -- Override default mappings
  mappings = {
    new_tab = "n",
    edit_commands = "m",
    edit_cwd = ";",
    rerun = "r",
    kill_tab = "x",
    next_tab = "<C-n>",
    prev_tab = "<C-p>",
  },

  -- split term navigation keys
  split_nav = {
    h = { "<C-h>" },
    j = { "<C-j>" },
    k = { "<C-k>" },
    l = { "<C-l>" },
  },
})

Mappings

These are the default mappings that are available when cake is open:

Key Action
m Edit commands
; Edit commands cwd
r Rerun commands
n New tab
x Close tab
<C-n> Next tab
<C-p> Previous tab
1–9 Switch tabs
? Help

Note

Cake isn’t a terminal replacement. It’s designed for fast, seamless command execution rather than full terminal workflows like those provided by toggleterm.nvim, floaterm or tmux. It behaves more like yeet.nvim, sending commands quickly to an existing terminal target.



cake-footer