vim 7.4保存替换模式和替换

时间:2017-04-14 14:03:54

标签: 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

使用此功能,搜索模式@/将被保存并恢复,因此我可以继续搜索(n)我之前的模式。但如果我正在搜索和替换中,使用&,它现在可以正确搜索,但替换为空字符串。

我读到vim 8有一个:keeppatterns选项可能对我有帮助(我还没有检查)但是我暂时还没有使用vim 7.4。

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

1 个答案:

答案 0 :(得分:1)

正如您所提到的:s是一个命令而非搜索,因此如果您想要检索它,您只需要访问命令历史记录: up

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

如果您仍想使用“列命令”,:@:在函数运行后仍然有效。

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