vim 7.4 保存替换模式和替换

vim 7.4 saving substitution pattern and replacement

我的 .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 .

是否可以保存和恢复 :s 命令的 'replacement' 部分?

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

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

如果你想继续使用 "column command" :@: 功能 运行 后仍然有效。

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