具有扩展字符的缓冲区字竞争配置(neovim)
Buffer word competion configuration with extended characters (neovim)
我正在尝试使用 nvim-cmp and the cmp-buffer 源来完成缓冲区单词。我有来自非洲语言的单词,带有 ɔ ɛ ɲ 等。仅供参考,默认的 ctrl-p 可以正常工作。当我为 asciidoc 安装片段时,我遇到的问题似乎在 nvim_cmp 中很明显。 (我同时使用了这两个片段并希望缓冲区完成)
例如,如果我在键入 g
时文件中有 mɔgɔ
,则片段完成会启动,但没有缓冲区完成选项。但实际上,即使是 ultisnip snippit 选项也应该只出现在单词边界上:
snippet gui "GUI Element Name" !w
所以我认为这是 ɔ ɛ(和其他字母未被识别为单词的一部分)的情况。cmp-buffer 文档提供了以下信息:
keyword_pattern (type: string)
Default: [[\%(-\?\d\+\%(\.\d\+\)\?\|\h\w*\%([\-.]\w*\)*\)]]
用于从缓冲区内容创建单词列表的正则表达式。
如果您想使用 iskeyword
选项来识别单词,您可以将此设置为 \k\+
。
我在我的配置中试过了,但没有用,我不确定这是不是正确的语法:
sources = {
{ name = 'nvim_lsp' },
{ name = 'ultisnips' },
{ name = 'buffer', keyword_pattern = [[\k\+]] }
}
我也不确定如何将这些(以及更多带有重音符号的)字符放入正则表达式(以及 Lua 语法)中。如果有一个例子说明如何向这个表达式添加字符,那将会很有帮助。
我对此也有点困惑Q/A:Vim syntax file: Adding certain characters to iskeyword isn't working
一方面,您似乎不能向 iskeywords 添加超过 255 的任何内容。另一方面,Neovim 似乎无论如何都在使用 ctrl-p 处理这些字符。
因此,如果我可以使用 iskeyword 解决方案或正则表达式来解决这个问题,我将不胜感激。
我认为语法不正确,在 docs 中您可以看到有一个自定义源的部分。
使用它,我自定义了缓冲区源,如下所示:
sources = {
{ name = 'nvim_lsp' },
{
name = 'buffer',
opts = {
get_bufnrs = function()
return vim.api.nvim_list_bufs()
end
},
},
{ name = 'path' },
},
因此,如果您将 keyword_pattern 选项放在 opts 字段中,它应该会按预期工作,前提是模式是正确的。
我正在尝试使用 nvim-cmp and the cmp-buffer 源来完成缓冲区单词。我有来自非洲语言的单词,带有 ɔ ɛ ɲ 等。仅供参考,默认的 ctrl-p 可以正常工作。当我为 asciidoc 安装片段时,我遇到的问题似乎在 nvim_cmp 中很明显。 (我同时使用了这两个片段并希望缓冲区完成)
例如,如果我在键入 g
时文件中有 mɔgɔ
,则片段完成会启动,但没有缓冲区完成选项。但实际上,即使是 ultisnip snippit 选项也应该只出现在单词边界上:
snippet gui "GUI Element Name" !w
所以我认为这是 ɔ ɛ(和其他字母未被识别为单词的一部分)的情况。cmp-buffer 文档提供了以下信息:
keyword_pattern (type: string)
Default: [[\%(-\?\d\+\%(\.\d\+\)\?\|\h\w*\%([\-.]\w*\)*\)]]
用于从缓冲区内容创建单词列表的正则表达式。
如果您想使用 iskeyword
选项来识别单词,您可以将此设置为 \k\+
。
我在我的配置中试过了,但没有用,我不确定这是不是正确的语法:
sources = {
{ name = 'nvim_lsp' },
{ name = 'ultisnips' },
{ name = 'buffer', keyword_pattern = [[\k\+]] }
}
我也不确定如何将这些(以及更多带有重音符号的)字符放入正则表达式(以及 Lua 语法)中。如果有一个例子说明如何向这个表达式添加字符,那将会很有帮助。
我对此也有点困惑Q/A:Vim syntax file: Adding certain characters to iskeyword isn't working
一方面,您似乎不能向 iskeywords 添加超过 255 的任何内容。另一方面,Neovim 似乎无论如何都在使用 ctrl-p 处理这些字符。
因此,如果我可以使用 iskeyword 解决方案或正则表达式来解决这个问题,我将不胜感激。
我认为语法不正确,在 docs 中您可以看到有一个自定义源的部分。
使用它,我自定义了缓冲区源,如下所示:
sources = {
{ name = 'nvim_lsp' },
{
name = 'buffer',
opts = {
get_bufnrs = function()
return vim.api.nvim_list_bufs()
end
},
},
{ name = 'path' },
},
因此,如果您将 keyword_pattern 选项放在 opts 字段中,它应该会按预期工作,前提是模式是正确的。