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会重新运行上次搜索用上次替换。由于搜索历史已在函数中恢复,它将使用以前的搜索,但仍将使用最后一次替换(函数中的那个)应用替换,从而导致替换为空字符串。
我的 .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会重新运行上次搜索用上次替换。由于搜索历史已在函数中恢复,它将使用以前的搜索,但仍将使用最后一次替换(函数中的那个)应用替换,从而导致替换为空字符串。