通常,我编辑文件-认为我的工作已经完成-然后关闭文件并继续进行下一个操作。但是后来我意识到我需要回到该代码并对其进行一些微调。 />现在,我正在尝试寻找一种方法来使用vim的标记跳转到我最近访问过但未更改的文件中的位置。不要指望回来,所以我不用设置标记,而需要使用vim自动生成的标记。


.上次退出当前缓冲区时的光标位置。默认为第一行
的第一个字符。参见| last-position-jump |有关如何对每个打开的文件使用此

每个缓冲区仅记住一个位置,而对于每个窗口则不记住一个
。只要缓冲区在窗口中可见,就不会更改位置。
{Vi无此功能}。


如果我


关闭所有显示缓冲区的窗口(但是缓冲区列表中仍然存在该缓冲区)。或:
杀死缓冲区的所有实例

标记似乎没有更新,如何使用标记跳转到缓冲区/文件中最后一个光标位置的位置?

评论

我认为您正在寻找Ctrl + o和Ctrl + i ...:h跳跃运动以获取更多信息

@spasic多数民众赞成在一个不错的建议,但是一旦您进行了几十次跳跃,该位置就会在庞大的跳跃列表中丢失。通过将标记范围划分为缓冲区,您可以管理标记/位置的列表更小

如果您还没有阅读它,我认为此技巧将很有趣。也许您需要调整您的viminfo

@statox谢谢。我看到了,vim帮助中的提示。我认为这些解决方案会在您打开文件时导致自动跳转到“”标记。我真的只想手动跳转到最后一个光标位置。而且,我只是无法理解“”标记何时设置并更新,因此我的标记无法使用。

#1 楼

这是一个经典的解决方案:使用

`H


跳转到最后一个HTML文件,依此类推...等等。

评论


谢谢,这似乎真的很有用。我已经将它加载到我的vimrc中进行尝试。我已将autocmd更改为WinLeave,因为我注意到当关闭拆分时BufLeave似乎没有触发,并且缓冲区在其他位置仍处于打开状态。我知道这有点极端,但是WinLeave似乎可以在更广泛的“文件关闭”类型情况下工作,但是我仍在测试...

–the_velour_fog
16 Jun 10'在12:32



#2 楼

我写了这个似乎可行的vimscript语句。当您


移动到另一个窗口时触发
,当您关闭显示缓冲区的最后一个窗口时,
当您用BufLeave关闭缓冲区本身时
/>


bd-默认情况下,autocmd的:normal部分似乎是一个ex命令。因此,要告诉vim运行普通模式命令,您需要添加command


:normal-设置标记ml(助记符:最后一个)

用法

,只需从上一次进入缓冲区中就可以调用光标位置,只需点击

br />

#3 楼

如果您希望光标恢复viminfo已知的最后一个位置,可以使用

我已经使用了很多(因为我是一名Web开发人员):

/>
autocmd BufReadPost * call setpos(".", getpos("'\""))