On 5/22/06, Eric Arnold <[EMAIL PROTECTED]> wrote:
On 5/21/06, Yakov Lerner <[EMAIL PROTECTED]> wrote: > On 5/22/06, Eric Arnold <[EMAIL PROTECTED]> wrote: > > I've been trying to map "cd" if it's the first two characters on the > > :ex line. I've tried all the combinations I can think of. On > > several of them, I seem to be getting errors as if <expr> is run in > > the sandbox (that dog won't hunt). The only one that works at all is > > the first simple mapping, but that gets painful, of course, when you > > want to use "cd" in a search, etc. > > > > Anybody know any good tricks? > > > > > > silent! cunmap cd > > > > cnoremap <silent> cd call Cd_plus()<CR> > > > > "cnoremap <silent> cd echo getcmdpos()<CR> > > "cnoremap <silent> cd if getcmdpos() < 3 <bar> call Cd_plus() <bar> > > else <bar> call feedkeys('cd','n') <bar> call setcmdpos(1) <bar> end > > <CR> > > "cnoremap <silent> <expr> cd ( getcmdpos() == 1 ? Cd_plus() : 'cd' ) > > "cnoremap <silent> <expr> cd Cd_plus() > > "abbr <silent> <expr> cd Cd_plus() > > "silent! unabbr cd > > The following works for me: > > cnoremap cd <c-R>=getcmdpos()==1?"MYCD ":'cd'<cr>This is nearly it. I'm actually trying to start a script from the mapping.
Can you start a script from a function in rhs ? Like this; cnoremap cd <c-R>=getcmdpos()==1?MyFunc():'cd'<cr> func! MyFunc() ... start script here ... return "" endfun Yakov
