vsvim 不支持调用函数

问题描述 投票:0回答:1

我在 vimrc 文件中编写了一个函数:

function! InsertDebugBlock()
    call append(line('.'), [", "])
    call setline(line('.') + 1, '#if DEBUG')
    call setline(line('.') + 2, '#endif')
    normal j
    startinsert
endfunction

但是,当我在 Visual Studio 中通过 vsvim 调用它时,它说:

不支持调用函数InsertDebugBlock

但它与 gvim 配合得很好

这里是vsvim中的一些配置

它说我的 vimrc 文件是 “C:\Users\Deler imfiles\_vimrc”,就是这样。

我找不到问题所在。我的vsvim版本是2.8.0.0,Visual Studio 2019

visual-studio vim visual-studio-2019 vsvim
1个回答
0
投票

VsVim 不是 Vim,所以没有任何理由期望 Vim 的任何东西都能在 VsVim 中工作,反之亦然

举个例子:这里是VsVim支持的非常有限的功能子集,这里是不支持vimscript的(非常合理的)理由。

初步结论:VsVim 不支持 vimscript,因此无法使您的代码片段工作。

现在……按原样,你的函数无论如何都无法完成你在 Vim 中声称的功能。当光标位于

foo
:

上调用时,它实际上会产生这个
foo
|#if DEBUG    # cursor before #if
#endif

此外,在缓冲区末尾以外的其他地方使用

setline()
的方式将不可避免地导致数据丢失:

# before
foo
bar
baz
quux

# after
foo
#if DEBUG    # oops! where is bar?
#endif
baz
quux

不好。

这是一个更简单的实现,保证可以在 Vim 中工作,并且根据链接资源判断,很可能也可以在 VsVim 中工作:

nnoremap <key> o#ifdef DEBUG<CR>#endif<Esc>O

使用任何你想要的

<key>

© www.soinside.com 2019 - 2024. All rights reserved.