Vim 如何在函数中执行:cabbr?

Vim 如何在函数中执行:cabbr?,vim,Vim,我有一个:cabbr,它是: :cabbr fil v/<c-r><c-w>/d :cabbr fil v//d 我希望在函数中执行它(光标已经正确定位) 我应该如何进行 提前谢谢 cabbrev abc echo 'foo' function! Foo() call feedkeys(':abc ^M') endfunction (^M在这种情况下按) 现在:call Foo()将输出Foo 编辑:正如人们在评论中指出的那样,feedkeys(“:abc

我有一个:cabbr,它是:

:cabbr fil v/<c-r><c-w>/d
:cabbr fil v//d
我希望在函数中执行它(光标已经正确定位)

我应该如何进行

提前谢谢

cabbrev abc echo 'foo'

function! Foo()
    call feedkeys(':abc ^M')
endfunction
^M
在这种情况下按

现在
:call Foo()
将输出
Foo


编辑:正如人们在评论中指出的那样,
feedkeys(“:abc^M”)
也可以被
feedkeys(“:abc\”)替换

我认为命令行缩写在函数中不起作用。您可以在函数中执行
exec'v//d'
,或者使用
expand(“”)
,这与a
相同,为什么不在函数中直接执行
:g/:v
命令?它独立于
ab
设置,使您的脚本更加灵活generic@FDinoff例如我试过了,但没用。更准确地说,我有,例如,6行包含Foo,4行包含Bar;光标,在该阶段的功能是定位在酒吧;因此v/Bar/d应该给我留下4行。但是,事实上,它删除了所有行,我不明白为什么。谢谢你的帮助help@Kent当前位置我不明白你的建议,我宁愿承认。我应该如何实现这一点?我有另一个想法,那就是让功能“提示”来回答:“你在找什么词?”这将允许我搜索,例如v/*Foo\| Bar/d或v/*Foo\&Bar/d等。。。但我根本不知道该怎么做。谢谢你的帮助answer@ThG对这个答案有什么反馈吗?对不起,我出去了很短时间。我尝试了你的答案,并对它进行了一点转换:1)我保持了:cabbr的原样,2)插入了我的函数:call feed键(“:fil\”),它成功了。谢谢你把我带到解决方案上来。这就是为什么我接受你的答案。非常感谢。当使用函数作为馈送键时,这可能会导致非常意外的行为,这些键将在函数结束后运行。(如果在函数中执行Foo,可能还有其他函数)例如,如果在Foo之前打印
feedkeys
之后的
echo“bar”
,而不是使用
^M
,如果传递给feedkeys的字符串是双引号,则可以使用
\
feedkeys(“:abc\”)
相当于
feedkeys(“:abc^M”)
好吧,这个解决方案是有漏洞的,毫无疑问。是的,ThG的回答让我想起了
\
解决方案。(我注意到他的打字错误。)但我倾向于忘记它,因为我尽量使用单引号。我想这只是我的个人风格。我投票给你们两个!:-)