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>

Notes
1. Don't use <silent> on cabbrev (doesn't work, documented somewhere).
<silent> on cmap sometimes doesn't work, too.

2. I think you're better off making your
own cd :command not just function.

Yakov

Reply via email to