美文网首页
Vim 宏替换的应用 @a

Vim 宏替换的应用 @a

作者: 千羽之城88 | 来源:发表于2019-11-01 15:40 被阅读0次

用 lualtex 制作文本,总免不了做一些替换的工作,本来想写一个函数,本着能懒一会儿是一会儿的原则,还是用宏替换解决了。这是原文

page3.png

正文下面是注释:

page4.png

拷贝到vim中就变成了如下的内容:

魯有兀者叔山無趾(1),踵見仲尼(2)。仲尼曰:「子不謹,前既犯患若是矣。雖今來,何及矣?」無趾曰:「吾唯不知務而輕用吾身,吾是以亡足。今吾來也,猶有尊足者存(3),吾是以務全之也。夫天無不覆,地無不載,吾以夫子為天地,安知夫子之猶若是也!」孔子曰:「丘則陋矣。夫子胡不入乎?請講以所聞!」無趾出(4)。孔子曰:「弟子勉之!夫無趾,兀者也,猶務學以復補前行之惡,而況全德之人乎!(5)」...

【註】

李云:「叔山,氏。」宣云:「無足趾,遂為號。」
崔云:「無趾,故踵行。」
宣云:「有尊於足者,不在形骸。」
...
言其根器如此,天然刑戮,不可解也。

首先呢,我们需要给注释的行标注序号:

2019-11-01 14.10.57.gif

现在注释行就变成了:

1. 李云:「叔山,氏。」宣云:「無足趾,遂為號。」
2. 崔云:「無趾,故踵行。」
3. 宣云:「有尊於足者,不在形骸。」
...
10. 釋文:「惡,醜。李云:『哀駘,醜貌。它其名。』」

接下来我们要做的就是:用带序列号的行内容,替换掉原文的编号里面的内容,比如:


魯有兀者叔山無趾(1 \footnote{1. 李云:「叔山,氏。」宣云:
「無足趾,遂為號。」}),踵見仲尼(2 \footnote{2. 崔云:
「無趾,故踵行。」})。仲尼曰:「子不謹,前既犯患若是
矣。雖今來,何及矣?」無趾曰:「吾唯不知務而輕用吾身,
吾是以亡足。今吾來也,猶有尊足者存(3 \footnote{3. 宣云:
「有尊於足者,不在形骸。」})

我们先定义一个宏:


let @a="/(\\([0-9]\\+\\))^M:s/(\\([0-9]*\\))/\\='('.submatch("1").' \\footnote{'.getline(i+4).'})'/ \| let i+=1^M"

# 上面的命令是:
#   1. 搜索形如 (1) 的数字
#   2. 将替换

命令 解释
/(\([0-9]\+\))^M range
:s/../../ 替换
\= 后面接命令返回值
'('.submatch("1") 模式匹配的第一项
getline(i+4)/ 获取鼠标所在行下面第 i 行
let i+=1 递增 i
^M 是换行符号,Ctrl+Q Enter

在执行宏之前,我们先将i的值重设为0:let i=0。然后执行宏a 76遍: 76@a

这样就可以直接倒入到 texworks 里面。

page1.png

算了,还是制作成函数吧~

funciton! Foot(offset)
  let g:i=0 " everytime call Foot() will renew i's value
  let @a="/(\\([0-9]\\+\\))^M:s/(\\([0-9]\\+\\))/\\='('.submatch('1').' \\footnote{'.getline(i+".a:offset.").'})'/ \| let i+=1^M"
endfunction

放到 .vimrc 里,调用的时候执行:call Foot(3)

相关文章

  • Vim 宏替换的应用 @a

    用 lualtex 制作文本,总免不了做一些替换的工作,本来想写一个函数,本着能懒一会儿是一会儿的原则,还是用宏替...

  • Linux脚本总结

    1、总结vim命令行模式常见快捷方式,以及vim查找,替换的方法 vim查找 vim替换 2、总结脚本中运算符、逻...

  • Vim 常用命令

    VIM 命令 文件命令 VIM的模式 VIM导航命令 VIM插入命令 VIM查找命令 VIM替换命令 VIM使用技...

  • FFmpeg开发--Vim详解

    Vim编辑器Vim处理模式: Vim常用命令: Vim查找与替换:

  • vim 替换

    查找与替换:s(substitute)命令用来查找和替换字符串。语法如下: 例如:%s/foo/bar/g会在全局...

  • VIM 替换

    在VIM中进行文本替换:

  • vim替换

    vim 中可以使用 :s 命令来替换字符串。 利用 :s 命令可以实现字符串的替换。具体的用法包括: :s/str...

  • vi / vim 替换字符详解

    vi / vim 替换字符详解

  • 宏定义注意事项

    宏定义 为一段代码定义一个标识, 在编译之前将使用宏名的地方替换为宏值,这个替换的过程叫宏替换也叫宏代换 注意: ...

  • 【C/C++】宏(macro)定义与使用

    文章结构如下: 宏的定义 宏的替换与代码展开 宏的替换产生的问题 获取宏参数名称 宏参数的结合 宏的取消 宏定义的...

网友评论

      本文标题:Vim 宏替换的应用 @a

      本文链接:https://www.haomeiwen.com/subject/jtnfbctx.html