Image 在vim文件中插入bash脚本输出
我正在Vim中编写标记,并使用此快捷方式设置正确的标记图像语法:Image 在vim文件中插入bash脚本输出,image,vim,Image,Vim,我正在Vim中编写标记,并使用此快捷方式设置正确的标记图像语法: nnoremap <leader>p :s/.*/![](\0)/ <CR> 但是我想在这之后添加这个{width=*variable*%},如下所示 ![](img.jpg){ width = *variable*% } 我制作了这个小bash脚本(img.sh),它根据图像大小提供变量: #!/bin/bash VAR=$(identify -format '%h' $1) echo "
nnoremap <leader>p :s/.*/![](\0)/ <CR>
但是我想在这之后添加这个{width=*variable*%}
,如下所示
![](img.jpg){ width = *variable*% }
我制作了这个小bash脚本(img.sh
),它根据图像大小提供变量:
#!/bin/bash
VAR=$(identify -format '%h' $1)
echo "scale=3; 300 * (100/$VAR)" | bc
如果我在vim中执行此操作:r!img.sh/path/to/image/img.jpg
在这种情况下我得到一个数字32
我想用上面的快捷方式启动此脚本,我尝试了以下方法:
nnoremap <leader>p :s/.*/![](\0){ width=/ <CR> :r !img.sh /path/to/image/img.jpg <CR> % }
nnoremap p:s/*/![](\0){width=/:r!img.sh/path/to/image/img.jpg%}
我希望您帮助我找到一种方法,不键入path to image来执行脚本。图像路径已经写在文本中了,如果我能找到一种方法指示vim将其放置在img.sh之后的快捷方式中,那就太好了 您可以在
:s
命令的替换端使用Vimscript表达式,这样您可以使用引用匹配中的文本(即图像的路径)。您可以使用表达式替换:s
,方法是以\=
开头,有关详细信息,请参阅
使用替换表达式,也可以使用函数调用外部命令,而不是使用单独的:r代码>将其输出读入当前缓冲区的命令
总而言之:
:s/.*/\='![]('.submatch(0).']{ width='.trim(system('img.sh '.submatch(0))).' }'/
或向其添加映射:
nnoremap <leader>p :s/.*/\='![]('.submatch(0).']{ width='.trim(system('img.sh '.submatch(0))).' }'/<CR>
nnoremap <leader>p :s/.*/\='![]('.submatch(0).']{ width='.trim(system('img.sh '.submatch(0))).' }'/<CR>
nnoremap <leader>p :s/.*/\='![]('.submatch(0).']{ width='.trim(system('img.sh '.submatch(0))).' }'/\|noh<CR>