【问题标题】:vim 7.4 saving substitution pattern and replacementvim 7.4 保存替换模式和替换
【发布时间】:2017-04-14 14:03:53
【问题描述】:

我的 .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)我以前的模式。但是,如果我在搜索和替换过程中,使用&amp;,它现在可以正确搜索但替换为空字符串。

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

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

【问题讨论】:

    标签: vim substitution


    【解决方案1】:

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

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

    如果你想仍然使用“列命令”:@: 在函数运行后仍然可以工作。

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

    【讨论】:

    • 有什么办法可以把这条命令恢复为&amp;执行的命令?
    • 替代:&amp; 你可以使用:@: 我测试了它并且应该可以工作(除非它是一个脚本,我不确定你为什么不只使用命令历史)
    • 我会试试的。使用历史对我来说很好,我只是好奇;)
    猜你喜欢
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 2016-11-17
    • 2012-08-14
    • 2017-12-17
    • 2012-03-05
    • 2015-11-13
    相关资源
    最近更新 更多