I completely forgot about abbreviations, although the remap that I came up with doesn't work badly at all because it does check the command pos, and I never use any other :sf* command than sfind.
If you could send me a zip of your experimental plugin that would be great, I'd love to give it a go! I'm using vim 7, if that helps. Thanks! Max > -----Original Message----- > From: Hari Krishna Dara [mailto:[EMAIL PROTECTED] > Sent: Wednesday, June 07, 2006 11:16 AM > To: Max Dyckhoff > Cc: Gerald Lai; vim org > Subject: RE: Tab complete filenames > > > On Wed, 7 Jun 2006 at 9:29am, Max Dyckhoff wrote: > > > > You're working on a large project, so I would advise caution when > > doing > > > tab completion. If you happened to be waiting on an accidental (slow) > > > completion like a<Tab>, then hit Ctrl-c to stop it. > > > > Yes, I love how vim is nice and intuitive if Linux stuff is ingrained in > > your every move :) > > > > > > > Nope, no (easy) way. That's just how Vim was implemented. You could > > hack > > > the source code though. > > > > > > If you don't have any other commands besides :Sfind beginning with > > "Sf", > > > you can just do :Sf instead of the full :Sfind. It's an extra Shift > > > keystroke. > > > > That is a shame. Regrettably I have enough coding to do without hacking > > through the source for vim and getting it to compile on Windows; I'm > > sure I could do it in Linux in a couple of minutes but that wouldn't > > help me at work much! Curses. However I have found a rather nice > > solution (see below). > > > > > > > An (untested) alternative I just thought of is to do something like > > this > > > (Vim 7): > > > > > > cnoremap <silent><expr>: > > getcmdpos()==1?toupper(nr2char(getchar())):':' > > > > That is rather great, although it doesn't work with the <silent> tag in > > there. That is, it DOES work, but it is somewhat confusing. Because of > > the <silent> the result of the ":getchar()" will not be displayed in the > > command line, meaning if you enter "::sf" then you will see on the > > command line ":f ". Note the space after the "f". If you now press > > backspace the command line changes to ":S". Removing the <silent> makes > > the remapping of : work perfectly. > > > > However I was playing around and came up with an alternative mapping > > which makes me grin all over. It is a really logical continuation of the > > remapping of : that you provided: > > > > cnoremap <expr>sf getcmdpos()==1?'Sf':'sf' > > > > Brilliant! It works exactly as I want, and if you pause after the "s" > > before typing the "f" (for timeoutlen) then it aborts the remap and > > gives you a lowercase "sf". > > > > Thanks for your help Gerald, I hope this thread helps others in their > > time of need! > > > > Max > > I wasn't tracking the thread initially, but here is my input. Maps are > not the best approach for tasks like this, you should use abbreviations. > With maps, if you type sf anywhere on the commandline, it will become > Sf. You don't want that to happen in a filename right (well, if you are > on windows you might not care most of the time, but there are enough > other cases you should). I suggest you take a look at the cmdalias.vim > plugin that I wrong just for these cases. If you create an alias like > this: > > call CmdAlias('sf', 'Sf') > call CmdAlias('sfind', 'Sfind') > > it creates abbreviations such that they get changed only when they are > typed at the start of the command-line and when they are by themselves > (e.g, :sfix will not become :Sfix). I also added a tip recently which > shows how to use cmdalias.vim: > > http://www.vim.org/tips/tip.php?tip_id=1247 > > I use cmdalias plugin heavily and haven't faced any issues. > > I was also experimenting with a plugin that would lookup filenames as > you type. Except for a bug in Vim completion bothering me, it works > well, and is usable. Instead of using the 'path' setting, it uses tags > created specially for filenames, so it is a lot faster, you can use > regular expressions and you get a dropdown with all the matching > filenames. If you are interested, let me know I will send you a zip. > > -- > HTH, > Hari > > __________________________________________________ > Do You Yahoo!? > Tired of spam? Yahoo! Mail has the best spam protection around > http://mail.yahoo.com
