diff --git a/README.md b/README.md index eec170c..22826f4 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ https://user-images.githubusercontent.com/14821247/213079440-f0ab2ddd-5e44-4e41- 2. 将编译好的二进制文件放在喜欢的目录下 3. 配置 LSP 客戶端, 例如: - [Neovim + nvim-cmp](doc/nvim-with-cmp.md) + - [Neovim + blink.nvim](doc/nvim-with-blink.md) - [Vim + coc.nvim](doc/vim.md) - [Vscode](doc/vscode.md) - [Helix](doc/helix.md) diff --git a/doc/nvim-with-blink.md b/doc/nvim-with-blink.md new file mode 100644 index 0000000..c282bdc --- /dev/null +++ b/doc/nvim-with-blink.md @@ -0,0 +1,57 @@ +# neovim + blink.cmp 配置示例 + +在此给出一些 `blink.cmp` 的相关配置注意事项(以 `blink.cmp v0.8.0` 为例): + +## 开启 long_filter_text + +`blink.cmp` 对于候选词的过滤比较严格,需要将 rime-ls 的 `long_filter_text` 配置设置为 `true` + +## 修改默认的 LSP 过滤规则 + +`blink.cmp` 将 LSP 服务器提供的 Text 类型补全也过滤掉了,为了启用 rime-ls,需要修改相关配置: + +```lua + sources = { + -- ... + providers = { + lsp = { + transform_items = function(_, items) return items end + } + }, + -- ... + }, + +``` + +## 还原输入法体验 + +### 数字键直接上屏 + +可以通过 `blink.cmp` 提供的事件接口实现: + +```lua + -- if the last character is a number (and its previous one is not), + -- and the only completion item is provided by rime-ls, accept it + require('blink.cmp.completion.list').show_emitter:on(function(event) + local items = event.items + if #items ~= 1 then return end + local line = event.context.line + local col = vim.fn.col('.') - 1 + if line:sub(col - 1, col):match("%a%d") == nil then return end + local item = items[1] + local client = vim.lsp.get_client_by_id(item.client_id) + if (not client) or client.name ~= "rime_ls" then return end + require('blink.cmp').accept({ index = 1 }) + end) + +``` + +### 空格补全 + +作者本人习惯把 rime-ls 视为一个普通的补全来源,还是用默认的补全快捷键。 + +但 `blink.cmp` 也支持自定义 keymap,按下时执行自定义的函数,因此空格补全也是能做到的。 + +### 其他 + +TODO diff --git a/doc/nvim-with-cmp.md b/doc/nvim-with-cmp.md index 2da4fe3..ca1ee25 100644 --- a/doc/nvim-with-cmp.md +++ b/doc/nvim-with-cmp.md @@ -1,7 +1,26 @@ +# neovim + nvim-cmp 配置示例 + 作者目前没有实现官方 neovim 插件,建议根据实际使用情况自行配置。 以 neovim + nvim-cmp 为例,下面给出一些可行的配置方法 (需填入正确的程序路径和 rime 需要的目录)。 +- [neovim + nvim-cmp 配置示例](#neovim--nvim-cmp-配置示例) +- [初始化 rime-ls](#初始化-rime-ls) + - [为每个 buffer 开启一个 lsp server (不推荐)](#为每个-buffer-开启一个-lsp-server-不推荐) + - [基于 lspconfig 的全局 LSP 状态](#基于-lspconfig-的全局-lsp-状态) +- [按需调整 cmp 的排序](#按需调整-cmp-的排序) +- [状态栏显示](#状态栏显示) +- [特定 buffer 无法使用问题](#特定-buffer-无法使用问题) +- [通过 TCP 远程使用](#通过-tcp-远程使用) +- [还原输入法体验](#还原输入法体验) + - [选词功能](#选词功能) + - [中文标点](#中文标点) + - [输入过快补全列表消失](#输入过快补全列表消失) + - [五笔或者双形用户](#五笔或者双形用户) + - [顶字上屏](#顶字上屏) + - [完整配置](#完整配置) +- [使用其他用户开发的插件](#使用其他用户开发的插件) + # 初始化 rime-ls ## 为每个 buffer 开启一个 lsp server (不推荐) @@ -421,7 +440,7 @@ end (例如 `auto-pairs` 绑定 `` 来在括号中插入两个空格),或者你自己绑定了一些功能, 如果你想同时保留两部分功能,你可以参考 选词功能 部分的配置。 -## +## 选词功能 相关 issue :[用数字选词以后还需要一次空格才能上屏幕](https://github.com/wlh320/rime-ls/issues/20)。