Function 如何将代码从amenu改编为vimscript?

Function 如何将代码从amenu改编为vimscript?,function,vim,Function,Vim,我想在vimscript中创建一个函数,该函数必须读取一个外部文档,并使用缓冲区中的文本对其进行测试 这是在以下情况下工作正常的代码:amenu(在menu.vim中) /^\%(.\\\)\@*$ 我想在函数中使用相同的代码,但不知道如何调整它。 上述代码包含2个在函数中不起作用的 1)如何调整上述代码,使其在vimscript函数中工作 将使用输入对话框插入外部文档 函数!s:CheckWithDocument() if!存在(“docinput”) 让docinput=“要匹配的文档?”

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

这是在以下情况下工作正常的代码:amenu(在menu.vim中)
/^\%(.\\\)\@*$

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

1)如何调整上述代码,使其在vimscript函数中工作

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

函数!s:CheckWithDocument()

if!存在(“docinput”)

让docinput=“要匹配的文档?”

endif

让a=inputdialog(docinput)

let@/..

返回

endfunction

我用amenu调用它:
:调用CheckWithDocument()


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

实际上,另一种方法更难。他们使用表达式寄存器
=
插入一些任意脚本,而您只需将其附加到搜索字符串中即可

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

使用相同的方法将
变量附加到所需的位置。

谢谢康纳的回答。我在上面的函数中插入了您的答案,并将双引号之间的
`更改为
\`但它不起作用。代码是正确的,但没有像在末尾没有命令一样执行。当我捕获输出(
echo@/
)并将其插入命令行时,按enter键,效果很好。