Loading ...
Sorry, an error occurred while loading the content.

Re: ignoring mutiple white space in search

Expand Messages
  • Jacek Kopecky
    Gary, thanks for the alternative approaches. I see them as alternative ways to implement a feature, rather than as the feature already being there. For me it
    Message 1 of 3 , Jan 22, 2010
    • 0 Attachment
      Gary, thanks for the alternative approaches.

      I see them as alternative ways to implement a feature, rather than as
      the feature already being there. For me it was much easier to look at
      the C code and add the feature (as dirtily as I did), than use the Vim
      macro scripting language; in fact, I can't quite connect the two things
      you wrote to be able to influence the behavior of / and ?.

      I guess I have a question now, for the Vim developers in general: would
      you say this would be a useful feature in Vim?

      If so, I don't care how it gets done, as long as I can set some option
      and get the described search behavior. If my patch is useful, I'll be
      happy; and also if I can do some other contribution (documentation?) or
      clean-up.

      If not, I'll just maintain my own patch. I find it very useful when
      editing text with something like textwidth=80, getting the line breaks
      in the text automatically but wanting to ignore them in most searches. I
      edit HTML and LaTeX this way.

      Best regards,
      Jacek



      On Thu, 2010-01-21 at 21:37 -0800, Gary Johnson wrote:
      > On 2010-01-22, Jacek Kopecky wrote:
      > > Hi,
      > >
      > > for some time now I've wanted to be able easily to search in text files
      > > without caring about whitespace much:
      > > when I look for "foo bar" it should match "foo bar" as well as "foo
      > > bar" (with the new line there).
      > >
      > > Basically, I'd like an option that transforms a space in search into
      > > "\_s+".
      > >
      > > Attached is an svn diff of a quick and dirty hack that introduces the
      > > option 'magicspace' to do the above. I won't pretend I understand the
      > > machinery of regexp.c, but it seems to work for me.
      > >
      > > I'll be happy to learn if there's already a way to do it. Otherwise, I'd
      > > suggest that this might be a useful feature, and I'm willing to add
      > > documentation if pointed to where to do so; but I'd appreciate help with
      > > cleaning up the code if necessary.
      >
      > There are a couple of ways to do this already in vim. As one
      > example, I have created a visual-mode mapping for g* that replaces
      > every occurrence of white space in the selected text with "\_s\+"
      > before executing the search.
      >
      > vnoremap <silent> g* :<C-U>
      > \let old_reg=getreg('"')<bar>
      > \let old_regmode=getregtype('"')<cr>
      > \gvy/<C-R><C-R>=substitute(
      > \escape(@", '\\/.*$^~[]'), '\_s\+', '\\_s\\+', 'g')<cr><cr>
      > \:call setreg('"', old_reg, old_regmode)<cr>
      >
      > As another example, take a look at the mappings of / in
      > $VIMRUNTIME/macros/less.vim. These interrupt the execution of the /
      > command to change the behavior of the search. The same technique
      > could be used to modify the pattern before continuing the search.
      > You could control the behavior of / and ? by setting the value of a
      > b:magicspace variable.
      >
      > Regards,
      > Gary
      >
      >

      --
      You received this message from the "vim_dev" maillist.
      For more information, visit http://www.vim.org/maillist.php
    Your message has been successfully submitted and would be delivered to recipients shortly.