我有一系列的vim命令,它们将选定的块写入临时文件,在该文件上运行一个函数(knitcite),然后读取另一个文件:
w! ~/.vbuf <CR>
!knitcite ~/.vbuf ~/.vbuf <CR>
r ~/.vbuf <CR>
如果在运行第一个命令之前,在可视模式下选择了一段文本,则它会变成
:'<,'>w! ~/.vbuf <CR>
将所选内容传递到文件中,这是我需要的。我可以将其放入我的.vimrc文件中的一个简单vim函数中,但无法弄清楚如何将视觉选择的内容传递给该函数。如果这是一个单个命令而不是三个命令,我可以使用视觉映射来完成此操作,但不确定如何在三个命令中执行此操作。类似于:
command knitcite call Knitcite()
func! Knitcite()
exec "w! ~/.vbuf <CR>"
exec "!knitcite ~/.vbuf ~/.vbuf <CR> "
exec "r ~/.vbuf <CR>"
func
但是这并没有从可视块中传递任何数据。我猜我需要给我的Knitcite函数一个参数,但是无法弄清楚应该是什么。 (似乎这可能与这个SO问题有关,但我无法从那个答案中推广。)