我有一份包含以下文字的源文件
Here is a bunch of text
...
Collect underpants
???
Profit!
...
More text
我想直观地选择中间三行并在它们前面插入数字:
Here is a bunch of text
...
1. Collect underpants
2. ???
3. Profit!
...
More text
我找到的所有解决方案都是将数字设为on their own new lines或添加actual line of the file。
任何人都可以帮助我将一系列数字添加到现有行中,从1开始吗?
答案 0 :(得分:3)
这是一个很好的宏。
qq
(或q<any letter>
)yf<space>
(y
ank f
ind
)j
P
0
0
再次回到起点(在数字末尾增加位置)q
@q
(或@<the letter you picked>
)<number>@@
(@@
重播最后一个宏),可以根据需要多次重播宏答案 1 :(得分:2)
使用以下命令设置非递归映射,并在光标位于要枚举的行内时在命令模式下键入 ,enum
。
:nn ,enum {j<C-v>}kI0. <Esc>vipg<C-a>
您可以输入 :help CTRL-A
查看问题的答案。
{Visual}g CTRL-A Add [count] to the number or alphabetic character in
the highlighted text. If several lines are
highlighted, each one will be incremented by an
additional [count] (so effectively creating a
[count] incrementing sequence).
For Example, if you have this list of numbers:
1.
1.
1.
1.
Move to the second "1." and Visually select three
lines, pressing g CTRL-A results in:
1.
2.
3.
4.
如果您有一个段落 (:help paragraph
),您可以选择它(查看 :help object-select
)。假设段落中的每一行都需要枚举。
{
跳转到当前段落的开头j
跳过空行,向下移动一行<C-v>
模拟 Ctrl-v,打开可视模式}
跳到当前段落的结尾k
跳过空行,向上移动一行选择需要的区域,我们可以进行多行编辑:
I
进入插入模式并将光标置于每行的开头0.
添加在每行的开头<Esc>
将模式改回正常您应该得到带有零的列表。如果你已经有这样的,你可以省略这部分。
vip
选择内部段落(列表以“0”开头)g<C-a>
有魔力我发现用零枚举更容易,而不是像文档中所说的那样省略列表的第一行进行枚举。
注意:我个人没有映射。更容易记住 g <C-a>
的作用并直接使用它。上面的答案描述了纯 <C-a>
的用法,它需要您手动计算任何内容,另一方面,g <C-a>
可以使用给定值(又名步骤)递增数字并使其成为“内部计数器”。
答案 2 :(得分:0)
要将枚举应用于所有行:
:let i=1 | g/^/s//\=i.'. '/ | let i=i+1
仅枚举选定的行:
:let i=1 | '<,'>g/^/s//\=i.'. '/ | let i=i+1
答案 3 :(得分:0)
为@DmitrySandalov解决方案创建地图:
vnoremap <silent> <Leader>n :<C-U>let i=1 \| '<,'>g/^/s//\=i.'. '/ \| let i=i+1 \| nohl<CR>