vim - 创建一个词汇笔记本 [Vim]
问题描述
想用vim看外文,快速收集词汇。只需按下热键,当前单词(词汇)和句子(用法)就应该通过管道传输到我的笔记本上。这将由 vim 脚本完成(应该很简单)。
# New words (2019-12-07)
word: "Nullstellensatz"
usage: "A general solution of the ideal membership problem provides an effective Nullstellensatz, at least for the weak form."
time: 2019-12-07T22:19:02-04:00
source: /home/username/Hilbert's-Nullstellensatz.md
word: "disponibles"
usage: "Ces outils sont disponibles pour toute forme de consultation, privée ou publique."
time: 2019-12-07T22:21:49-04:00
source: /home/username/CONFIANCE-DANS-LES-PLATEFORMES.md
到目前为止,我已经弄清楚了如何在正常模式下选择单词和句子,viw
并通过.vis
:'<,'>w!cat >> notebook.md
遗留问题
- 我已经成功地将单词和句子传输到文件中,但它们保持在同一行。如何插入
\n
,word:
并usage:
使用 vim 命令? - 如何获取当前时间,并将其传送到我的目标文件中?
- 如何读取当前文件名,并将其通过管道传输到我的目标文件中?
解决方案
使用起来redir
比:w!cat
( :help :redir
) 好得多。
function! GrabWord()
normal mz"zyiw"yyis`z
redir >> /path/to/notebook.md " CHANGE PATH
echo 'word: ' . json_encode(@z)
echo 'usage: ' . json_encode(@y)
echo 'time: ' . strftime('%FT%T%z')
echo 'source: ' . json_encode(expand('%:p'))
echo ''
redir END
endfunction
nnoremap <silent> Q :silent call GrabWord()<CR>
我输入了一个json_encode
包含反斜杠或双引号的字符串不会中断。
推荐阅读
- python - 简单的嵌套while循环
- azure-devops - VSTS UI 查询以返回仅包含新任务的用户故事
- node.js - 使用请求模块从响应正文中获取值
- angular - 如果我从一个非常大的 Angular 项目中删除默认测试用例怎么办?
- css - 如何在不给它(或其父级)显式高度的情况下防止内联 SVG 显示在任意高度?
- python-3.x - 将 excel 文件导入 jupyter 笔记本时出现语法错误
- javascript - 汉堡图标没有响应
- java - 使用路径对象动态使用 Maven 和 getResources?
- ruby-on-rails - Rails 5 和 Globalize gem:翻译缺失
- java - 区分大小写的 Spring Boot 查询选择