altairwei / altairwei/WizNotePlus

【分享】使用Vimscript完成图片插入

未关闭
#63 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
tip
主要语言
C++
星标
598
派生
90
PR 合并指标
30 天内没有已合并 PR

描述

**仅适用于Linux**
首先你需要安装`xclip`,通过它来读取剪贴板内容。
将这段代码加入你的.vimrc文件
*``键位映射需要自行添加,如果不知道映射的键位,在命令模式输入`map `查看。*
```vim
au FileType markdown nnoremap mp :call MarkdownClipboardImage()
function! MarkdownClipboardImage() abort
" Create `img` directory if it doesn't exist
let img_dir = expand('%:h') . '/index_files/'
if !isdirectory(img_dir)
silent call mkdir(img_dir)
endif

let targets = filter(
\ systemlist('xclip -selection clipboard -t TARGETS -o'),
\ 'v:val =~# ''image''')
if empty(targets) | return | endif
let mimetype = targets[0]
let extension = split(mimetype, '/')[-1]

let file_path = img_dir . strftime("%Y-%m-%d-%H:%M:%S") . '.' . extension
let output = system(printf('xclip -selection clipboard -t %s -o > %s',
\ mimetype,file_path))
if v:shell_error != 0
ecohm output
else
execute "normal! o![](" . file_path . ")"
endif
endfunction
```

复制图片,在vim中输入`mp`,将自动保存图片并在下一行插入`![](filepath)`。

需要说明的是,**这里的复制图片是指复制图片内容而不是复制文件**,后者剪贴板中保存的是图片文件的路径,如有需要可以自行实现。

[参考](https://vi.stackexchange.com/questions/14114/paste-link-to-image-in-clipboard-when-editing-markdown)

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。