--- Benji Fisher <[EMAIL PROTECTED]> wrote: > On Tue, Oct 17, 2006 at 05:43:08AM -0500, Tim Chase wrote: > > In some text, I've got compound words separated by a single > > hyphen. For convenience of yanking, I've added the hyphen to my > > iskeyword setting which works nicely for the most part. However, > > I also use a doubled-hyphen to the effect one would use an > > em-dash which leads to the unwanted situation that a yank of a > > "word" now includes the first word of the subordinate sentence > > structure--such as this where the dashes are doubled--and effects > > my ^N/^P searching (as duplicates appear for entries followed by > > the double-dash). > > > > I'm on the prowl for some way to keep the iskeyword behavior for > > things like "doubled-hyphen" and "em-dash" in the above > > paragraph, but exclude things like "structure--such" and > > "doubled--and", limiting the "word" to things with a dash only if > > that dash is not repeated. Something like "\w-\w" but not > > "\w-\+\w" (assuming that "-" isn't part of iskeyword for this > > example) > > > > Any hints? > > Let's think big and look for a generic solution. IMHO, it is way > too restrictive to insist that a word is anything matching the pattern > /\k\+/ . I want a new option, 'wordpat', with a default value of > '\k\+', that specifies what should be recognized as a word, for purposes > of search patterns, Normal-mode commands such as w and b, and maybe > other uses. (Oh, yes: Insert-mode completion.) > > Examples: > > :let &l:wordpat = '\k\+\(-\k\+\)*' > > allows words-with-hyphens but--as requested--does not match double > hyphens. Change the '*' to '\=' to allow no more than one hyphen per > word. C programmers may like to use '\.' instead of '-'. > > :let &l:wordpat = '\\\=\k\+' > > matches TeX commands like \def and \input and caters to the (lazy but > common) style of omitting optional white space: > $ \alpha\beta\gamma=\alpha+\beta+\gamma $. > > :let &l:wordpat = '\a\l*' > > matches Capitalized words but rejects CamelCase words. > > What do you think? Would this solve enough problems to be worth > the effort? How many vim users would add it to their wish lists?
I have exactly the same problem with '_' and '__' in words, so I would like the feature also, if it is possible. That said, you can use something like the following to get by in the meantime: function! SelectCustomWord() let l:oldISK = &isk let l:oldSearch = @/ set isk+=\- normal! v?\<\|--?e+1 mto`t/\>\|--/s-1 let &isk = l:oldISK let @/ = l:oldSearch nohls endfunction " enable using 'yi-' just like you use 'yiw' onoremap i- :call SelectCustomWord()<CR> vnoremap i- v:call SelectCustomWord()<CR> " a mapping for you to try stuff out map <F5> "ayi-:echo @a<CR> Then you can use 'i-' just like you would use 'iw'. here's some words for you to try it on (press F5 with the cursor over different words): "one-word" two--words first-word--second-word--thirdword! See ':help text-objects' and ':help iw' for more information on how to use 'iw' and your new 'i-' command. regards, Peter ____________________________________________________ Do you Yahoo!? Spring Racing Carnival - Check out Sonia Kruger's blog http://au.sports.yahoo.com/racing/