首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在vim中制作编号列表的宏?

在vim中制作编号列表的宏?
EN

Stack Overflow用户
提问于 2010-11-19 19:13:41
回答 7查看 9.2K关注 0票数 28

很多时候,我似乎有一个项目列表,我需要在它们前面加上数字。例如:

代码语言:javascript
复制
Item one
Item two
Item three

这应该是:

代码语言:javascript
复制
1. Item one
2. Item two
3. Item three

在vim中,我可以在编辑模式下按I,插入"1.",然后按hit键。然后转到下一行,按.,然后按^A递增数字。这似乎非常低效..。我如何制作一个宏,以便我可以转到下一行,并在开头插入一个比前一行大一的数字?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-11-19 19:29:16

你可以很容易地录制一个宏来做这件事。

首先在第一行的开头插入1. ( 1.后面有几个空格,但您看不到它们)。

转到第二行的开头,使用qa进入记录模式。

按以下键序列:

代码语言:javascript
复制
i                         # insert mode
<ctrl-Y><ctrl-Y><ctrl-Y>  # copy the first few characters from the line above  
<ESC>                     # back to normal mode
|                         # go back to the start of the line
<ctrl-A>                  # increment the number
j                         # down to the next line
q                         # stop recording

现在,您可以使用@a回放记录(第一次回放;对于以后的回放,您可以执行@@来重复上次执行的宏),它将在每行的开始处添加一个新的递增数字。

票数 26
EN

Stack Overflow用户

发布于 2010-11-19 19:19:41

使用:V在可视模式下选择您的行,然后键入:

代码语言:javascript
复制
:'<,'>s/^\s*\zs/\=(line('.') - line("'<")+1).'. '

这很容易放入命令中:

代码语言:javascript
复制
command! -nargs=0 -range=% Number <line1>,<line2>s/^\s*\zs/\=(line('.') - <line1>+1).'. '
票数 15
EN

Stack Overflow用户

发布于 2010-11-19 20:59:14

如果你有时不得不这样做,也有一些插件可以做这类工作:

http://vim.sourceforge.net/scripts/script.php?script_id=670

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4224410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档