vim:通过正则表达式复制并粘贴
我希望最终能够编写一个vim宏(我还不知道如何编写),因为我确信我可以在vim中完成这项工作,但我还不知道基本原理 我想从git提交消息中获取分支名称(或者它的一部分——正则表达式的这一部分应该很简单),并用冒号将其粘贴到文件的顶部,希望将光标保留在最后 因此,当我开始时,文件看起来有点像这样:vim:通过正则表达式复制并粘贴,vim,Vim,我希望最终能够编写一个vim宏(我还不知道如何编写),因为我确信我可以在vim中完成这项工作,但我还不知道基本原理 我想从git提交消息中获取分支名称(或者它的一部分——正则表达式的这一部分应该很简单),并用冒号将其粘贴到文件的顶部,希望将光标保留在最后 因此,当我开始时,文件看起来有点像这样: $ <-- cursor here # Please enter the commit message for your changes. Lines starting # with '#' wi
$ <-- cursor here
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch JIRA-1234-some-description-here
# Your branch is up to date with ...
理想情况下,也将我保留在插入模式。假设您正在使用,您可以使用逃犯#head()
获取当前分支名称。您可能可以这样做(放入vimrc
文件):
注意:我还没有测试过这一点。假设您正在使用,您可以使用逃犯#head()
获取当前分支名称。您可能可以这样做(放入vimrc
文件):
注意:我还没有测试过这个功能。您可以使用这个功能:
function! MyFunction()
g/On branch \([A-Z]*-[0-9]*\)/exe "co0 | 1s/.* \\(.*-\\d\\+\\).*/\\1:/g"
normal $
endfunction
然后映射它:
nmap <leader>f :call MyFunction()<cr>
nmap f:callmyfunction()
功能说明:全局命令
g/{pat}/[cmd]
在模式{pat}
匹配的行上执行命令[cmd]
。您已经在问题中提供了{pat}
。然后,要执行多个命令,我建议使用exe
。此处exe
将匹配的行复制到第一行(co0
),并执行替换(1s/../\\1:/g
)。您可以使用此功能:
function! MyFunction()
g/On branch \([A-Z]*-[0-9]*\)/exe "co0 | 1s/.* \\(.*-\\d\\+\\).*/\\1:/g"
normal $
endfunction
然后映射它:
nmap <leader>f :call MyFunction()<cr>
nmap f:callmyfunction()
功能说明:全局命令
g/{pat}/[cmd]
在模式{pat}
匹配的行上执行命令[cmd]
。您已经在问题中提供了{pat}
。然后,要执行多个命令,我建议使用exe
。这里exe
将匹配的行复制到第一行(co0
),并执行替换(1s/../\\1:/g
)。您可能不想在Vim中执行此操作,但可以将与提交消息模板结合使用如果您确实想在Vim中执行此操作,您可能更愿意询问我是否确实执行了此操作,但使用了git挂钩。您可能不希望在Vim中执行此操作,但请将与提交消息模板结合使用如果您确实希望在Vim中执行此操作,您可能更愿意询问我是否确实执行了此操作,但使用git钩子。