如何在Vimrc autocmd中添加或/和修改版本号

如何在Vimrc autocmd中添加或/和修改版本号,vim,autocmd,Vim,Autocmd,我喜欢和维姆一起工作。我在~.vimrc中使用autocmd,如下所示: :fun LastMod() : if line("$") > 20 : let l = 20 : else : let l = line("$") : endif : exe "1," . l . "g/Last modified: /s/Last modified: .*/Last modified: " . : \ strftime("%Y %b %d")

我喜欢和维姆一起工作。我在~.vimrc中使用autocmd,如下所示:

  :fun LastMod()
  :  if line("$") > 20
  :    let l = 20
  :  else
  :    let l = line("$")
  :  endif
  :  exe "1," . l . "g/Last modified: /s/Last modified: .*/Last modified: " .
  :  \ strftime("%Y %b %d")
  :endfun
问题是: 如何添加或/和修改版本号如:

从 版本:v1.345 到 版本:v1.346

在编写shell脚本时,我喜欢自动修改一些行:

#!/bin/bash
# Last modified: <date time>
# Version: v1.23-<n>
#
#/bin/bash
#上次修改:
#版本:v1.23-
#

(也许这更清楚一点)

编辑以匹配您发布的示例:

:%s/\m\%<21l^# Last modified: \zs.*/\=strftime('%Y %b %d')/
:%s/\m\%<21l^# Version: v\d\+\.\d\+-\zs\d\+/\=submatch(0)+1/
:%s/\m\%
我的意思是:在像:#这样的脚本中/bin/bash#上次修改:#版本:v1.23

我认为您想更改shell脚本中的版本。假设您有:

#!/bin/bash
#Last modified: whatever
#Version: v1.234
#other stuff
...
您可以在
.vimrc
中使用这一行:

let @v="gg/Version:/\<cr>2E\<c-a>"
let@v=“gg/Version://\2E”
然后每次打开shell脚本时,按
@v
将使版本号增加1。例如,
1
意味着从
v1.1099
v1.1100


事实上,它创建了一个宏。

不清楚!无论如何,这里是对函数的等效重写:
:%s/\m\%您的缓冲区只有
v1.345
?你能展示一些示例文本吗?可能有更简单的方法,我的意思是:在像:#这样的脚本中/bin/bash#上次修改:#版本:v1.23感谢您成功地解释了宏函数。我试过了,效果很好。但是,难道没有办法让它像“上次修改:”-函数一样自动进行吗?@amaz1ng,你可以在一个宏中进行两次修改。啊,太好了。这也行非常好的正则表达式,喜欢;)