vim 不记得最后一个位置

Lun*_*oms 110 vim 12.04 vi

我的 Ubuntu LTS 12.04 有 vim 编辑器。如果我打开一个文件,移到一个段落并重新打开 vim,那么光标总是会移动到文件的开头。

这不是预期的行为。关闭文件后,vim 如何记住上次读取位置?

vi也试过,但结果是一样的。

Lun*_*oms 143

该文件/etc/vim/vimrc已包含必要的功能。只需要取消注释:

" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
Run Code Online (Sandbox Code Playgroud)

(其实你也可以参考/usr/share/vim/vim73/vimrc_example.vim

  • 我遇到了一个奇怪的问题,一个用户会记住最后一个位置,但不会记住其他位置。原来这些行在用户的 .vimrc 文件中,但在 /etc/vim/vimrc 中被注释掉了。在那里取消注释它们为所有用户启用它。 (3认同)
  • 编辑系统的配置文件(在 /etc/vim/ 文件夹中)并不是一个好的约定。最好将此行添加到 $HOME 目录中您自己的 .vimrc 配置文件中。如果需要,请参阅我的答案以获取详细信息。 (2认同)
  • 我喜欢添加一个 `zz`,以该点为中心:`exe "normal! g'\"zz"` (2认同)

小智 80

我遇到了同样的问题,结果我的主目录中的 .viminfo 文件拥有错误的所有权。它归 root:root 所有。

一旦我通过将文件所有权更改为自己来修复文件所有权,记住文件位置又开始为我工作

  • @dotslash 使用 `sudo` 很棘手。它不会改变环境(至少大部分情况下):尝试运行 `sudo bash -c 'echo $HOME'`,你会得到你的主目录而不是 root 的目录。 (5认同)
  • 这件事在我的情况下有效。我有同样的问题。我已经更改了修复 vim 问题的 .viminfo(存在于主目录中)的所有权。但是为什么它是用 root:root 创建的? (4认同)

小智 6

我认为这个 wiki 帖子可能会提供一个解决方案。我不相信恢复职位是预期的行为。http://vim.wikia.com/wiki/Restore_cursor_to_file_position_in_previous_editing_session


C.D*_*.D. 6

好的惯例是在$HOME目录中创建您自己的.vimrc文件,并包含此行,这将使 Vim 跳转到先前编辑的文件中的最后一个已知位置。

$HOME/.vimrc中,添加以下行:

" Reopen the last edited position in files
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
Run Code Online (Sandbox Code Playgroud)

无需编辑系统范围的文件 /etc/vim/vimrc。

在 $HOME 目录中创建并使用您自己的 .vimrc 也更有利于可维护性。系统 vimrc 配置文件可以在下次 Vim 应用程序包更新时更新,或者由其他人编辑。当您运行 Vim 时,您自己的主目录中的文件将被保留。

实际上,我建议您研究一下可以使用自己的 .vimrc 文件做的所有伟大事情。我的配置有大量有用的选项,甚至还有一些自定义功能。