*Trans.txt* For NVIM v0.8.0 Last change: 2023 March 17 ============================================================================== Table of Contents *Trans-table-of-contents* 1. Trans.nvim |Trans-trans.nvim| - 特点 |Trans-trans.nvim-特点| - 屏幕截图 |Trans-trans.nvim-屏幕截图| - 安装 |Trans-trans.nvim-安装| - 配置 |Trans-trans.nvim-配置| - 快捷键绑定 |Trans-trans.nvim-快捷键绑定| - 高亮组 |Trans-trans.nvim-高亮组| - 声明 |Trans-trans.nvim-声明| - 感谢 |Trans-trans.nvim-感谢| - 贡献 |Trans-trans.nvim-贡献| - 待办 (画大饼) |Trans-trans.nvim-待办-(画大饼)| ============================================================================== 1. Trans.nvim *Trans-trans.nvim* - |Trans-trans.nvim| - |Trans-特点| - |Trans-屏幕截图| - |Trans-演示| - |Trans-主题| - |Trans-安装| - |Trans-配置| - |Trans-快捷键绑定| - |Trans-高亮组| - |Trans-声明| - |Trans-感谢| - |Trans-贡献| - |Trans-待办-(画大饼)| 注意: 当前分支目前没有发布, README.MD 的描述并不准确, 遇到问题请切换到 MAIN分支或者联系我 ~ 特点 *Trans-trans.nvim-特点* - 使用纯 lua 编写, 速度极快 `Lazy.nvim`的记录: `➜  Trans.nvim 0.82ms` - **可以定义快捷键读英文单词** 见 wiki - 大部分功能可以自定义: - 高亮 - 悬浮大小 - 排版顺序 - 弹窗大小 - `舒服窗口动画` - etc (更多可以查看|Trans-配置|) - **完全离线** 的单词翻译体验 (可能后面会支持在线翻译) - 支持显示: - 柯林斯星级 - 牛津 3000 词汇 - 中文翻译 - 英文翻译 (不是英译中, 而是用英文解释) - 词根 - etc - 舒服的排版和`动画` - 支持 `normal`和 `visual`模式 > 不支持 visual-block mode - 本地词库单词量: `430w` 屏幕截图 *Trans-trans.nvim-屏幕截图* 演示 ~ https://user-images.githubusercontent.com/107862700/213752097-2eee026a-ddee-4531-bf80-ba2cbc8b44ef.mp4 视频演示的在线查询, 查询速度取决于你的网络状况 可以打开音量查看自动读音 https://user-images.githubusercontent.com/107862700/215941500-3293c571-20a1-44e2-b202-77079f158ce9.mp4 主题 ~ 如果你有更美观或者更适合的配色, 欢迎提 PR 主题配色在: `lua/Trans/theme.lua`文件中,你只需要添加你主题的表就可以了 - `default` - `dracula` - `tokyonight` 安装 *Trans-trans.nvim-安装* _安装之前, 首先需要明确本插件的依赖:_ - ECDICT : 插件所用的离线单词数据库 - sqlite.lua : 操作数据库所用的库 - sqlite3: 数据库 Packer.nvim ~ >lua use { 'JuanZoran/Trans.nvim' run = function() require('Trans').install() end, -- 自动下载使用的本地词库 requires = 'kkharji/sqlite.lua', , -- 如果你不需要任何配置的话, 可以直接按照下面的方式启动 config = function () require'Trans'.setup{ -- your configuration here } end } < **如果你想要使用 Packer 的惰性加载,这里有一个例子** >lua use { "JuanZoran/Trans.nvim", keys = { { {'n', 'x'}, 'mm' }, -- 换成其他你想用的key即可 { {'n', 'x'}, 'mk' }, { 'n', 'mi' }, }, run = function() require('Trans').install() end, -- 自动下载使用的本地词库 requires = { 'kkharji/sqlite.lua', }, config = function() require("Trans").setup {} -- 启动Trans vim.keymap.set({"n", 'x'}, "mm", 'Translate', { desc = '󰊿 Translate' }) -- 自动判断virtual 还是 normal 模式 vim.keymap.set({'n', 'x'}, 'mk', 'TransPlay', {desc = ' 自动发音'}) -- 自动发音选中或者光标下的单词 end } < Lazy.nvim ~ >lua { "JuanZoran/Trans.nvim", keys = { -- 可以换成其他你想映射的键 { 'mm', mode = { 'n', 'x' }, 'Translate', desc = '󰊿 Translate' }, { 'mk', mode = { 'n', 'x' }, 'TransPlay', desc = ' 自动发音' }, -- 目前这个功能的视窗还没有做好,可以在配置里将view.i改成hover { 'mi', 'TranslateInput', desc = '󰊿 Translate From Input' }, }, dependencies = { 'kkharji/sqlite.lua', }, opts = { -- your configuration there } } < **注意事项**: - `install.sh` - 使用了 `wget`下载词库, 安装请确保你的环境变量中存在 wget - install.sh 下载后会自动将词库解压, 并移动到 `$HOME/.vim/dict`文件夹下 - 目前仅在 `Ubuntu22.04`的环境下测试通过 > 如果上述条件不符合, 请删掉 `run = 'install.sh'`部分, 考虑手动安装词库 > 如果上述条件满足, 仍出现问题, 欢迎在 issue 里向我反馈,我会及时尝试解决 - 下载词典的过程中, 需要能够 `流畅的访问github下载` 词库文件压缩包大小为: **281M** 解压缩后的大小大概为: 1.2G - 安装后如果不能正常运行, 请尝试检查一下问题: - 本机是否已经安装了 `sqlite3` > Linux 下安装: > `sudo pacman -S sqlite # Arch` > `sudo apt-get install sqlite3 libsqlite3-dev # Ubuntu` **尝试运行 checkhealth Trans** - **auto_play** 使用步骤: linux 只需要安装`festival` sudo apt-get install festival festvox-kallpc16k **如果你想要设置音色,发音可以访问:** Festival 官方 可以选择英音、美音、男声、女声 其他操作系统 - 需要确保安装了`nodejs` - 进入插件的`tts`目录运行`npm install` > 如果`install`运行正常则自动安装,如果安装失败,请尝试手动安装 - `title`的配置,只对`neovim 0.9+`版本有效 Festival配置(仅针对linux用户) ~ - 配置文件 - 全局配置: `/usr/share/festival/siteinit.scm` - 用户配置: `~/.festivalrc` - 更改声音 - 在 festival 的 voices 文件内建立自己的文件夹 一般其默认配置目录在`/usr/share/festival/voices` 示例: `sudo mkdir /usr/share/festival/voices/my_voices` - 下载想要的 voices 文件并解压 可能需要  - 试听在这里 ) - 下载在这里 ) > 假设下载的文件在`Downloads`文件夹, 下载的文件为:`festvox_cmu_us_aew_cg.tar.gz` 示例: `cd ~/Downloads && tar -xf festvox_cmu_us_aew_cg.tar.gz` - 将音频文件拷贝到 festival 文件夹 示例: `sudo cp -r festival/lib/voices/us/cmu_us_aew_cg/ /usr/share/festival/voices/my_voices/` - 在配置文件中设置默认的声音 示例: 加入`(set! voice_default voice_cmu_indic_hin_ab_cg)`到配置文件 - 安装完成 - 相关说明网站 > 可能需要  - wiki 查看更多详细配置 - 官方网站 - 用户手册 配置 *Trans-trans.nvim-配置* >lua require'Trans'.setup { ---@type string the directory for database file and password file dir = os.getenv('HOME') .. '/.vim/dict', query = 'fallback', -- backend_order = {}, ---@type 'default' | 'dracula' | 'tokyonight' global Trans theme [see lua/Trans/style/theme.lua] theme = 'default', -- default | tokyonight | dracula strategy = { ---@type { frontend:string, backend:string | string[] } fallback strategy for mode default = { frontend = 'hover', backend = '*', }, }, ---@type table frontend options frontend = { ---@class TransFrontendOpts ---@field keymaps table default = { ---@type boolean Whether to auto play the audio auto_play = true, border = 'rounded', title = title, -- need nvim-0.9 ---@type {open: string | boolean, close: string | boolean, interval: integer} Hover Window Animation animation = { open = 'slid', -- 'fold', 'slid' close = 'slid', interval = 12, }, timeout = 2000, }, ---@class TransHoverOpts : TransFrontendOpts hover = { ---@type integer Max Width of Hover Window width = 37, ---@type integer Max Height of Hover Window height = 27, ---@type string -- see: /lua/Trans/style/spinner spinner = 'dots', ---@type string -- TODO :support replace with {{special word}} fallback_message = '{{notfound}} 翻译超时或没有找到相关的翻译', auto_resize = true, -- strict = false, -- TODO :No Width limit when str is a sentence padding = 10, -- padding for hover window width keymaps = { pageup = '[[', pagedown = ']]', pin = '[', close = ']', toggle_entry = ';', -- play = '_', -- Deprecated }, ---@type string[] auto close events auto_close_events = { 'InsertEnter', 'CursorMoved', 'BufLeave', }, ---@type table order to display translate result order = { default = { 'str', 'translation', 'definition', }, offline = { 'title', 'tag', 'pos', 'exchange', 'translation', 'definition', }, youdao = { 'title', 'translation', 'definition', 'web', } }, ---@type table icon = { -- or use emoji list = '●', -- ● | ○ | ◉ | ◯ | ◇ | ◆ | ▪ | ▫ | ⬤ | 🟢 | 🟡 | 🟣 | 🟤 | 🟦 | 🟨 | 🟧 | 🟥 | 🟪 | 🟫 | 🟩 | 🟠 | 🟦 | 🟨 | 🟧 | 🟥 | 🟪 | 🟫 | 🟩 | 🟠 star = '', -- ⭐ | ✴ | ✳ | ✲ | ✱ | ✰ | ★ | ☆ | 🌟 | 🌠 | 🌙 | 🌛 | 🌜 | 🌟 | 🌠 | 🌌 | 🌙 | notfound = '󰆆 ', --❔ | ❓ | ❗ | ❕| yes = '✔', -- ✅ | ✔️ | ☑ no = '', -- ❌ | ❎ | ✖ | ✘ | ✗ | cell = '■', -- ■ | □ | ▇ | ▏ ▎ ▍ ▌ ▋ ▊ ▉ █ web = '󰖟', --🌍 | 🌎 | 🌏 | 🌐 | tag = ' ', pos = '', translation = '󰊿', definition = '󰗊', exchange = '✳', }, }, }, }p < 快捷键绑定 *Trans-trans.nvim-快捷键绑定* **示例:** 示例中展示, 将`mm`映射成快捷键 >lua vim.keymap.set({'n', 'x'}, 'mm', 'Translate') vim.keymap.set({'n', 'x'}, 'mk', 'TransPlay') -- 自动发音选中或者光标下的单词 < 高亮组 *Trans-trans.nvim-高亮组* 默认定义 >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 = { -- TODO : link = 'MoreMsg', } } < 声明 *Trans-trans.nvim-声明* - 本插件词典基于ECDICT 感谢 *Trans-trans.nvim-感谢* - ECDICT 本地词典的提供 - sqlite.lua 数据库访问 - T.vim 灵感来源 贡献 *Trans-trans.nvim-贡献* 更新比较频繁, 文档先鸽了 如果你想要参加这个项目, 可以提 issue, 我会把文档补齐 待办 (画大饼) *Trans-trans.nvim-待办-(画大饼)* - ☒ 快捷键定义 - ☒ 自动读音 - ☒ 在线多引擎异步查询 - ☒ `句子翻译` | `中翻英` 的支持 - ☐ 多风格样式查询 - ☐ 重新录制屏幕截图示例 - ☐ 变量命名的支持 - ☐ 历史查询结果保存 ============================================================================== 2. Links *Trans-links* 1. *default*: ./theme/default.png 2. *dracula*: ./theme/dracula.png 3. *tokyonight*: ./theme/tokyonight.png Generated by panvimdoc vim:tw=78:ts=8:noet:ft=help:norl: