Trans.nvim

  • Trans.nvim

    • 特点
    • 屏幕截图
      • 演示
      • 主题
    • 安装
    • 配置
    • 快捷键绑定
    • 高亮组
    • 声明
    • 感谢
    • 贡献
    • 待办 (画大饼)

特点

  • 使用纯lua编写, 速度极快

Lazy.nvim的记录: ➜  Trans.nvim 0.82ms

  • 可以定义快捷键读英文单词

见wiki

  • 大部分功能可以自定义:

    • 高亮
    • 悬浮大小
    • 排版顺序
    • 弹窗大小
    • 舒服窗口动画
    • etc (更多可以查看配置)
  • 完全离线 的单词翻译体验 (可能后面会支持在线翻译)

  • 支持显示:

    • 柯林斯星级
    • 牛津3000词汇
    • 中文翻译
    • 英文翻译 (不是英译中, 而是用英文解释)
    • 词根
    • etc
  • 舒服的排版和动画

  • 支持 normalvisual模式

    不支持 visual-block mode

  • 本地词库单词量: 430w

屏幕截图

演示

请移步项目主页查看

视频演示的在线查询, 查询速度取决于你的网络状况
可以打开音量查看自动读音

plugin_demo

主题

如果你有更美观或者更适合的配色, 欢迎提PR
主题配色在: lua/Trans/theme.lua文件中,你只需要添加你主题的表就可以了



安装

安装之前, 首先需要明确本插件的依赖:

  • ECDICT: 插件所用的离线单词数据库
  • sqlite.lua: 操作数据库所用的库
  • sqlite3: 数据库

Packer.nvim

use {'JuanZoran/Trans.nvim'run = 'bash ./install.sh',requires = 'kkharji/sqlite.lua',-- 如果你不需要任何配置的话, 可以直接按照下面的方式启动config = function ()require'Trans'.setup{-- your configuration here}end
}

如果你想要使用Packer的惰性加载,这里有一个例子

use {"JuanZoran/Trans.nvim",keys = {{ {'n', 'x'}, 'mm' }, -- 换成其他你想用的key即可{ {'n', 'x'}, 'mk' }, { 'n', 'mi' },},run = 'bash ./install.sh', -- 自动下载使用的本地词库requires = 'kkharji/sqlite.lua',config = function()require("Trans").setup {} -- 启动Transvim.keymap.set({"n", 'x'}, "mm", '<Cmd>Translate<CR>', { desc = ' Translate' }) -- 自动判断virtual 还是 normal 模式vim.keymap.set({'n', 'x'}, 'mk', '<Cmd>TransPlay<CR>', {desc = ' 自动发音'}) -- 自动发音选中或者光标下的单词vim.keymap.set("n", "mi", "<Cmd>TranslateInput<CR>", { desc = ' Translate' })end
}

