2010/10/2 ZyX <zyx....@gmail.com>: > > To execute something just before vim exists, you can use `VimLeave` > autocommand, [...] > About capturing vim's > pid: use ``let g:vimpid=system('echo -n $PPID')+0''
Thanks again for your help. I got it working, but I had a new idea: I added a dialog call to ask about if existing attached screen must be killed or preserved. If dialog is installed (if not it unconditionally kills screen) and user select to not kill it, then screen session is preserved but, of course, vim exits anyway. This is not a big problem, but it will become perfect if we could abort to exiting vim in this case. But I think this time will not be possible because of the autocmd nature. Am I wrong? PD: Current related ~/.vimrc is that comes below: -8<------------------------------------------------------ " F12 -> Attached Screen session: {{{ " ============================== " Build mapping: {{{ " cd $(dirname %:p) --> Change to current file's directory. " screen " -U -> Run in UTF-8 mode. " -d -> Deatach if previously attached. " -dRR vim_$(basename %:p) " -> Use current buffer file name as sessionname; then reattach it and, if necessary, detach or create it first. Use the first session if more than one session with same name are available. " -p %:p -> Use current buffer file full path as preselected (if available) window. " * TODO: Create this window by default when not exists. " -c ~/.vim/screenrc " -> Use modified screenrc config file (see below). noremap <f12> :silent<space>!bash<space>-c<space>'cd<space>$(dirname<space>%:p);screen<space>-UdRR<space>vim_${PPID}<space>-p<space>"%"<space>-c<space>~/.vim/screenrc'<enter>:redraw!<enter> " }}} " Make screen session to be killed on exit and also prompting if dialog is installed: {{{ " ---------------------------------------------------------------------------------- autocmd VimLeave * !screen -ls vim_${PPID} | grep vim_${PPID} && dialog --yesno "Leave existing screen sessions alive?" 6 40 || kill $(screen -ls vim_${PPID} | perl -ne 's/^.*?(\d{2,}).*$/\1/&&print') && clear " }}} " Prepare vim's screen configuration: {{{ " ---------------------------------- " Create ~/.vim directory if not already exists. silent !mkdir -p ~/.vim " Create/overwrite with user's ~/.screenrc if exists. silent !cat ~/.screenrc > ~/.vim/screenrc 2>/dev/null " Bind F12 to 'detach' command in screen. silent !echo 'bindkey -k F2 detach' >> ~/.vim/screenrc " Change default screen's escape key to CTRL-Q to avoid conflict if vim itself is running in other screen session. silent !echo 'escape ^qa' >> ~/.vim/screenrc " }}} " }}} -8<------------------------------------------------------ -- Joan Miquel Torres__________________________________ Linux Registered User #164872 http://www.mallorcaweb.net/joanmiquel BULMA: http://bulma.net http://breu.bulma.net/?l2301 -- You received this message from the "vim_use" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php