askfiy/nvim-picgo

github github
media
stars 55
issues 0
subscribers 2
forks 6
CREATED

2022-04-24

UPDATED

last year


                                     ____  _       ____
                                    |  _ \(_) ___ / ___| ___
                                    | |_) | |/ __| |  _ / _ \
                                    |  __/| | (__| |_| | (_) |
                                    |_|   |_|\___|\____|\___/

                                  · picgo plugin for neovim ·

nvim-picgo is a picture uploading tool based on Lua language. You can quickly upload images to various image beds through it, and it will also generate links in markdown format 🔗. and store it in the clipboard.

In the coc ecosystem, there is a plugin called coc-picgo that does the same thing. The coc-picgo plugin is really enviable for those who use nvim's built-in LSP, because we don't need coc,so I created this project and hope it will help you.

Features

  • Written in pure Lua, less than 300 lines of code
  • No default key bindings, I won't take up your precious keys
  • Quickly upload disk files or clipboard images to the image bed, allowing you to access your images anywhere on the Internet

demo

Upload an image from the clipboard:

Upload an image from the file system:

Dependencies

I recommend you to use neovim-0.7.

Besides that, you need to download picgo-core, which is a command line tool.

$ npm install picgo -g

Configure picgo image bed

First of all, you need to manually fill in your image bed configuration, and enter:

Note, not in neovim's cmd mode

$ picgo set uploader
? Choose a(n) uploader (Use arrow keys)
  smms
❯ tcyun
  github
  qiniu
  imgur
  aliyun
  upyun
(Move up and down to reveal more choices)

Or you can also configure manually:

  • Linux and Mac:~/.config/.picgo/config.json
  • Windows:C:\Users\youername\.picgo\config.json

Below is my picgo config file:

$ cat $HOME/.picgo/config.json

{
  "picBed": {
    "uploader": "tcyun",
    "current": "tcyun",
    "tcyun": {
      "secretId": "..",
      "secretKey": "..",
      "bucket": "images-1302522496",
      "appId": "1302522496",
      "area": "ap-nanjing",
      "path": "img/",
      "customUrl": "",
      "version": "v5"
    }
  },
  "picgoPlugins": {}
}

Using plugins

It is recommended to use Packer to manage nvim-picgo:

use {
    "askfiy/nvim-picgo",
    config = function()
        -- it doesn't require you to do any configuration
        require("nvim-picgo").setup()
    end
    }

Default configuration items:

{
    -- method to informe
    -- 1. notify
    -- 2. echo
    notice = "notify",
    -- Whether the generated markdown link saves the upload name of the image
    -- boolean
    image_name = false,
    -- debug mode
    debug = false,
}

plugin command

viml:

:UploadClipboard<cr>
:UploadImagefile<cr>

lua:

<cmd>lua require'nvim-picgo'.upload_clipboard()<cr>
<cmd>lua require'nvim-picgo'.upload_imagefile()<cr>

related resources