Note: this is the currently maintained fork of ekickx/clipboard-image.nvim They have done most of the work, but has seemingly abandoned the project. This fork will apply fixes and updates as long as ekickx is gone.
❗ Requirement:
xclip
(X11),wl-clipboard
(Wayland),pngpaste
(MacOS)ℹ️ Run
:checkhealth clipboard-image
to check a missing dependency
Plugin manager | Script |
---|---|
vim-plug | Plug 'dfendr/clipboard-image.nvim' |
packer.nvim | use 'dfendr/clipboard-image.nvim' |
This is the basic usage. If you want to see more you can read API
Command | Demo |
---|---|
PasteImg |
This plugin is zero config, means you don't need to configure anything to works. But if you want to, you can configure it like this:
Example
require'clipboard-image'.setup {
-- Default configuration for all filetype
default = {
img_dir = "images",
img_name = function() return os.date('%Y-%m-%d-%H-%M-%S') end, -- Example result: "2021-04-13-10-04-18"
affix = "<\n %s\n>" -- Multi lines affix
},
-- You can create configuration for ceartain filetype by creating another field (markdown, in this case)
-- If you're uncertain what to name your field to, you can run `lua print(vim.bo.filetype)`
-- Missing options from `markdown` field will be replaced by options from `default` field
markdown = {
img_dir = {"src", "assets", "img"}, -- Use table for nested dir (New feature form PR #20)
img_dir_txt = "/assets/img",
img_handler = function(img) -- New feature from PR #22
local script = string.format('./image_compressor.sh "%s"', img.path)
os.execute(script)
end,
}
}
Structure
See also API
{
default = {
<options>
},
<filetype> = {
<options>
},
}
Options | Default | Description |
---|---|---|
img_dir |
"img" |
Directory where the image from clipboard will be copied to |
img_dir_txt |
"img" |
Directory that will be inserted to buffer. Example: Your actual dir is src/assets/img but your dir on text or buffer is /assets/img |
img_name |
function() return os.date('%Y-%m-%d-%H-%M-%S') end |
Image's name |
img_handler |
function(img) end |
Function that will handle image after pasted.img is a table that contain pasted image's name and path |
affix |
default : "%s" markdown : "![](%s)" asciidoc : "image::%s[]" |
String that sandwiched the image's path |
Share your tips here
You can ask your questions on discussions
Read the contribution guide here
Thanks to:
- ferrine/md-img-paste.vim, I look some of its code
- elianiva for giving me feedback on Vim Indonesia (Telegram group)
- all neovim lua plugin creators and its contributors, I get some inspiration from reading their code