Lazy.nvim

    {"JuanZoran/Trans.nvim",keys = {-- 可以换成其他你想映射的键{ 'mm', mode = { 'n', 'x' }, '<Cmd>Translate<CR>', desc = ' Translate' },{ 'mk', mode = { 'n', 'x' }, '<Cmd>TransPlay<CR>', desc = ' 自动发音' },-- 目前这个功能的视窗还没有做好,可以在配置里将view.i改成hover{ 'mi', '<Cmd>TranslateInput<CR>', desc = ' Translate From Input' },},dependencies = { 'kkharji/sqlite.lua', lazy = true },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

    后续会增加 healthcheck 进行检查

  • auto_play 使用步骤:

    linux 只需要安装festival
    sudo apt-get install festival festvox-kallpc16k
    如果你想要设置音色,发音可以访问: Festival官方
    可以选择英音、美音、男声、女声

    其他操作系统

    • 需要确保安装了nodejs
    • 进入插件的tts目录运行npm install

      如果install.sh运行正常则自动安装,如果安装失败,请尝试手动安装

  • 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 查看更多详细配置
    • 官方网站
    • 用户手册

配置

require'Trans'.setup {view = {i = 'float',n = 'hover',v = 'hover',},hover = {width = 37,height = 27,border = 'rounded',title = title,keymap = {pageup = '[[',pagedown = ']]',pin = '<leader>[',close = '<leader>]',toggle_entry = '<leader>;',play = '_',},animation = {-- open = 'fold',-- close = 'fold',open = 'slid',close = 'slid',interval = 12,},auto_close_events = {'InsertEnter','CursorMoved','BufLeave',},auto_play = true,timeout = 3000,spinner = 'dots', -- 查看所有样式: /lua/Trans/util/spinner-- spinner = 'moon'},float = {width = 0.8,height = 0.8,border = 'rounded',title = title,keymap = {quit = 'q',},animation = {open = 'fold',close = 'fold',interval = 10,},tag = {wait = '#519aba',fail = '#e46876',success = '#10b981',},engine = {'本地',}},order = { -- only work on hover mode'title','tag','pos','exchange','translation','definition',},icon = {star = '',notfound = ' ',yes = '✔',no = '',-- --- char: ■ | □ | ▇ | ▏ ▎ ▍ ▌ ▋ ▊ ▉ █-- --- ◖■■■■■■■◗▫◻ ▆ ▆ ▇⃞ ▉⃞cell = '■',-- star = '⭐',-- notfound = '❔',-- yes = '✔️',-- no = '❌'},theme = 'default',-- theme = 'dracula',-- theme = 'tokyonight',db_path = '$HOME/.vim/dict/ultimate.db',engine = {-- baidu = {--     appid = '',--     appPasswd = '',-- },-- -- youdao = {--     appkey = '',--     appPasswd = '',-- },},-- TODO :-- register word-- history = {--     -- TOOD-- }-- TODO :add online translate engine
}

快捷键绑定

示例:

示例中展示, 将mm映射成快捷键

vim.keymap.set({'n', 'x'}, 'mm', '<Cmd>Translate<CR>')
vim.keymap.set({'n', 'x'}, 'mk', '<Cmd>TransPlay<CR>') -- 自动发音选中或者光标下的单词
vim.keymap.set('n', 'mi', '<Cmd>TranslateInput<CR>')

高亮组

默认定义

{TransWord = {fg = '#7ee787',bold = true,},TransPhonetic = {link = 'Linenr'},TransTitle = {fg = '#0f0f15',bg = '#75beff',bold = true,},TransTitleRound = {fg = '#75beff',},TransTag = {fg = '#e5c07b',},TransExchange = {link = 'TransTag',},TransPos = {link = 'TransTag',},TransTranslation = {link = 'TransWord',},TransDefinition = {link = 'Moremsg',},TransWin = {link = 'Normal',},TransBorder = {link = 'FloatBorder',},TransCollins = {fg = '#faf743',bold = true,},TransFailed = {fg = '#7aa89f',},
}

声明

  • 本插件词典基于ECDICT

感谢

  • ECDICT 本地词典的提供
  • sqlite.lua 数据库访问
  • T.vim 灵感来源

贡献

更新比较频繁, 文档先鸽了
如果你想要参加这个项目, 可以提issue, 我会把文档补齐

待办 (画大饼)

  • 多风格样式查询
  • 重新录制屏幕截图示例
  • 快捷键定义
  • 自动读音
  • 变量命名的支持
  • 历史查询结果保存
  • 在线多引擎异步查询
  • 句子翻译 | 中翻英 的支持

一个支持在线和本地发音+ 翻译的neovim插件相关推荐

  1. QML实现仿酷狗音乐播放器(支持在线和本地播放)

    1.支持在线音乐播放由于在线音乐涉及到敏感代码,暂时没有剔除就没有发布代码了,如果需要参考可以@我(其实这方面资料网上也多). 2.支持本地音视频播放. 3.支持歌词同步. 4.支持皮肤系统 技术Qt ...

  2. jdk11~13支持在线调用本地编译并显示到网页上【Java代码助手】

    参考学习 https://www.liaoxuefeng.com/wiki/1252599548343744/1252598088725056#0 按照上面链接下载java文件,内容如下: Learn ...

  3. Simple: 一个支持中文和拼音搜索的 sqlite fts5插件

    之前的工作关系,需要在手机上支持中文和拼音搜索.由于手机上存储数据一般都是用 sqlite,所以是基于 sqlite3 fts5 来实现.这段时间再次入门 c++,所以想用 c++ 实现一下,一来用于 ...

  4. 基于pyqt5的翻译软件源代码,支持图片、截屏翻译,支持音标发音,翻译结果播报

    基于pyqt5的翻译软件源代码,支持图片.截屏翻译,支持音标发音,翻译结果播报,支持百度.有道翻译,已实现划词翻译,一键复制翻译结果.先安装程序依赖requirements.txt,然后运行main. ...

  5. php在线播放bt,yunBT:一个基于ThinkCMS的多用户BT离线下载程序,支持在线播放

    说明:yunBT这个项目其实很早就有了,只是老没更新,现在作者基于ThinkCMS重做该程序,支持多用户注册下载,Magnet和HTTP下载.每个单独用户支持10个任务,默认下载文件最大为10GB,可 ...

  6. PySide是Python语言的Qt框架的一个绑定。PySide支持跨平台和本地GUI应用程序开发,是在Python 2.6、2.7和3.x版本下可用。

    PySide是Python语言的Qt框架的一个绑定.PySide支持跨平台和本地GUI应用程序开发,是在Python 2.6.2.7和3.x版本下可用. 在开始使用PySide之前,需要在你的机器上安 ...

  7. 《安富莱嵌入式周报》第280期:支持在线仿真编程的网页版电子开发,CAN总线防攻击实现,BigFAT 规范打破了 FAT 每个文件 4GB 的限制

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  8. 英译汉文章在线翻译器:批量翻译、素材收集、图片处理

    英译汉文章在线翻译器让我们可以在线进行英汉文章翻译互译,英译汉文章在线翻译器对接Google翻译.有道翻译和Baidu翻译等多个翻译大厂api接口,覆盖绝大多数的语种间的翻译和语种切换. 英译汉文章在 ...

  9. HTML免费在线文档批量翻译工具

    免费在线文档翻译不同于一般的段落文章复制粘贴在线翻译,免费在线文档翻译支持我们将我们的不同格式的整篇文档进行翻译,还可以将多篇文档放入我们的一个文件夹中,对这个文件夹进行批量翻译,适用于需要大量进行批 ...

最新文章

  1. 【Android源码剖析】(API 19)[View-----MeasureSpec]
  2. Android 系统文件夹功能(转)
  3. android8 呼吸灯,红米note8pro呼吸灯颜色如何设置?
  4. 使用ExtendSim进行水管理、可持续性和环境仿真建模
  5. 《电子信息系统机房设计规范》中涉及到的节能问题
  6. 新计算机分区,新电脑如何分区 新电脑怎么分盘
  7. WinEdit编辑器中中文乱码
  8. android 拨打带有分机号的电话
  9. 南昌大学计算机导师林振荣,南昌大学各学院研究生导师介绍
  10. 计算机桌面无喇叭显示器,电脑屏幕下面有小喇叭图标但是没有声音怎么处理
  11. aws mediatailor运行原理图
  12. MOD8ID加密芯片的使用以及示例讲解
  13. 鲤鱼溪传说:神鱼与三仙姑
  14. office 论文 页码_WORD目录,页眉,页脚,页码设置技巧 为你的毕业论文收藏吧-以Word 2013演示...
  15. 【树形DP】 HDOJ 5148 Cities
  16. SpringBoot新项目配置
  17. QGC地面站使用教程
  18. java7找不到uri_部署-Java Jar文件:使用资源错误:URI不是hierarchi
  19. java如何打印棋盘_java打印国际象棋棋盘的方法|chu
  20. 基本步骤:转换IBM Lotus Notes应用程序以使用Lotus Notes 8 Java组件

热门文章

  1. 关闭CLion光标闪烁/调节CLion光标闪烁速度
  2. Cesium 地球自转Camera版本
  3. 莆田中专计算机专业都学什么,莆田所有中专学校 中专院校名单
  4. QT5.14.2自带Examples:Bars
  5. 如何下载popper.js/popper.min.js
  6. Camera Link协议和FPGA的数字图像信号源设计
  7. 从5个维度,对傅盛演讲「生物学思维模型」解读
  8. jiathis的使用
  9. Timer+TimerTask实现数字时钟
  10. C语言做着做着会变成木马程序,[原创]C语言SDK模拟木马行为