在vim中,如何返回搜索之前的状态?


Answers:


393

Ctrl+ O带我到上一个位置。搜索之前不知道位置。

编辑:此外,`.还将带您进行上一次更改。


看来,按CTRL + O足够次数也将使您返回以前打开的文件。
Mark Biek

1
Ctrl + O也是我的首选方法。我经常使用它,并希望其他编辑复制它的行为。
08年

45
是的,CTRL-O和CTRL-我似乎带你来回去过的地方,很好。
Edward Tanguay

8
如果您使用标签到达那里,Ctrl + T只会将您带回去。如果您在不使用标签的情况下进行搜索,则Ctrl + T会将您带回到搜索上一个标签
Nathan Fellman

1
我发现如果我跳vía :70,然后:100ctrl+o一次返回到原​​始位置,而不是 70行。:(
WhyNotHugo 2015年

91

使用``跳回你在你之前搜索的确切位置/跳下,或''跳回到你原来你之前搜索上线的开始/跳下。


4
仅在您参加第一个比赛时,它才会起作用;- n在随后的比赛中-表示您不会跳回到开始的地方。
克里斯(Kris)2014年

如果您搜索并进行了更改怎么办?
2015年

1
您也可以使用g;g,,它将转到上一个/下一个更改的位置。
goetzc

39

我总是通过设置标记来完成的。

  1. 在命令方式下,按m[字母]。例如,ma使用a作为标记标识符在当前行设置标记。

  2. 要返回标记,请按'[字母]。例如,'a将您带回到步骤1中设置的行标记。要返回到标记该行的行的列位置,请使用`aback-tick [letter])。

要查看当前设置的所有标记,请键入:marks


在一点不相关的音符上,我发现了关于商标的另一件漂亮的东西。

假设您通过这样做跳到标记bmb。Vim会自动将标记'(单引号)设置为您在跳转到标记b之前所在的行。

这意味着您可以'b跳至该标记,然后执行''(2个单引号)以跳回到之前的位置。

我偶然发现使用:marks命令显示所有标记的列表。


6
幸运的标志往往是不必要的,因为Vim保存着一些位置特殊的赛道,让您对它们的访问与``,^ O等
aehlke

商标似乎只会把我带到设定商标的那一行的开头。):
Fzs2 2015年

1
@HermannIngjaldsson您可能现在已经弄清楚了,但是使用'将您带到标记的行,而`将您带到确切的位置。
azmr

38

您确实应该阅读:help jumplist它,很好地解释了所有这些。


我最喜欢这个答案,:help中有很多信息,大多数人都不知道(我直到最近才知道)
Christian Stewart

1
真是太好了!这超级有帮助。<Co>和<Ci>循环浏览您最近去过的地方。默认情况下跨缓冲区
Costa

29

CTRL+OCTRL+I,用于向前和向后跳跃。


7

最简单的方法是使用设置标记m[letter],然后使用返回'[letter]


当我搜索vim提示时,很高兴见到您。我与ctrl-i一起使用了ctrl-o,因为它可以更轻松,更自动地来回移动。
MattK 2011年

7

我用这个:

nnoremap / ms/
nnoremap ? ms?

然后,如果我使用/或搜索内容?,则可以快速返回`s。您可以将字母替换为s您喜欢的任何字母。


唯一需要注意的是,它会中断在诸如NerdTree之类的窗口中的搜索,该窗口m被定义为除标记之外的其他内容,对于NerdTree,则为菜单。
克里斯(Kris)2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.