record-screen.nvim is a Neovim screen recording plugin that uses ffmpeg command for screen recording.
using nvim-plug
require('plug').add({
{
'wsdjeg/record-screen.nvim',
depends = {
{ 'wsdjeg/job.nvim' },
{ 'wsdjeg/notify.nvim' },
},
config = function()
vim.keymap.set(
'n',
'<F8>',
'<cmd>lua require("record-screen").start()<cr>',
{ silent = true }
)
vim.keymap.set(
'n',
'<F9>',
'<cmd>lua require("record-screen").stop()<cr>',
{ silent = true }
)
end,
},
})
require('record-screen').setup({
cmd = 'ffmpeg',
argvs = { '-f', 'gdigrab', '-i', 'desktop', '-f', 'mp4' },
target_dir = 'D:/outputs',
})
2025-4-8-1-41-3.mp4
You can enable logger and install logger.nvim to debug this plugin:
require('plug').add({
{
'wsdjeg/record-screen.nvim',
depends = {
{ 'wsdjeg/job.nvim' },
{ 'wsdjeg/notify.nvim' },
{
'wsdjeg/logger.nvim',
config = function()
vim.keymap.set(
'n',
'<leader>hL',
'<cmd>lua require("logger").viewRuntimeLog()<cr>',
{ silent = true }
)
end,
},
},
config = function()
vim.keymap.set(
'n',
'<F8>',
'<cmd>lua require("record-screen").start()<cr>',
{ silent = true }
)
vim.keymap.set(
'n',
'<F9>',
'<cmd>lua require("record-screen").stop()<cr>',
{ silent = true }
)
end,
},
})
and the runtime log is:
[ record-screen.nvim ] [01:15:45:587] [ Info ] cmd is: { "ffmpeg", "-f", "gdigrab", "-i", "desktop", "-f", "mp4", "C:/Users/wsdjeg/Desktop/2025-4-8-1-15-45.mp4" }
[ record-screen.nvim ] [01:15:47:794] [ Info ] job exit with: code 0 single 0
Like this plugin? Star the repository on GitHub.