Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 在vim文件中插入bash脚本输出_Image_Vim - Fatal编程技术网

Image 在vim文件中插入bash脚本输出

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 "

我正在Vim中编写标记,并使用此快捷方式设置正确的标记图像语法:

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>