vim 打開文件默認回到上次編輯的地方

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

再次打開文件,就能回到上次文本編輯的地方了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章