我的.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
命令的一部分?
答案 0 :(得分:1)
正如您所提到的:s是一个命令而非搜索,因此如果您想要检索它,您只需要访问命令历史记录: :和 up
(根据vim help :keeppatterns {command}
允许执行命令而不向搜索模式添加任何内容,如果我理解正确使用案例,我认为这对你没有多大帮助)
如果您仍想使用“列命令”,:@:
在函数运行后仍然有效。
当您使用&
重新运行时,vim将使用最后一个替换重新运行上一次搜索。由于搜索历史已在函数中恢复,因此它将使用先前的搜索,但仍将替换与最后一个替换(函数中的替换),从而导致替换为空字符串。