diff --git a/README.md b/README.md index a621f8f..cd03f2a 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,43 @@ # Trans.nvim +- [Trans.nvim](#transnvim) + - [特点](#特点) + - [屏幕截图](#屏幕截图) + - [演示](#演示) + - [离线查询](#离线查询) + - [在线查询演示 (有道)](#在线查询演示-有道) + - [主题](#主题) + - [安装](#安装) + - [配置](#配置) + - [快捷键绑定](#快捷键绑定) + - [高亮组](#高亮组) + - [声明](#声明) + - [感谢](#感谢) + - [贡献](#贡献) + - [从 v1 (main)分支迁移](#从-v1-main分支迁移) + - [待办 (画大饼)](#待办-画大饼) + - [项目情况](#项目情况) + -- [Trans.nvim](#transnvim) - [注意: 当前分支目前没有发布, README.md 的描述并不准确, 遇到问题请切换到 `main`分支或者联系我](#注意-当前分支目前没有发布-readmemd-的描述并不准确-遇到问题请切换到-main分支或者联系我) - - [特点](#特点) - - [屏幕截图](#屏幕截图) - - [演示](#演示) - - [离线查询](#离线查询) - - [\*在线查询\*\* (有道)](#在线查询-有道) - - [主题](#主题) - - [安装](#安装) - - [配置](#配置) - - [高亮组](#高亮组) - - [声明](#声明) - - [感谢](#感谢) - - [贡献](#贡献) - - [待办 (画大饼)](#待办-画大饼) - - [项目情况](#项目情况) - -### 注意: 当前分支目前没有发布, README.md 的描述并不准确, 遇到问题请切换到 `main`分支或者联系我 +> **插件默认词库的路径为插件目录** + 例如: `lazy` 用户应该在 `$HOME/.local/share/nvim/lazy/Trans.nvim` ## 特点 -- 使用纯 lua 编写, 速度极快 - - > `Lazy.nvim`的记录: `➜  Trans.nvim 0.82ms` +- `使用纯 lua 编写` - **可以定义快捷键读英文单词** - > 见 wiki - - 大部分功能可以自定义: - 高亮 - 悬浮大小 - 排版顺序 - 弹窗大小 - `舒服窗口动画` - - etc (更多可以查看[配置](#配置)) -- **完全离线** 的单词翻译体验 (可能后面会支持在线翻译) + - 更多可以查看[配置](#配置) +- `离线`和`在线`翻译的支持 - 支持显示: - 柯林斯星级 - 牛津 3000 词汇 @@ -46,7 +45,7 @@ - 英文翻译 (不是英译中, 而是用英文解释) - 词根 - etc -- 舒服的排版和`动画` +- 支持`平滑动画` - 支持 `normal`和 `visual`模式 > 不支持 visual-block mode - 本地词库单词量: `430w` @@ -61,13 +60,13 @@ https://user-images.githubusercontent.com/107862700/226175984-1a95bea7-8d66-450e-87e1-ba9c91c37ab8.mp4 -### 在线查询 (有道) +### 在线查询演示 (有道) https://user-images.githubusercontent.com/107862700/226176106-c2962dd3-d66c-499c-b44a-1f471b79fe38.mp4 **使用在线查询需要配置相应的 app_id 和 app_passwd** -在线查询配置见: [wiki](https://github.com/JuanZoran/Trans.nvim/wiki/%E9%85%8D%E7%BD%AE#%E5%9C%A8%E7%BA%BF%E6%9F%A5%E8%AF%A2%E9%85%8D%E7%BD%AE) +配置说明见: [wiki](https://github.com/JuanZoran/Trans.nvim/wiki/%E9%85%8D%E7%BD%AE#%E5%9C%A8%E7%BA%BF%E6%9F%A5%E8%AF%A2%E9%85%8D%E7%BD%AE) ### 主题 @@ -157,40 +156,32 @@ use { **注意事项**: -- `install.sh` - - - 使用了 `wget`下载词库, 安装请确保你的环境变量中存在 wget - - install.sh 下载后会自动将词库解压, 并移动到 `$HOME/.vim/dict`文件夹下 - - 目前仅在 `Ubuntu22.04`的环境下测试通过 - > 如果上述条件不符合, 请删掉 `run = 'install.sh'`部分, 考虑手动安装词库 - > 如果上述条件满足, 仍出现问题, 欢迎在 issue 里向我反馈,我会及时尝试解决 - - 下载词典的过程中, 需要能够 `流畅的访问github下载` - > 词库文件压缩包大小为: **281M** - > 解压缩后的大小大概为: 1.2G + 如果下载出现问题, 正常是会自动下载 -- 安装后如果不能正常运行, 请尝试检查一下问题: + > 词库文件压缩包大小为: **281M** + > 解压缩后的大小大概为: **1.2G** - - 本机是否已经安装了 `sqlite3` - > Linux 下安装: - > `sudo pacman -S sqlite # Arch` - > `sudo apt-get install sqlite3 libsqlite3-dev # Ubuntu` +- 安装后如果不能正常运行, 清尝试运行 `checkhealth Trans` - > **尝试运行 `checkhealth Trans`** +- **`auto_play`** 的使用: -- **`auto_play`** 使用步骤: + - `Linux` 需要安装`festival` - > linux 只需要安装`festival` - > sudo apt-get install festival festvox-kallpc16k - > **_如果你想要设置音色,发音可以访问:_** [Festival 官方](https://www.cstr.ed.ac.uk/projects/festival/morevoices.html) - > 可以选择英音、美音、男声、女声 + > `sudo apt-get install festival festvox-kallpc16k` - > 其他操作系统 + **如果你想要设置音色,发音可以访问:** [Festival 官方](https://www.cstr.ed.ac.uk/projects/festival/morevoices.html) + 可以选择英音、美音、男声、女声 - - 需要确保安装了`nodejs` - - 进入插件的`tts`目录运行`npm install` - > 如果`install`运行正常则自动安装,如果安装失败,请尝试手动安装 + - `Termux` 需要安装`termux-api` + + - `Mac` 使用系统的`say`命令 + + - `Windows` 使用 `nodejs`的 say 模块, 如果你有更好的方案欢迎提供 PR + - 需要确保安装了`nodejs` + - 进入插件的`tts`目录运行`npm install` + > 如果`install`运行正常则自动安装,如果安装失败,请尝试手动安装 - `title`的配置,只对`neovim 0.9+`版本有效 @@ -244,12 +235,16 @@ use { ## 配置 -详细见**wiki**: [配置说明](https://github.com/JuanZoran/Trans.nvim/wiki/%E9%85%8D%E7%BD%AE) +详细见**wiki**: [基本配置说明](https://github.com/JuanZoran/Trans.nvim/wiki/%E9%85%8D%E7%BD%AE) + +
+ 默认配置 ```lua -require 'Trans'.setup { +default_conf = { ---@type string the directory for database file and password file dir = require 'Trans'.plugin_dir, + debug = true, ---@type 'default' | 'dracula' | 'tokyonight' global Trans theme [see lua/Trans/style/theme.lua] theme = 'default', -- default | tokyonight | dracula strategy = { @@ -294,11 +289,13 @@ require 'Trans'.setup { split_width = 60, padding = 10, -- padding for hover window width keymaps = { - pageup = '[[', - pagedown = ']]', - pin = '[', - close = ']', - toggle_entry = ';', + -- INFO : No default keymaps anymore, please set it yourself + -- pageup = '', + -- pagedown = '', + -- pin = '[', + -- close = ']', + -- toggle_entry = ';', + -- play = '_', -- Deprecated }, ---@type string[] auto close events @@ -349,6 +346,8 @@ require 'Trans'.setup { } ``` +
+ ## 快捷键绑定 **示例:** @@ -361,66 +360,90 @@ vim.keymap.set({'n', 'x'}, 'mm', 'Translate') vim.keymap.set({'n', 'x'}, 'mk', 'TransPlay') -- 自动发音选中或者光标下的单词 ``` -## 高亮组 - -> 默认定义 +**窗口快捷键** ```lua -{ - TransWord = { - fg = '#7ee787', - bold = true, +require 'Trans'.setup { + frontend = { + hover = { + keymaps = { + -- pageup = 'whatever you want', + -- pagedown = 'whatever you want', + -- pin = 'whatever you want', + -- close = 'whatever you want', + -- toggle_entry = 'whatever you want', + }, }, - TransPhonetic = { - link = 'Linenr' - }, - TransTitle = { - fg = '#0f0f15', - bg = '#75beff', - bold = true, - }, - TransTitleRound = { - fg = '#75beff', - }, - TransTag = { - -- fg = '#e5c07b', - link = '@tag' - }, - TransExchange = { - link = 'TransTag', - }, - TransPos = { - link = 'TransTag', - }, - TransTranslation = { - link = 'TransWord', - }, - TransDefinition = { - link = 'Moremsg', - }, - TransWin = { - link = 'Normal', - }, - TransBorder = { - fg = '#89B4FA', - }, - TransCollins = { - fg = '#faf743', - bold = true, - }, - TransFailed = { - fg = '#7aa89f', - }, - TransWaitting = { - link = 'MoreMsg' - }, - TransWeb = { - -- TODO : - link = 'MoreMsg', - } + }, } +} ``` +> 当窗口没有打开的时候, key 会被使用`vim.api.nvim_feedkey`来执行 + +## 高亮组 + +所有主题可见 `lua/Trans/style/theme.lua` + +
+ +默认主题 + +```lua +TransWord = { + fg = '#7ee787', + bold = true, +} +TransPhonetic = { + link = 'Linenr' +} +TransTitle = { + fg = '#0f0f15', + bg = '#75beff', + bold = true, +} +TransTitleRound = { + fg = '#75beff', +} +TransTag = { + -- fg = '#e5c07b', + link = '@tag' +} +TransExchange = { + link = 'TransTag', +} +TransPos = { + link = 'TransTag', +} +TransTranslation = { + link = 'TransWord', +} +TransDefinition = { + link = 'Moremsg', +} +TransWin = { + link = 'Normal', +} +TransBorder = { + fg = '#89B4FA', +} +TransCollins = { + fg = '#faf743', + bold = true, +} +TransFailed = { + fg = '#7aa89f', +} +TransWaitting = { + link = 'MoreMsg' +} +TransWeb = { + link = 'MoreMsg', +} +``` + +
+ ## 声明 - 本插件词典基于[ECDICT](https://github.com/skywind3000/ECDICT) @@ -436,6 +459,10 @@ vim.keymap.set({'n', 'x'}, 'mk', 'TransPlay') -- 自动发音选中或 > 更新比较频繁, 文档先鸽了 > 如果你想要参加这个项目, 可以提 issue, 我会把文档补齐 +## 从 v1 (main)分支迁移 + + 见[wiki](https://github.com/JuanZoran/Trans.nvim/wiki/%E4%BB%8E(v1)main%E5%88%86%E6%94%AF%E8%BF%81%E7%A7%BB) + ## 待办 (画大饼) - [x] 快捷键定义 diff --git a/lua/Trans/core/conf.lua b/lua/Trans/core/conf.lua index efa96d4..6f7c506 100644 --- a/lua/Trans/core/conf.lua +++ b/lua/Trans/core/conf.lua @@ -57,7 +57,6 @@ return { -- close = ']', -- toggle_entry = ';', - -- play = '_', -- Deprecated }, ---@type string[] auto close events