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