我使用VIM玩500个单独的文件,使其中一个值独一无二。我不会粘贴它,因为它是一个完全的kludge:)
制作一个元素后,我有一个单独的文件,其中有500条记录用空行隔开。
记录一个宏来标记第1行,然后找到空白并标记前一行,然后将该块写入@b加1的文件。
因为在编写文件的过程中我无法解决如何增加@a的问题,所以我将其粘贴增量然后再将其拉回@a。
"ap0:let @a="""^MAywdd
这一切都很好,除了每7个数字,increment命令跳过三个而不是XML0001.xml到XML0500.XML我得到XML001.xml到XML0763.xml或其附近。
为什么每8次调用跳过3个数字?
我只是好奇,因为只要文件名是唯一的,它们的编号并不重要,但我最终需要使输出名称与@b的值相匹配应该是。
EDIT 猜测它与0到9个寄存器失去轨道有什么关系?
有没有办法在插入模式下增加@a,比如
:'a,'b w XML"Increment @A".xml
答案 0 :(得分:4)
由于您的数字以0
为前缀,Vim认为它们是八进制,所以增量(我猜是<C-a>
)从07
跳转到10
。要解决这个问题,您可以删除(今天相当模糊)数字格式:
:set nrformats-=octal
如果您的注册只包含该号码,您可以这样做:
:let @a = @a + 1
(注意:+=
不起作用,因为寄存器是字符串类型。)
如果您的注册表包含完整的文件名,则必须使用:help sub-replace-expression
来匹配第一个数字并将其递增:
:let @a = substitute(@a, '\d\+', '\=submatch(0) + 1', '')
我的EditSimilar plugin提供了一个命令,用于搜索不存在的偏移量,并将(部分缓冲区)写入其中:
:file XML0000.xml " Name the original buffer
:9999WritePlus " Writes XML0001.xml, XML0002.xml, etc.