首页 > 解决方案 > 创建一个词汇笔记本 [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

遗留问题

  1. 我已经成功地将单词和句子传输到文件中,但它们保持在同一行。如何插入\n,word:usage:使用 vim 命令?
  2. 如何获取当前时间,并将其传送到我的目标文件中?
  3. 如何读取当前文件名,并将其通过管道传输到我的目标文件中?

标签: 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包含反斜杠或双引号的字符串不会中断。


推荐阅读