lvimgrep
そのため、現在選択されているテキストで実行されるバインディングを作成しようとしています。
fun! s:get_visual_selection()
let l=getline("'<")
let [line1,col1] = getpos("'<")[1:2]
let [line2,col2] = getpos("'>")[1:2]
return l[col1 - 1: col2 - 1]
endfun
vnoremap <expr> <script><leader>* ":lvimgrep /" . <SID>get_visual_selection() . "/j **/*." . expand("%:e") . " \|lopen"
関数は質問のコメントからのものです: VimScript で視覚的に選択されたテキストを取得する方法
問題は、それが非常に奇妙な動作をしていることです。ほとんどの場合、関数によって返されるテキストは視覚的な選択と一致せず、多くの場合、現在の視覚的な選択ではなく、最後の視覚的な選択のテキストです。
vimscript で視覚的な選択テキストを取得することに関する多くの投稿を行ってきましたが、機能させることができません。
https://stackoverflow.com/a/1534347/287085も試しましたが成功しませんでした (選択をコピーして登録する) - バインディングから呼び出されるとエラーが発生します。