Skip to content

aikhe/cake.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


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

About

Plugin for managing and running shell commands in Neovim.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages