惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

SecWiki News
SecWiki News
I
InfoQ
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
博客园 - Franky
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
博客园_首页
罗磊的独立博客
V
V2EX
李成银的技术随笔
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
True Tiger Recordings
Vercel News
Vercel News
Cyberwarzone
Cyberwarzone
Cisco Talos Blog
Cisco Talos Blog
F
Fox-IT International blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
M
Microsoft Research Blog - Microsoft Research
Know Your Adversary
Know Your Adversary
爱范儿
爱范儿
The Register - Security
The Register - Security
G
Google Developers Blog
The Hacker News
The Hacker News
Malwarebytes
Malwarebytes
S
Securelist
博客园 - 三生石上(FineUI控件)
Jina AI
Jina AI
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
S
SegmentFault 最新的问题
博客园 - 叶小钗
F
Fortinet All Blogs
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
博客园 - 聂微东
T
Threatpost
博客园 - 【当耐特】
D
Docker
P
Privacy & Cybersecurity Law Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
G
GRAHAM CLULEY
V
Visual Studio Blog
C
Cisco Blogs
IT之家
IT之家
S
Security Archives - TechRepublic
Latest news
Latest news
阮一峰的网络日志
阮一峰的网络日志

jdhao's digital space

Manage uv.lock file with Renovate Set up Python Provider for Neovim Ripgrep Config to Search Hidden Files Pre-commit Setup for Your Project I read the nvim v0.12 release note so you don't have to Return Different Values for Each Call of A Mock Migrate Python Project from Pip to Uv 德语常用不规则动词 葱油鸡腿制作 Check Trailing White Spaces in Your Project 菜谱:茄子肉丁 object vs nested type in data mapping in Elasticsearch Node, Index, Shard in Elasticsearch Logging setup for Pytest Select fields in Elasticsearch: _source, fields and stored_fields 中式葱花饼制作 菜谱: 凉拌苤蓝(卜留克/kohlrabi) 我也有高考 PTSD Garmin Course Syncing Not Working? Prevent Accidental Index Delete in Elasticsearch How to Import GPX File into Garmin Watch Python system PATH issues When We Use Pytest 菜谱:泰式打抛牛肉 菜谱:烤箱羊肉串 How to Filter Warnings in Python/pytest 家常烤箱烤鸡腿 Comparison between Several Desktop Speakers How to Use LuaRocks Package in Neovim Macbook 外接显示器 家常萝卜炖羊排 Run the Job Immediately after Starting Scheduler in Python APScheduler Retry for Google Cloud Client 菜谱:土豆金枪鱼沙拉 菜谱:椰香咖喱鸡 凉拌绿豆宽粉制作 Make Python logging Work in GCP Liveness and Readiness Check in Kubernetes Notes on Using GCP Logging 西班牙土豆饼制作 Elasticsearch Version Conflict Error How to Use the Elasticsearch task API Speed up document indexing in Elasticsearch via bulk indexing Index refresh issue in Elasticsearch Google Cloud Storage Usage 家常煎羊排制作 凉拌茄子制作 Configure Python logging with dictConfig Debugging Wezterm Issues Black Formatter Setup for Python Project Git line ending config Garmin Forerunner 965 Essential Tips and Setups How to Download Files from Google Cloud Storage in the Databricks Workspace Notebook Databricks Cli Usage Working with Databricks Workspace Files 手抓羊肉饭制作 Databricks Init Scripts Using Virutal Environment in Python with venv File Systems in Databricks LATERAL VIEW EXPLODE in Spark 菜谱:麻婆豆腐 在德国做台湾卤肉饭 FastAPI testing and OpenAPI doc generation Change Timezone in Databricks Spark How to Profile Your Python Script/Module 菜谱:茄子肉沫 Migrating from Packer.nvim to Lazy.nvim How to Extract PDF file on macOS How to Deploy Fastapi Application with Docker Nerdfont Icon Missing after Wezterm Upgrade Pylsp setup for Neovim in 2023 How to Parse Query Param With Multiple Values in FastAPI 菜谱:土豆胡萝卜烧牛肉 Zsh Startup Files in macOS PATH Variable Changed inside Tmux on macOS? Work with JSON File in Neovim Running/importing Python code/module in Databricks Agile and Scrum 菜谱:凉拌牛肉 Awesome Command Line Tools Written in Rust How to get or set Databricks spark configuration Set Up German Version macOS Add A Custom Search Engine for Vimium 中国大陆小米手机如何使用 Google Pay 春节回乡记 滇西之行 2023 贵阳行 2023 程序员海外工作---语言篇 2023 长沙行 2023 西安行 德国工签申请指南 2022 年博客回顾 感染 omicron 记录 How to Override Default Options in Neovim Variadic Arguments in Lua How to Enable Method Autocompletion for OpenCV How to Read Local CSV File to Table in MySQL I read the nvim v0.8 release note so you do not have to Creating A Trigger in PostgreSQL Cost of Living in Shenzhen You Do Not Need a Plugin for This Feature
Vim 实现的输入法体验
2021-02-26 · via jdhao's digital space

