I just moved from RH/Fedora to Ubuntu 12.04. In RedHat, when I reopen a file with VIM, it opens with the cursor on the line it was on when I closed the file. However, what I am seeing now is that when I reopen a file, the cursor is always at the top, every time. As some of the files I am working with are 20k lines long, this gets a bit old quickly.

I installed the full version of VIM via apt-get on my new Ubuntu so that I could use the arrow keys in insert mode. The version that is printed out is VIM - Vi IMproved 7.3.

Any help at all would be gratefully welcomed.

  • 1
    If you want to open more file with the lines these files was opened earlier use :mksession . For further details see the help of :mksession and Managing Sessions – Arpad Horvath Oct 19 '12 at 8:19
  • For those who voted this down as already been answered, I believe mine was asked first. – pennyrave Apr 7 '18 at 4:40

Add the following lines to your ~/.vimrc or global /etc/vim/vimrc

if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif

This will jump to the last known cursor position unless:

  • the position is invalid
  • the position is inside an event handler
  • 3
    It works by creating an autocommand for the BufReadPost event -- i.e. a vim command that is executed every time after vim loads a file from disk. The command checks if the " mark is defined and sensible (the " mark stores the last position in the current file and is saved in the ~/.viminfo file), and if so, tells vim to jump to it. – Marius Gedminas Oct 6 '16 at 6:37
  • Thank! At times (such as :help) I'm getting E32: No file name, any advice? – seth10 Jun 14 '17 at 16:03
  • 2
    I've done this for both ~/.vimrc and /etc/vim/vimrc and even restarted, still always opens at the first line! – Nagev Dec 8 '17 at 10:04
  • 1
    @Nagev check the permission of ~/.viminfo. I changed the owner and group to mine, and it works. – Chan Kim May 2 '19 at 11:11

This is a default configuration in /etc/vim/vimrc as mentioned vim is not remembering last position

Already contains necessary feature. Just need to uncomment it:

" 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

This is an auto command that looks for line numbers of the evaluated expressions. The g command jumps to the last position if it was recorded. Using :help commands for BufReadPost, line() and g` will explain the details of how this works.


Not the answer you're looking for? Browse other questions tagged or ask your own question.