276

在 vim 中编程 我经常去搜索一些东西,拉它,然后回到我原来的位置,插入它,修改它。

问题是,在我搜索并找到之后,我需要手动找到回到我所在位置的路。

是否有一种自动方式可以返回到我上次搜索时的位置?

4

7 回答 7

425

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

编辑:另外,`.将带您到您所做的最后一次更改。

于 2008-09-10T12:47:51.957 回答
97

用于``跳回您搜索/跳跃之前所在的确切位置,或''跳回您搜索/跳跃之前所在行的开头。

于 2008-09-17T14:55:51.047 回答
43

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

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

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

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


在一个稍微不相关的注释上,我刚刚发现了另一个关于标记的好东西。

假设您通过执行跳转到标记bmb。Vim 自动将标记'(即单引号)设置为您在跳转到标记b之前所在的那一行。

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

我无意中发现了这一点:marks,该命令显示了所有标记的列表。

于 2008-09-10T12:46:50.493 回答
41

你真的应该阅读:help jumplist它很好地解释了所有这些。

于 2008-09-26T11:46:57.580 回答
33

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

于 2012-10-03T09:56:47.270 回答
8

我用这个:

nnoremap / ms/
nnoremap ? ms?

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

于 2012-05-01T00:45:16.217 回答
7

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

于 2008-09-10T12:47:43.783 回答