(Change <tt> to <code>, perhaps also minor tweak.) |
No edit summary |
||
Line 1: | Line 1: | ||
− | {{review}} |
||
{{TipImported |
{{TipImported |
||
|id=613 |
|id=613 |
Revision as of 12:29, 1 May 2014
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
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"