在vim中,如何回到搜索前的状态?
在vim中编程,我经常去搜索一些东西,把它拽出来,然后回到我所在的地方,插入它,修改它 问题是,在我搜索和查找之后,我需要手动找到返回我所在位置的方法在vim中,如何回到搜索前的状态?,vim,vi,Vim,Vi,在vim中编程,我经常去搜索一些东西,把它拽出来,然后回到我所在的地方,插入它,修改它 问题是,在我搜索和查找之后,我需要手动找到返回我所在位置的方法 有没有一种方法可以自动返回到上次搜索时的位置?我总是通过设置标记来完成 在命令模式下,按m[字母]。例如,ma使用a作为标记标识符在当前行设置标记 要返回标记,请按[字母]。例如,“a”将返回到步骤1中设置的线标记。要返回到标记行所在行的列位置,请使用`a(回勾[letter]) 要查看当前设置的所有标记,请键入:marks 有一点无关,我刚刚
有没有一种方法可以自动返回到上次搜索时的位置?我总是通过设置标记来完成
:marks
有一点无关,我刚刚发现了马克的另一个妙处 假设您通过执行mb跳转到markb。Vim会自动将标记(这是一个单引号)设置为跳转到标记b之前所在的行 这意味着你可以做“b”跳转到那个标记,然后做“”(2个单引号)跳转回到你以前所在的位置
我使用
:marks
命令意外发现了这一点,该命令显示了所有标记的列表。最简单的方法是使用m[letter]
设置一个标记,然后使用“[letter]
Ctrl+O将我带到上一个位置。搜索前不知道位置
编辑:还有,`。将带您返回上次所做的更改。使用
`
跳回搜索/跳转前的确切位置,或者'
跳回搜索/跳转之前所在的行的开头。您确实应该阅读:帮助跳转列表
它很好地解释了所有这些。我使用这个:
nnoremap / ms/
nnoremap ? ms?
然后,如果我使用
/
或?
搜索某个内容,我可以通过`s
快速返回。您可以将字母s
替换为您喜欢的任何字母。CTRL+O和CTRL+I,用于前后跳跃。似乎按住CTRL+O足够多次也会开始让您回顾以前打开的文件。CTRL+O也是我的首选方法。我经常使用它,并希望其他编辑器复制它的行为。是的,CTRL-O和CTRL-I似乎会带你来回走到你去过的地方,很好。只有当你使用标记到达那里时,CTRL+T才会带你回去。如果不使用标记搜索,Ctrl+T将带您回到搜索上一个标记之前的位置。我发现,如果我先跳vía:70
,然后再跳:100
,按一下Ctrl+o
,就会返回到原始位置,而不是第70行:(幸运的是,一个标记通常是不必要的,因为vim会对某些位置进行特殊跟踪,并允许您使用“`、^O等来访问它们。该标记似乎只会将我带到设置该标记的行的开头。):@hermanningjaldson您现在可能已经明白了这一点,但使用“将带您到标记行,“我会带你去确切的地方。当我搜索vim提示时,见到你真是一件乐事。我一直在使用ctrl-o和ctrl-I,因为它更容易、更自动地来回移动。只有在第一次匹配时,查看才起作用,n
-ing到后续匹配意味着您不会跳回开始的位置。如果您搜索并做了更改怎么办?您也可以使用g
和g,
,它会转到上一个/下一个更改的位置。这里唯一需要注意的是,它会中断在诸如NerdTree之类的窗口中的搜索,其中m
被定义为除mark之外的其他内容,在NerdTree的情况下,它是菜单。我最喜欢这个答案的可能重复,《帮助》中有很多大多数人都不知道的信息(直到最近我才知道),这是一本多么棒的书啊!这非常有用。在你最近去过的地方骑自行车。默认情况下跨缓冲区工作:)