本来没想答的,这个问题去Commands查其实就能查到答案。但是看评论区有误人子弟的风险,我还是单独开个答案说下吧。说句实话精确的视线检测我到现在也不得要领,但是看评论区的意思似乎这里的“眼前”仅表示最近,那就很好办了,/tp @e[type=minecraft:villager,limit=1,sort=nearest] x y z就行了(适用版本JE1.13+,xyz为目标点),如果是旧版本(1.12-)的话,可以用/tp @e[type=villager,c=1] x y z;如果要传送最近的几只,把1改成你想要的数就行了;如果要一次性传送一定范围内的全部,可以用distance=a..b(1.13+,ab分别填最小半径和最大半径)或者r=R,rm=RM(1.12-,R填最大半径,RM填最小半径),但是注意如果你在1.9+这么干的话,切忌一次性传送超过24个村民,否则可能导致村民死亡。
另外,上述指令只适用于你在聊天栏直接打出。如果要用固定的命令方块执行,请加上前缀/execute at <你的id> run (1.13+)或者execute <你的id> ~ ~ ~ (1.12-)
当然还有一种简单粗暴的办法,把自己切到旁观模式,然后附身到村民身上,tp @e[distance=0](1.13+)或@e[r=0](1.12-),目标精确,结果可靠。