彻底解决vim打开文件时不会跳转到上次光标所在处

背景

  • 这个说大不大说小不小的问题无论是在Mac上还是Linux上都已经在最近困扰过我好久了,印象中几年前曾经解决过一次, 最近又故态重发,刚好今天闲来无事Google一下,解决解决这个问题。

环境

  • OS Linuxmint19.2
  • Vim 8.0

参考

第一步

  • 第一步呢,要先找到vim系统级的配置文件在哪里,因为要取消里面的几行关于打开文件跳转到上次光标所在处的代码注释,代码如下:
" 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

上面的我已经把注释取消了,现在问题来了,这个系统级的vim配置在哪里呢,我们可以打开终端执行一下vim --version, 然后会看到输出里面有下面几行字:

   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
  fall-back for $VIM: "/usr/share/vim"

可是当你echo $VIM的时候却没有任何输出,这时候我只能说find大法好了, 我们执行下面的命令:

$ sudo find / -name vimrc
[sudo] password for sharp:
find: ‘/proc/1501/task/1501/net’: Invalid argument
find: ‘/proc/1501/net’: Invalid argument
/usr/share/vim/vimrc
/home/sharp/.vim/bundle/Vundle.vim/test/vimrc
find: ‘/mnt/hgfs/D/System Volume Information’: Permission denied
find: ‘/run/user/1000/doc’: Permission denied
find: ‘/run/user/1000/gvfs’: Permission denied
/etc/vim/vimrc

很显然最后一行的路径是我们要找的系统级VIM配置文件,赶紧打开后取消上面提到的代码的注释吧。

第二步

  • 做到这里,想必读者你以为已经做完了一切的工作,跃跃欲试的找个文件用vim打开两次看看第二次打开的时候光标有没有调到第一次退出的地方, 很抱歉,对于笔者这里的情况来说,光标并没有跳转到我想要的位置,那问题出在哪里呢? 其实是不知道什么原因,家目录下的有一个叫.viminfo的文件的属组被改为root:root了,如下所示:
-rw-------  1 root  root  3.2K Oct 27 22:33 .viminfo

这里呢,你只需要把它重新改为你自己的用户名就行了,比如我的是下面这个:

sudo chown sharp:sharp ~/.viminfo

做完这一步恭喜你,你再随便找个文件打开两次,第二次打开的时候光标一定在你第一次退出的地方了。

写在最后

有人知道为什么.viminfo的属组会被改成root:root了么,以及为什么把属组改正确后一切就正常了呢,还有以后怎么规避这个问题呢? 如果有大佬知道欢迎在评论区留言哦~