gpt4 book ai didi

neovim - 脚本 : calling function inside inoremap throws "unknown function"

转载 作者:行者123 更新时间:2023-12-05 05:32:21 27 4
gpt4 key购买 nike

我已经将 Neovim 与 CoC 一起使用了一段时间,没有出现任何问题。昨天我将我的操作系统从 Ubuntu 21.04 升级到 22.04。没有对我的 vim 配置文件进行任何更改,就会弹出一个错误。我会用例子更好地解释:

这些是我的配置文件(分成许多文件,花哨的东西):https://github.com/fr-mm/dot-files

错误来自此文件(CoC 配置文件):https://github.com/fr-mm/dot-files/blob/bode/files/vim/plugins/coc.vim

在这个文件中,我有这个非常常见的片段用于触发自动完成:

inoremap <silent><expr> <TAB>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"

function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction

使用 tab 触发自动完成工作正常,但是当我尝试在插入中使用 TAB 时它抛出

E117: Unknown function: <SNR>119_check_back_space

这是什么意思:check_back_space 函数未被识别,尽管在下面声明。

到目前为止我尝试了什么:

  • 声明上面的函数
  • 在 init.vim 中声明(vim 读取的第一个文件)
  • 声明另一个更简单的函数并在 inoremap 中使用
  • 从函数调用中删除

我正在使用 NVIM v0.6.1 (LuaJIT 2.1.0-beta3)

最佳答案

我的机器(Ubuntu 22.04、nvim v0.8.0-1210、coc.nvim)也有同样的问题。

我通过删除这些东西“解决”了这个问题:

inoremap <silent><expr> <TAB>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"

在我看来,这是 coc.nvim 中的新错误。我的解决方案不是最终的:)

关于neovim - 脚本 : calling function inside inoremap throws "unknown function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74158726/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com