In vim, how do I go back to where I was before a search?
在vim中编程,我经常搜索一些东西,猛拉它,然后回到我原来的位置,插入它,修改它。
问题是,在我搜索并找到之后,我需要手动找到回到原来的位置的方法。
有没有自动返回我上次搜索时所在位置的方法?
ctrl+o将我带到上一个位置。搜索前不知道位置。
编辑:同样,`.将带您进入上次所做的更改。
- 如果按ctrl+o足够多次,也会使您返回以前打开的文件。
- ctrl+o也是我的首选方法。我经常使用它,希望其他编辑能复制它的行为。
- 是的,ctrl-o和ctrl-i似乎把你带到你去过的地方,很好。
- 使用ctags,ctrl+t将带您返回…不知道它与ctrl+o有什么不同。
- ctrl+t只会在你使用标签的情况下带你回去。如果不使用标签进行搜索,则ctrl+t将带您返回上次搜索标签之前所在的位置。
- 我发现如果我跳V&237;A :70,然后按:100,按ctrl+o一次就会回到原来的位置,而不是第70行。:(
- 像ctrl-o一样向后跳,很容易记住..
- @雨果读到:h up-down-motions,其中提到:[range]"与g相比,这个命令不修改跳线表。"
使用``跳回到搜索/跳之前所在的确切位置,或使用''跳回到搜索/跳之前所在的行的开头。
- 只有当你在第一场比赛的时候,你才能发挥作用,n对随后的比赛意味着你不能回到你开始的地方。
- 如果你搜索并做了更改怎么办?
- 您也可以使用g;和g,,它将转到上一个/下一个更改的位置。
我总是通过它来做标记。
在命令模式下,按m[字母]。例如,m a使用a作为标记标识符在当前行设置标记。
要返回标记,请按[字母]。例如,"A将带您返回到步骤1中设置的标记。
要查看当前设置的所有标记,请键入:marks。
在一个稍微不相关的笔记上,我发现了关于马克的另一个妙处。
比方说,你通过"b.vim"自动设置标记(这是一个单引号)来跳转到标记b,在跳转到标记b之前,它是你所处的任何一行。
这意味着你可以做"B跳到那个标记,然后做"(2个单引号)跳回到你以前所在的地方。
我无意中使用了:marks命令发现了这个问题,它显示了所有标记的列表。
- 幸运的是,标记通常是不必要的,因为Vim对某些位置保持特殊的跟踪,并允许您使用``,^o等访问它们。
- 这个标记似乎只把我带到了它所在行的开头。):
- @Hermanningjaldsson你现在可能已经知道了,但是当使用"将带你到标记的行,"将带你到确切的位置。
你真的应该读一下:help jumplist,它很好地解释了这一切。
- 我最喜欢这个答案,其中有很多信息:帮助大多数人不知道的人(我直到最近才知道)。
ctrl+o和ctrl+i,用于前后跳跃。
我用这个:
1 2
| nnoremap / ms/
nnoremap ? ms? |
然后,如果我用/或?搜索某个东西,我可以很快用`s返回。你可以把字母s换成你喜欢的任何字母。
- 这里唯一要注意的是,它中断了在诸如nerdtree这样的窗口中的搜索,在nerdtree的情况下,m被定义为除mark之外的其他内容,在nerdtree的情况下,它是menu。
最简单的方法是用m[letter]设置一个标记,然后用'[letter]返回该标记。
- 当我寻找Vim小贴士的时候见到你是一种享受。我一直在使用ctrl-o和ctrl-i,因为它可以更容易、更自动地来回移动。