VSVim调用自定义函数InsertDebugBlock提示不支持问题求助
解决方案
VSVim是基于Vim的模拟插件,并非完整实现Vim的所有特性,你函数里用到的append()、setline()这类缓冲区操作函数,在旧版本VSVim中可能支持有限,以下是几个可行的解决方向:
重写函数,使用更兼容的normal命令
把依赖Vim内置函数的逻辑替换成模拟手动输入的normal命令,这类操作在VSVim中兼容性更好。修改后的函数如下:function! InsertDebugBlock() " 插入空行并移到该行 normal o " 插入#if DEBUG normal i#if DEBUG " 插入#endif行 normal o#endif " 回到#if DEBUG行末尾并进入插入模式 normal kA endfunction确认_vimrc是否被VSVim正确加载
在VS中打开VSVim的命令行(按:),执行:scriptnames命令,查看输出列表里是否包含你的C:\Users\Deler\vimfiles\_vimrc。如果没有,需要在VS的「工具-选项-VSVim」中手动指定Vimrc的路径。简化函数排查问题点
先写一个极简的测试函数验证自定义函数是否能被VSVim识别:function! InsertDebugBlock() echo "Function works!" endfunction调用后如果正常输出,说明原函数的问题出在具体的操作命令上;如果还是提示不支持,建议更新VSVim到最新版本(你的2.8.0.0版本较旧,新版本修复了大量兼容性问题)。
改用映射替代函数
如果函数始终有兼容性问题,可以直接用按键映射实现相同功能,跳过函数定义:nnoremap <leader>db o#if DEBUG<CR>#endif<CR>kA配置后,在普通模式下按
<leader>db(默认leader是反斜杠\),就能快速插入调试块并进入插入模式。
内容的提问来源于stack exchange,提问作者Deler
相关产品推荐
相关产品推荐

