在vim中,如何在搜索之前回到原来的位置?

Edw*_*uay 255 vi vim

在vim中编程我经常去寻找东西,猛拉它,然后回到我原来的位置,插入它,修改它.

问题是,在我搜索并找到之后,我需要手动找到回到原来的路.

有没有一种自动方式可以回到我上次搜索时的状态?

Agn*_*ian 387

Ctrl+ O带我到以前的位置.在搜索之前不知道位置.

编辑:此外,`.还会带您进行最后一次更改.

  • 是的,CTRL-O和CTRL-I似乎带你去往你去过的地方,很好. (44认同)
  • 如果你使用标签,Ctrl + T只会让你回来.如果您在不使用标签的情况下搜索它,Ctrl + T会将您带回到您搜索最后一个*标记之前的位置* (8认同)
  • 按 CTRL+O 足够多次似乎也会开始带您返回之前打开的文件。 (2认同)

Max*_*tor 91

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

  • 只有在第一场比赛中才能看到工作,对于后续比赛,这意味着你不会跳回到你开始的地方. (4认同)
  • 您也可以使用`g;`和`g,`,它会转到上一个/下一个更改的位置。 (2认同)

Mar*_*iek 38

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

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

  2. 要回到标记,按'[letter].例如,'a将您带回到步骤1中设置的标记.

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


在略微不相关的说明中,我刚刚发现了另一个关于标记的好东西.

假设你跳过标记b做'b.在跳转到标记b之前,Vim会自动将标记'(这是单引号)设置为您所在的任何一条线.

这意味着你可以'b跳到那个标记,然后做'(2个单引号)跳回你以前的那个.

我意外地使用:marks命令发现了这一点,它显示了所有标记的列表.

  • 幸运的是,标记通常是不必要的,因为vim保留了某些位置的特殊轨迹,并允许您使用``,^ O等访问它们. (6认同)
  • @HermannIngjaldsson 您现在可能已经弄清楚了这一点,但是使用 ' 会将您带到标记行,` 将带您到确切的位置。 (2认同)

And*_*dré 36

你真的应该阅读:help jumplist它解释所有这一切.


小智 29

CTRL+O并且CTRL+I,为了前后跳跃.


Pau*_*lin 7

最简单的方法是设置一个标记m[letter],然后返回到它'[letter]


Eth*_*ang 7

我用这个:

nnoremap / ms/
nnoremap ? ms?
Run Code Online (Sandbox Code Playgroud)

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