vim 是一个非常好的文本编辑工具,一般我用来写 Python 代码的配置如下:
set nu
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
set autoindent
au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
最后一行的作用就是当你编辑之前打开过的文件的时候,光标会默认回到上一次编辑的地方。
如上配置都写在 /home/hunter/ 目录下的 .vimrc,其中,hunter 为你的登录用户名。
但是,后来我新安装了个 Ubuntu系统,按照如上配置之后,再次使用 vim 编辑文件的时候,光标却总是移到第一行。
为什么上述代码不起作用了呢?
首先我们来搞清楚一下当 vim 工作的时候它的流程是什么?
当我们使用 vim 打开一个文件,它会 读取 /home/user/.viminfo 这个文件,获取我们上次打开的文件退出的相关信息,比如停留的行数。
然后,我们再去看一下 /home/user/.viminfo 这个文件, 使用命令:
ls -l
查看,发现权限都是 root 用户的,也就是说,当我们直接使用 vim test.py 这个操作的时候,使用的是 hunter 这个用户,然后导致上一次关闭文件的信息读取失败,所以也就造成了光标不能回到上次编辑的地方。
知道问题在哪了,解决就很简单了,把 .viminfo 这个文件更改一下权限就可以了。
sudo chmod 777 .viminfo
再次打开文件,就能回到上次文本编辑的地方了。