1

外部ドキュメントを読み取ってバッファ内のテキストでテストする関数を vimscript で作成したいと考えています。

これは、:amenu (menu.vim 内) で正常に動作するコードです。
/^\%(.*\<\%(<C-r>=join(readfile('d:\database.txt'),'\\|')<CR>\)\>\)\@!.*$<CR>

関数で同じコードを使用したいのですが、それを適応させる方法がわかりません。
上記のコードには<CR>、関数で機能しない 2 が含まれています。

1)上記のコードをvimscript関数で機能させるにはどうすればよいですか?

外部ドキュメントは入力ダイアログを使用して挿入されます

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

私はそれをamenuで呼び出します::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 に答える