1

我想在 vimscript 中创建一个函数,该函数必须读取外部文档并使用缓冲区中的文本对其进行测试。

这是在 :amenu 中运行良好的代码(在 menu.vim 中)
/^\%(.*\<\%(<C-r>=join(readfile('d:\database.txt'),'\\|')<CR>\)\>\)\@!.*$<CR>

我想在函数中使用相同的代码,但不知道如何调整它。
上面的代码包含 2<CR>在函数中不起作用。

1)我怎样才能适应上面的代码,使它在vimscript函数中工作?

将使用输入对话框插入外部文档

function! s:CheckWithDocument()
if !exists("docinput")
let docinput = "Document to match with?"
endif
let a = inputdialog(docinput)
let @/ .....
return
endfunction

我在菜单中调用它::call <SID>CheckWithDocument()<CR>

2)如何插入'a'上面的vimscript代码?

4

1 回答 1

1

换一种方式其实更难。他们使用表达式寄存器<C-r>=来插入一些任意的 vimscript,而您可以将其附加到您的搜索字符串中。

let @/ = "/^\\%(.*\\<\\%(".join(readfile('d:\database.txt'),'\\\\|')."\\)\\>\\)\\@!.*$"

使用相同的方法将a变量附加到您想要的位置。

于 2013-03-08T14:01:28.650 回答