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