问题
在 Linux 下用 Vim 打开文件时,光标总是在第一行,而不是上次退出时的位置。Windows 下的 gVim 默认支持这个功能。
解决方法
将以下代码添加到 ~/.vimrc:
if has("autocmd")
filetype plugin indent on
augroup vimrcEx
au!
autocmd BufReadPost *
\ if line("'\"") > 1 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
augroup END
else
set autoindent
endif
原理
line("'\"")获取上次退出时光标所在行号(Vim 自动在.viminfo中记录)exe "normal! g""跳转到该位置(用g` 跳转,不改变 jumplist)- 判断条件确保行号有效(大于 1 且不超过文件总行数)