使用Vim增加数字

时间:2014-01-19 18:43:42

标签: vim pandoc

假设我的文字文件的脚注格式如下:

Some text about cats[^1].
Some text about fish.
Some more text, this time about dogs[^2].
Something about rats[^3] and something else about birds[^4].


[^1]: Footnote about cats
[^2]: Footnote about dogs
[^3]: Footnote about rats
[^4]: Footnote about birds

如果我想为" fish"添加新的脚注,那么增加数字的最有效方法是什么?换句话说,最有效的方法是什么:

Some text about cats[^1].
Some text about fish[^2].
Some more text, this time about dogs[^3].
Something about rats[^4] and something else about birds[^5].


[^1]: Footnote about cats
[^2]: Footnote about fish
[^3]: Footnote about dogs
[^4]: Footnote about rats
[^5]: Footnote about birds

我正在寻找一种解决方案,我可以应用于一个非常大的文本文件,可能有数百个脚注。

到目前为止我只能手动执行此操作,并试图找到如何充分利用vim来实现这样的目标。

4 个答案:

答案 0 :(得分:4)

可以使用以下命令递增所选区域中的所有引用:

:'<,'>sno/[^\(\d\+\)]/\='[^'.(submatch(1)+1).']'/g

sno:help :snomagic)允许在括号前删除反斜杠。

  1. 添加参考。
  2. 选择参考后的所有文本(不包括脚注)。您可以在脚注之前设置标记,以便轻松完成此操作。
  3. 增加参考选择。
  4. 添加脚注。
  5. 选择以下所有脚注。
  6. 增加参考选择。
  7. screencast

答案 1 :(得分:2)

我假设您正在使用pandoc,因此一个选项是使用pandoc wiki中所述的内联脚注或命名脚注。

你可以在vim中实现这一目标的一种方法是使用宏。例如:

加入新的脚注......

/fish<cr>ea[^2]<esc>

创建一个新的宏来增加剩余的脚注(假设您知道有多少脚注)。

qq/\[^\d\]<cr><c-a>q2@q

更新脚注......

nYp<c-a>fccfish<esc>3@q

答案 2 :(得分:2)

使用临时脚注引用添加脚注,例如,

Some text about cats[^1].
Some text about fish[^fish].
Some more text, this time about dogs[^2].
Something about rats[^3] and something else about birds[^4].

[^fish]: Footnote about fish
[^1]: Footnote about cats
[^2]: Footnote about dogs
[^3]: Footnote about rats
[^4]: Footnote about birds

然后通过pandoc管道整个事件::%!pandoc -t markdown --standalone,除其他外,它将很好地重新编号所有脚注引用,并将所有脚注按顺序放在文档的末尾。

答案 3 :(得分:1)

我没有很好的建议来增加你的号码,但我有一个pretty nice workflow for Markdown footnotes and vim

基本上,我使用my fork of vim-markdownfootnotes尽可能轻松快速地输入脚注。如果脚注数字的顺序由于我习惯在文本的早期部分插入脚注而搞砸了,我运行my sort-markdown-footnotes script并且一切都恢复正常。

像魅力一样。

我没有用数百个脚注来测试它......