2010-12-06 105 views
6

如何取回用于搜索或搜索的最后一个字符串&替换?在vim中获取最后的搜索或搜索并替换字符串?

例如,假设我输入:%s/some_text/some_other_text/gc,vim给我返回了E486: Patterns not found: some_text错误消息。然后我意识到我实际上打算写some_magic_text而不是some_text。在那一点上,我怎样才能找回我的原始字符串在底部命令行(或任何它被称为),所以我可以改变它并做第二次搜索?有没有一个漂亮的小命令?

在这个简短的例子中,它看起来没有必要,但是当你想要替换的文本非常长,而且你只是输入了一个错误的字母时,想要重新输入所有内容是非常烦人的。

而且我正在使用MacVim,如果这有什么不同。

回答

0

更一般地说,您可以通过输入前几个字符来调出以前输入的任何命令,然后多次使用箭头在历史中导航。

在你的情况,你可以输入:
:%s<Up>

:help history

6

从正常模式,打q/通过你的搜索历史记录导航!

1

这个答案可能是一个很好的改进,毕竟你是后。

使用突出显示来搜索,以交互方式检查您制作的正则表达式是否正在工作,然后将其用于搜索替换。

  1. :se isincsearch,最好把se is在.vimrc)
  2. /<search term>
  3. 检查与n/N如果你很高兴与比赛
  4. :s%//<replace term>/g

当省略<search term>在搜索替换4.中,l所使用的搜索将被使用。

用于获取最后(搜索 - 替换)命令的列表,使用q:,或者已经注意到q/作为最后的搜索项的列表。

奖励:
当使用:se gds/<search>/<replace>将表现为s/<search>/<replace>/g

然后,只要在每行中访问第一个搜索匹配,就可以通过添加/g来完成,所以基本上这两种行为都只是切换。