【问题标题】:How do you make Vim take you back where you were when you last edited a file? [duplicate]你如何让 Vim 把你带回到你上次编辑文件时的位置? [复制]
【发布时间】:2009-11-06 15:00:44
【问题描述】:

可能重复:
In vim, how do I get a file to open at the same line number I closed it at last time?

如何让Vim 带你回到上次编辑文件时的位置?

我的工作电脑有这个功能,但我的家用电脑没有!你如何让 Vim 记住你上次编辑文件时在文件的哪个部分?

编辑:更准确地说,我希望这种行为在打开新文件时或在启动时

【问题讨论】:

  • 您可以使用 m 在文件中的各个点设置标记并使用 ` 返回到该标记,但这些不会持续存在,例如重新启动应用程序或关闭/打开文件(我不认为)。
  • 有一个名为vim-lastplace 的插件(我是作者)可以智能地返回到您所做的最后一次编辑。

标签: vim editor


【解决方案1】:

我的 .vimrc 中有这个,它可以工作:

" go to the position I was when last editing the file
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g'\"" | endif

【讨论】:

  • 只有这个解决方案对我有用,相信我,我尝试了大多数其他流行的解决方案!谢谢。
  • 所有做这个的插件,他们所有的bug(比如间歇性存储和恢复错误的cwd)都可以被这一行替换吗?好像……哇!我喜欢它,非常感谢!
  • 不:E576: viminfo: Missing '&gt;' in line: au BufReadPost * if line("'\"") &gt; 0 &amp;&amp; line("'\"") &lt;= line("$") | exe "normal g'\"" | endif
【解决方案2】:

这是通过viminfo 文件完成的。只需启用此功能(并确保文件可写)就足够了。我用:

set viminfo='25,\"50,n~/.viminfo

...将 viminfo 数据存储到~/.viminfo。你可以阅读其他customization options here

【讨论】:

  • 我确实有一个 viminfo 文件,里面装满了各种各样的东西。它似乎不起作用。
【解决方案3】:

首先,检查您的 .vimrc 文件是否可写。

如果这还不够,请将其添加到您的 .vimrc:

if has("autocmd")
    autocmd BufReadPost *
    \ if line("\'") > 0 && line("\'") <= line("$") |
        \ exe "normal g`" |
    \ endif
endif

【讨论】:

  • 您能在“代码”中发帖吗?堆栈溢出似乎正在做奇怪的字符替换......
  • 这个解决方案无论如何都行不通。查看我的回复。
  • 这个怎么用?我应该按 g`" 还是在文件打开时起作用?
【解决方案4】:

'0 //(单引号后跟零)带你到上次编辑的地方

【讨论】:

  • 如果您能告诉我如何在每次打开缓冲区时自动执行此操作,您将得到最佳答案:)
  • 把它放在你的 .vimrc 文件的最后一行
【解决方案5】:

这是一个肮脏的解决方案。

当您完成文件编辑并准备退出时,只需使用m&lt;letter&gt; 标记该位置即可。现在您使用mks!为此创建一个会话文件。下次打开此文件时,只需执行 ``` 即可到达该位置。

您可以使用不同的字母到达文件中的不同位置。例如e 表示您上次编辑的位置或 f 您上次处理的函数定义等。这取决于你的口味。

这个解决方案的一个缺点是mks! 将在当前目录中创建一个Session.vim 文件。

【讨论】:

    【解决方案6】:

    另请参阅Restore Cursor to File Position in Previous Editing Session. 上的 Vim Wikia 文章它似乎列出了这里已经列出的几个解决方案,此外还有一个更大的脚本,专门存储您编辑的最后 10 个文件的最后位置;您可以更改该值以满足您的需要。

    【讨论】:

      猜你喜欢
      • 2010-09-11
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多