" Only do this part when compiled with support for autocommands
if has("autocmd")
augroup redhat
autocmd!
" When editing a file, always jump to the last cursor position
autocmd BufReadPost *
\ if line("'\"") > 0 && line ("'\"") <= line("$") |
\ exe "normal! g'\"" |
\ endif
augroup END
endif
9条答案
按热度按时间kcwpcxri1#
取自http://amix.dk/vim/vimrc.html
tkqqtvp12#
“开箱即用”的
.vimrc
通过以下语句实现了这一点:你可能只需要在你的
.vimrc
中恢复这个语句。在任何情况下,请参见vimrc_example.vim
和Vim手册中的line()
函数,以了解它是如何工作的。djp7away3#
Vim会自动保存最后一次编辑的位置,并以“特殊”跳转标记
.
的形式提供。其他特殊标记包括"
(保存的起始位置)和'
(跳转的起始位置)。您可以通过键入
'<mark>
跳转到一个标记,因此'.
会将您带到上次编辑的位置,''
会将您带回到原来的位置,而'"
会将您带到保存文件的位置。关于Vim标记的更多信息,请访问Vim.Wikia。
3bygqnnd4#
有一个插件(我是作者)称为vim-lastplace,它会智能地返回到您所做的最后一次编辑。
它也有一个配置选项可以忽略某些文件类型,默认情况下它会忽略git,svn和mercurial的提交信息,对于这些文件类型,它会从第一行开始移动光标,上面的代码片段会跳转到提交信息文件的中间位置(上次提交时离开的位置),尽管这可能不是你想要的. vim-lastplace修复了这个问题.
nafvub8i5#
更新版本的currently accepted answer:
nle07wnf6#
确保
~/.viminfo
对于运行vim的用户是可读和可写的。不知何故,我在标准用户home目录中得到了一个只有root用户可读的副本,这意味着最后一个光标位置不能被存储。xqkwcwgp7#
I'm adding more complete example to @Mariano answer https://stackoverflow.com/a/14449484/108654 with some additional checks
oxf4rvwz8#
对于正在寻找纯Lua版本的Neovim用户:
nhaq1z219#
你可以试试
:mks
命令(make session),它存储了一个脚本文件,当通过vim运行时,它会恢复你当前的编辑会话,包括所有打开的文件和光标位置。