Thanks a ton Tony. I checked how putty is treating to left and <C-left>. The new settings which is working(for putty and xterm as well) in my case is.
map <C-t> :tabnew if has("gui_running") || (&term == "win32") || (&term == "pcterm") || (&term == "xterm") map <C-left> : tabprev<CR> map <C-right> : tabnext<CR> else map <Esc>[D :tabprev<CR> map <Esc>[C :tabnext<CR> endif It was tough for me but your valuable input made it easy. Regards, Jagpreet -----Original Message----- From: A.J.Mechelynck [mailto:[EMAIL PROTECTED] Sent: Wednesday, October 18, 2006 1:38 PM To: J A G P R E E T Cc: Vim mailing list Subject: Re: Mapping doesn't work in putty. J A G P R E E T wrote: > Hi There, > I have these mappings defined in my .vimrc file. > > map <C-t> :tabnew > map <C-left> :tabp<CR> > map <C-right> :tabn<CR> > > I'm using putty(terminal emulator) to access the unix server. > > The fist mapping works absolutely fine. > The other two doesn't work at all and gives the error(E388: Couldn't find > definition). > Furthermore I checked <C-left> shows the definition for the variable under > cursor. > No clues why its not overridden from my mapping. > > When I changed map <C-left> : tabp<CR> to > Map <F2> : tabp<CR> > It works. > > Another point is the mapping(<C-left>, <C-right>) works if I use Exceed or > x-Manager. > I have no clue at all why its not working in putty. > As far as I know for mapping at least; graphics support is not a must. > > Whats missing for this mapping in putty. > > Regards, > Jagpreet > > > > This is the kind of error that could be the result of a bad or incomplete termcap/terminfo entry. In console Vim, you can see what codes any key or keychord sends to Vim by hitting it in Insert mode, prefixed by Ctrl-V (or by ctrl-Q if your Ctrl-V is the "paste" key). In gvim the same procedure (on a non-printable key or keychord) gives you the <> notation for what gvim "thinks" you have pressed. By the above method you can check, for instance, if Vim can tell the difference between Left and Ctrl-Left, Right and Ctrl-Right. (When I run Vim in GUI mode, it can; when I run the same executable in console mode, either in a konsole "xterm" or in /dev/tty with no access to X-windows, it cannot). If it cannot tell the difference, then you must use something else for the {lhs} of your mappings -- <S-Left> and <S-Right> are likely candidates. If Vim can tell the difference, it still mightn't know that what you've hit is Ctrl-Left. In that case, one method (there are others) is to use the raw keycode sequence as the {lhs} of the mapping. You may have to bracket the mapping definition by a test on &term since different terminals give different keycodes. Example (in the vimrc): if has("gui_running") || (&term == "win32") || (&term == "pcterm") " we're either on our way to a GUI session " or on a terminal where <C-Left> etc. are defined correctly map <C-Left> :tabprev<CR> map <C-Right> :tabnext<CR> elseif &term =~ '^xterm' " local xterm console " <Left> and <Ctrl-Left> are the same " map Backslash-Left instead map <Bslash><Esc>OD :tabprev<CR> map <Bslash><Esc>OC :tabprev<CR> elseif &term == "linux" " non-X text console " here too, map Backslash-Left map <Bslash><Esc>[D :tabprev<CR> map <Bslash><Esc>[C :tabnext<CR> elseif &term == "putty" " putty connection " ... etc. ... else " unknown type of console terminal " assume that <Left> is OK but <C-Left> isn't map <Bslash><Left> :tabprev<CR> map <Bslash><Right> :tabnext<CR> endif Note: The expression (&term == "putty") is a guess on my part. You may have to use something else depending on what Vim sees as the terminal type when in a putty session. Best regards, Tony