vim 7.4保存替换模式和替换

vim 7.4保存替换模式和替换,vim,substitution,Vim,Substitution,我的.vimrc文件中有一个函数,用于删除行末尾的任何空白: " Remove trailing space on write function! <SID>StripTrailingWhitespaces() let _s=@/ let l = line(".") let c = col(".") %s/\s\+$//e let @/=_s call cursor(l, c) endfu “删除写入时的尾随空格 函数!StripTr

我的.vimrc文件中有一个函数,用于删除行末尾的任何空白:

" Remove trailing space on write
function! <SID>StripTrailingWhitespaces()
    let _s=@/
    let l = line(".")
    let c = col(".")
    %s/\s\+$//e
    let @/=_s
    call cursor(l, c)
endfu
“删除写入时的尾随空格
函数!StripTrailingWhitespaces()
让我们=@/
设l=直线(“.”)
设c=col(“.”)
%s/\s\+$//e
让我们
调用游标(l,c)
恩德福

使用此函数,搜索模式<代码> @ /< /COD>被保存并恢复,因此我可以继续搜索(<代码> n>代码>)我以前的模式。但是如果我在搜索和替换的中间,使用<代码>和<代码>,它现在可以正确搜索,但用空字符串替换。

我读到Vim8有一个
:keeppatterns
选项,它可能会对我有所帮助(我还没有检查),但我目前仍然使用Vim7.4


是否可以保存和恢复
:s
命令的“替换”部分?

如您所述:s是命令而不是搜索,因此,如果要检索它,只需访问命令历史记录: :等等

(根据vim help
:keeppatterns{command}
允许在不向搜索模式添加任何内容的情况下执行命令,如果我正确理解您的用例,我不认为这对您有多大帮助)

如果仍要使用“列命令”
:@:
将在函数运行后继续工作


当您使用
&
重新运行时,vim将使用最后一次替换重新运行最后一次搜索。由于搜索历史已在函数中恢复,它将使用上一次搜索,但仍将使用最后一次替换(函数中的一次)进行替换因此导致替换为空字符串。

有没有办法将此命令还原为由
&
执行的命令?除了
:&
之外,您可以使用
:@:
我对其进行了测试,应该可以正常工作(除非是针对脚本,我不确定您为什么不使用命令历史记录)我会试试的。用历史记录作为我的目的很好,我只是好奇;)