ChatGPT解决这个技术问题 Extra ChatGPT

在 vim 中,我如何回到搜索前的位置?

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

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

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


A
Agnel Kurian

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

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


似乎按下 CTRL+O 足够多次也将开始带您返回以前打开的文件。
Ctrl+O 也是我的首选方法。我经常使用它,并希望其他编辑复制它的行为。
是的,CTRL-O 和 CTRL-我似乎带你在你去过的地方来回走动,很好。
如果您使用标签到达那里,Ctrl+T 只会带您返回。如果您在不使用标签的情况下搜索它 Ctrl+T 将带您回到搜索最后一个标签之前的位置
我发现如果我跳过 :70 然后 :100,按 ctrl+o 一次会回到原来的位置,not 第 70 行。:(
C
Christian Stewart

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


仅在您进行第一场比赛时才有效,n-ing 到后续比赛意味着您不会跳回开始的位置。
如果您搜索并进行更改怎么办?
您也可以使用 g;g,,它转到上一个/下一个更改的位置。
M
Mark Stewart

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

在命令模式下,按 m[字母]。例如,ma 使用 a 作为标记标识符在当前行设置标记。要返回标记,请按“[字母]。例如,'a 带您回到步骤 1 中设置的行标记。要返回标记行的行的列位置,请使用 `a(反引号 [字母])。

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

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

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

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

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


幸运的是,通常不需要标记,因为 vim 会特别跟踪某些位置,并允许您使用 ``、^O 等访问它们。
标记似乎只将我带到设置它的行的开头。 ):
@HermannIngjaldsson 您现在可能已经弄清楚了,但是使用 ' 会将您带到标记线, ` 会将您带到确切的位置。
A
André

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


我最喜欢这个答案, :help 中有很多信息是大多数人不知道的(直到最近我才知道)
多么棒的阅读!这非常有帮助。 循环浏览您最近去过的地方。默认情况下跨缓冲区工作:)
n
none

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


E
Ethan Zhang

我用这个:

nnoremap / ms/
nnoremap ? ms?

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


这里唯一需要注意的是,它会中断在诸如 NerdTree 之类的窗口中的搜索,其中 m 被定义为标记以外的东西,在 NerdTree 的情况下它是菜单。
P
Paul Tomblin

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


当我搜索 vim 技巧时见到你真是一种享受。我一直在使用 ctrl-o 和 ctrl-i ,因为它更容易和更自动地来回移动。