Wednesday, January 6, 2010

Re: How to map two commands on one key?

On 2010-01-06, frank wang wrote:
> Hi,
>
> I am trying to map two commands on one key such as:
>
> nmap <C-\>g :call add(SrcExpl_markList, [expand("%:p"), line("."),
> col(".")]) :cs find s <cword>
>
> The command will push the current position to the SrcExpl_markList and
> execute the cscope command cs find s <cword>. However, every time when
> I type the key <C-\>g,
> the command will be shown on the command line as
> :call add(SrcExpl_markList, [expand("%:p"), line("."), col(".")]) :cs
> find s <cword>
>
> After I hit the enter, vim will complain E488: Trailing characters and
> it will not jumt to the definition of <cword>. It seems the first part
> of command call add(SrcExpl_markList, [expand("%:p"), line("."),
> col(".")]) was executed correctly.
>
> Does anyone know what I did wrong?

The command separator is a bar (|). See

:help :bar

Your mapping would then be:

nmap <C-\>g :call add(SrcExpl_markList, [expand("%:p"), line("."), col(".")])\|cs find s <cword><CR>

You can also use "<Bar>" in place of "|" or "\|" in some contexts,
but I've never sure which and I didn't try it here.

I added <CR> so that you won't have to hit Enter after hitting the
mapped key.

Regards,
Gary

No comments: