Tip 613 Printable Monobook Previous Next
created 2003 · complexity basic · author Adam Monsen · version 6.0
The starting.txt help file (:help starting.txt) tells you how to open the last edited file in csh. In bash, do it like so:
alias lvim='vim -c "normal '\''0"'
Comments
Edit
With this in vimrc, invoking Vim without arguments will open the last file (it will get the last file and position from .viminfo).
" Go to last file if invoked without arguments.
autocmd VimEnter * nested if
\ argc() == 0 &&
\ bufname("%") == "" &&
\ bufname("2" + 0) != "" |
\ exe "normal! `0" |
\ endif
" From vimrc_example.vim distributed with Vim 7.
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
autocmd BufReadPost *
\ if line("'\"") > 1 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
TO DO
In the above, bufname("2" + 0) is a confused way of saying bufname(2). But what has buffer 2 got to do with it?
These make sure all your tabs are restored (VIM 7.x and higher).
" Open last active file(s) if VIM is invoked without arguments.
autocmd VimLeave * nested let buffernr = bufnr("$") |
\ let buflist = [] |
\ while buffernr > 0 |
\ if buflisted(buffernr) |
\ let buflist += [ bufname(buffernr) ] |
\ endif |
\ let buffernr -= 1 |
\ endwhile |
\ if (!isdirectory($HOME . "/.vim")) |
\ call mkdir($HOME . "/.vim") |
\ endif |
\ call writefile(reverse(buflist), $HOME . "/.vim/buflist.txt")
autocmd VimEnter * nested if argc() == 0 && filereadable($HOME . "/.vim/buflist.txt") |
\ for line in readfile($HOME . "/.vim/buflist.txt") |
\ if filereadable(line) |
\ execute "tabedit " . line |
\ set bufhidden=delete |
\ endif |
\ endfor |
\ tabclose 1 |
\ endif
- Am I missing something? Why can't you just use
:mksession? :help :mksession --Fritzophrenic 02:00, 6 April 2009 (UTC)
You are right. This works better.
" Go to last file(s) if invoked without arguments.
autocmd VimLeave * nested if (!isdirectory($HOME . "/.vim")) |
\ call mkdir($HOME . "/.vim") |
\ endif |
\ execute "mksession! " . $HOME . "/.vim/Session.vim"
autocmd VimEnter * nested if argc() == 0 && filereadable($HOME . "/.vim/Session.vim") |
\ execute "source " . $HOME . "/.vim/Session.vim"