文接上回,Vim 虽然贵为编辑器之神,有一个没有解决好的问题就是输入中文,以及中英文的切换问题。最近也尝试了一些试图利用 Vim 提供的功能,在 Vim 中实现输入法的插件。本文做一总结点评。

VimIM#

VimIM 是一个比较早尝试在 Vim 中实现输入法的插件,可惜在 2012 年就停止更新了。2012 年正是 Vim 的灰暗时期,当时连 job api 都没有出来,Vim 中调用函数只能是 blocking 方式的。

使用方式,首先下载 VimIM,可以用插件管理器或者手动下载。

Plug 'vim-scripts/VimIM'

但是这个仓库只包含代码,不包含数据,从 这里 可以下载到字典数据,把 vimim.cjk.txtvimim.gbk.bsddbvimim.txt 放到 VimIM 插件的 plugin 目录下。在我的系统上,VimIM 安装目录在 ~/.local/share/nvim/plugged/VimIM/plugin

wget -P  ~/.local/share/nvim/plugged/VimIM/plugin https://raw.fastgit.org/vimim/vimim/master/plugin/vimim.cjk.txt
wget -P  ~/.local/share/nvim/plugged/VimIM/plugin https://raw.fastgit.org/vimim/vimim/master/plugin/vimim.gbk.bsddb
wget -P  ~/.local/share/nvim/plugged/VimIM/plugin https://raw.fastgit.org/vimim/vimim/master/plugin/vimim.txt

下面是最小的可运行配置:

set runtimepath+=/home/haojiedong/.local/share/nvim/plugged/VimIM
" 关闭云输入
let g:Vimim_cloud=-1

打开 Vim,进入 insert 模式,使用 Ctrl + Shift + / 开启中文输入(这个是一个开关,再按一次关闭中文输入),输入英文字符,会出现弹出菜单,按数字可以选择汉字。

体验:输入速度很快,并且匹配很准,没有延迟的感觉。

=- 可以往后、往前翻页,Tab 可以在给出的候选项之间切换,按空格可以让选中的词语上屏,按 Enter 输入英文字符。

在 Vim 7.4 中测试可以运行,使用 Neovim 无法工作,不清楚具体是哪里有问题,这个插件好久没更新了,可能是不兼容了。

参考#

ZFVimIM#

ZFVimIM 是一个比较新的用 Vim 实现的输入法。

使用如下的配置:

call plug#begin(expand('~/.local/share/nvim/plugged'))
  Plug 'ZSaberLv0/ZFVimIM'
  Plug 'ZSaberLv0/ZFVimJob'
call plug#end()

" 使用本地 db 的配置
function! s:zfvimim_init() abort
  let db = ZFVimIM_dbInit({'name' : 'jd_db'})
  call ZFVimIM_cloudRegister({
              \   'mode' : 'local',
              \   'dbId' : db['dbId'],
              \   'repoPath' : expand('~/scratch_dir/'),
              \   'dbFile' : 'pinyin.txt',
              \   'dbCountFile' : 'pinyin_count.txt',
              \ })
endfunction

augroup zfvim_conf
  autocmd!
  autocmd VimEnter * call s:zfvimim_init()
augroup END

接下来需要下载字典,也就是作者说的 db,从 这里 下载拼音文件 pinyin.txt 和 count 文件 pinyin_count.txt,放到一个测试的目录,上面的配置中,repoPath 对应的就是这个文件存放的目录。

然后使用上述配置打开 Neovim,在插入模式下,使用 ;; 打开中文输入模式,开始输入即可。由于 pinyin.txt 只包含单个字拼音的数据,所以一点也不智能,输入拼音词组,需要自己一个个去选择数字来组词,所以速度比较慢。可以使用这个插件提供的 IMAdd 命令添加个人词组。例如, :IMAdd 云淡风轻 yundanfengqing

加载一个更大的词库,能够缓解输入时需要自己组词的尴尬,可以使用 这里 提供的 pinyin_huge.txt 和 pinyin_huge_count.txt 测试。

这个插件还支持云输入模式,需要添加下面的插件和配置:

" 插件地址:https://github.com/ZSaberLv0/ZFVimIM_openapi
Plug 'ZSaberLv0/ZFVimIM_openapi'

let g:ZFVimIM_openapi_enable=1

体验:有一些延迟卡顿,但是在 Neovim 下是可以正常使用的,云输入法挺好用的,比较准确(前提是可以正常使用 wget 进行请求)。